Author: gpimenta

Gabriella’s Status Report for 12/7

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week I began working on testing. I did many trials to test the outfit generation speed, as well as functionality of all the features I worked on. I also met up with my team to do some integration testing of the entire system.

I added the disliking outfit feature that was suggested during our interim demo. Here is a picture of the new dislike button. This button stores the information of the outfit and saves the outfit to a table called outfit dislikes in the database. This table saves the ids for both the top and bottom of the outfit (or just the top if the outfit is a dress) as well as the number of times the outfit has been disliked. The number of dislikes that each outfit gets, as well as user preferences are both incorporated into the outfits that are generated for users.

I also added a delete button in our item editing drop down in the closet page. I thought it would help to make our application more robust, if users choose to get rid of certain items or if they mistakenly added a bad image and wanted to take a new one. This deletes the item from the database and s3.

I added a privacy notice table in the database as well as a privacy notice on the front end. The table keeps track of whether the user has accepted the notice or not. The privacy notice will appear in the app until users accept it. If the user tries to submit without accepting it an error will appear, so that users cannot use the app without acknowledging the notice.

I also began working on the poster assignment. I added the Product Pitch sections, and added some images of the application using the mockupphone website to make the screenshots look more professional.

For the final report, I wrote my first draft of pseudocode for the outfit generation algorithm. I want to make this as clear as possible, so I will be updating the pseudocode more next week based on feedback.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

My progress is on schedule.

What deliverables do you hope to complete in the next week?

This next week, I hope to finish the final report, poster, and video. I also want to make some final updates to the application, like creating a better error message for when the user does not have enough clothing to create an outfit for their request, and fixing the outfit dropdown in the closet to have the correct current number of uses instead of always having 0.

Gabriella’s Status Report for 11/30

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

I made many changes to the project this past week.

First, I set up the functionality for getting images from S3. I started by creating an AWS role with permissions for accessing the private S3 bucket with sensitive user data (images of clothing). I also installed the Boto3 module for S3. I used this module on the backend to fetch images from the S3 bucket, and create signed urls that I sent to the frontend. These signed urls allow us to display the clothing images on the frontend to users in a secure way. I tested this feature by uploading some test clothing images to the bucket and using different features of the application that show images.

I also fully reworked the outfit generation algorithm on the backend. I worked with Alanis to develop a more clear definition of what a “correctly” generated outfit would be based on different user requests. For example, for a casual request in a warm location, the new algorithm always generates a top/bottom or one piece (dress/jumper) outfit. It will never return a jacket or sweater. I also updated the algorithm to take user preferences into account 20% of the time.

I updated the select outfit feature on the backend and frontend to be compatible with dresses, jackets, and overwear (overwear in our application is defined as any sweaters, cardigans, blazers, or hoodies). I also got rid of the athletic usage type from the backend and frontend logic as it made more sense for the ML model to identify clothing as casual/formal instead of athletic, casual, or formal.

Alanis added the changes for the new closet inventory page on the frontend, and I added the backend functionality to paginate through the clothing items in the closet as well as edit clothing item classifications on the database.

I added a new location field to the database settings table, and made it possible for users to update their location from the frontend in settings. If the user inputs invalid locations or an invalid number for “Number of uses before dirty”, I added an error popup so users know that their change did not go through.

I also updated the backend to send the image url given by the Jetson Nano with the clothing item to the database table. Additionally, on the frontend, I updated the outfit generation page to display the clothing items in different formats based on how many items are in the outfit. This change was made for outfits to be more clear to the user.

This week I also ran into many issues with merging on git, and discovered that this entire semester I had been committing backend code under my name instead of my github accounts. This caused a majority of my commits, besides my newer ones to not show up in contributor insights. I now have this fixed for my future changes, but it is still inaccurate for my past ones, so for accurate insights into my backend code changes, please look through the individual commits under my name or github account instead of the contributor insights.

Overall, this week I finished all of my goals for the backend/frontend and have tested all of my features for basic functionality. I also set up a testing plan for more specific insights like intuitiveness of the application and the speed of outfit generation. I also added my testing information to the final presentation.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

My progress is on schedule.

What deliverables do you hope to complete in the next week?

This next week, I hope to finish up all of my testing and start working on the final report, poster, and video.

As you’ve designed, implemented and debugged your project, what new tools or new knowledge did you find it necessary to learn to be able to accomplish these tasks? What learning strategies did you use to acquire this new knowledge?

I had to learn how to use FastAPI to set up the backend. I learned this by reading through the documentation online and following a tutorial. I also learned how to use Flutter to develop the frontend, which I also learned by following a tutorial and reading documentation.

I followed both tutorials for FastAPI and Flutter during the beginning of the semester and documented my experience doing this in previous status reports. I felt that getting an initial exposure through the tutorials was very effective for me, as I was able to get a basic grasp of the frameworks. I also found it helpful to look up documentation later on as I had more specific goals and features I wanted to implement.

I learned how to create, manage, and query a MySQL database in a class I am taking this semester, 70455 Data Management Fundamentals. I feel that this class helped me get a thorough understanding of how to set up and use the database securely and effectively.

Gabriella’s Status Report for 11/16

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week, I worked on a few different changes for the backend/frontend and began to prepare for testing.

I added API routes for the do laundry feature and select outfit feature. These link to functions in the backend that will update the database with information about how many times an item has been used, and what kind of outfits user’s like to wear.

I worked with Alanis to test the uses until dirty feature, and made a few changes together to complete the feature.

I also worked with Riley to help him set up the communication between the Jetson and database. I helped him plan out the overall framework of how it would work, with him sending a POST request from the Jetson, and writing a function in the backend to parse the Jetson information into data that can be added to the database. I also wrote out steps on how to use FastAPI to test the parsing, and I wrote the API route for the POST request along with pseudocode with the format needed to add the data to the database.

I linked the backend functionality to the frontend for updating user preferences and item usage.

I also wrote another function in the backend to add a new item to the closet_inventory table in the database, and added more clothing to the database and images folder for testing.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I changed the priorities of some tasks with the demo coming up, and prioritized helping to link the Jetson to the backend, along with adding more clothing items to the database over making the final updates to the outfit generation algorithm as the current one is not ideal but does work.

What deliverables do you hope to complete in the next week?

I want to update the outfit generation algorithm.

Verification Tests:

I tested the accuracy of the backend by going to all of the API endpoints and making sure they produced the expected results, based on different requests. I also tested query accuracy by ensuring the responses from the database reflected the user’s wardrobe accuracy accurately. I also tested error handling for invalid API requests, and requests to the backend for information in the database without database credentials.

For verification of the database I want to confirm data consistency and reliability. This includes making sure classified items are parsed and stored into the database correctly, images are referenced accurately through the proper file paths, and wear counts update as expected when laundry is performed or outfits are selected. I also want to do testing for the consistency of selecting outfits, so that the update for user preferences and usage both get committed together or neither get committed when there are errors.

Finally, for verification of the frontend I will ensure that the frontend successfully interacts with the backend and displays data accurately. This will include testing user actions like generating outfits, and toggling laundry. These features will also be tested for speed with a goal of successfully triggering within 2 seconds. Additionally, the frontend will be tested for robustness under different scenarios such as failed API calls and situations with invalid data being given or returned. This should lead to clear feedback to users instead of crashing.

Team Status Report for 11/16

What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?

The most significant risk that could jeopardize the success of the project is the usage model accuracy. We were able to successfully train our clothing and color classification models, but our usage model is struggling to produce useful results, as discussed in our weekly meeting. This risk is being managed by our feature which allows users to correct and confirm the labels of each piece of classified clothing.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

No changes were made.

Provide an updated schedule if changes have occurred.

Our schedule has not changed.

This is also the place to put some photos of your progress or to brag about a component you got working.

Photos of our progress are located in our individual status reports.

Now that you have some portions of your project built, and entering into the verification and validation phase of your project, provide a comprehensive update on what tests you have run or are planning to run. In particular, how will you analyze the anticipated measured results to verify your contribution to the project meets the engineering design requirements or the use case requirements?

Validation is usually related to your overall project and is likely to be discussed in your team reports.

Our verification tests are discussed in our individual status reports.

Our validation tests will be ensured that our camera can take sufficiently clear images of our clothing for our classification models. Our models expect 224×224 images, and our camera can take images with a variety of resolutions, all sufficiently high enough to be scaled down to 224×224, so our camera will meet our requirements. Our camera also allows us to have higher resolution images to display to the user, since 224×224 images are grainy to the human eye.

Our validation tests will also verify that our classification models are compatible with the Jetson and that the Jetson is capable of predicting a class with each model in under 1 second. We have already validated that our .keras models are compatible with the Jetson by uploading them onto it. We will validate that our Jetson can run inference in under a second by using the camera to take at least 10 images of clothes from our own closet and feeding them through each of our three models. We will time how long it takes for each model to classify the image, and determine if the average inference time meets our 1 second threshold.

We will also validate that the Jetson can accurately send the classification results to the backend for storage in the database, and image folder. After the model classifies images of clothing, the Jetson will send the data as a POST request to the backend. We will validate that the backend will parse the data, add the clothing information to the database, and add the image file to the images folder. For our metrics, we will verify that the data in the database accurately matches the information sent from the Jetson. We will also confirm that the image is saved under the correct image file name, that matches the entry name for that item in the database. For speed, we will measure the time taken from sending the POST request to receiving confirmation from the backend. The goal is to meet a latency requirement of under 4 seconds for classification and storage.

Our validation tests will verify that the application accurately generates outfits based on the user’s request, and weather, along with user preferences and wardrobe data stored in the database. The outfits should meet our speed and accuracy use case requirements, and should be displayed on the frontend.

Gabriella’s Status Report for 11/9

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week, I worked on setting up the reinforcement learning for our outfit generation.

I added functions to our backend that will reset the number of times an outfit has been used when users do their laundry. I also added a function that will increase the number of uses in the user_preferences table for clothing color preferences. Both of these should be triggered when users select an outfit in the frontend.

I had some issues with the frontend not working this week as well, and had to debug and install Visual Studio.

Besides this, I wrote a script to create queries for adding all of the new color pair entries to the user_preferences table. The table now has all 91 entries. Here are a few.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the proiect schedule?

I am on schedule.

What deliverables do you hope to complete in the next week?

Next week, I want to link the new functionalities to the front end and make my final updates to the outfit generation algorithm.

Gabriella’s Status Report for 11/2

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week, I added a few new features to the frontend application.

I reworked the frontend again to include a new page for the generate outfit feature, instead of displaying a popup on the main page. This new page still displays the dropdown for selecting an outfit type, but also allows users to generate as many outfits as they want and select their favorite. I also added displaying the outfit images to this page. Here is an example of a generated outfit in the new page. This works by selecting the outfit type, and then submitting that request to the backend which returned a generated outfit along with the imageUrls for the top and bottom. The application then displays images of the outfit based on the imageUrls pointing to the files in the server.

Aside from this, I also added the new user_preferences table to the database. The image linked displays the table structure, along with the color pair I currently have added.

The application now is now linked to images on the server, the backend, and the database.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the proiect schedule?

I am on schedule.

What deliverables do you hope to complete in the next week?

Next week, I would like to add all of the color entries in the user_preferences table. I also want to update the table from the frontend based on the outfits that users choose. I also would like to finalize the outfit generation algorithm. If I have extra time, I would like to add some more dummy testing data.

Gabriella’s Status Report for 10/26

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week, I worked on my ethics assignment and different frontend components.

I reworked the frontend to use a stateful widget instead of a stateless widget after reading this article. I made this decision because we will want to save information about the generated outfit on our page.

I also added functionality to the generate outfit button on our frontend. Clicking this button now brings up a popup with a dropdown. I used this tutorial for adding the dropdown. Users can select their outfit type from this dropdown, and when they click submit it displays the generated outfit details on the main page. I used this tutorial for making http requests on Flutter. This image shows the generated outfit details, generated by our algorithm using this sample data in our database. Eventually, we will want to display this on a separate page where users can either continue generating outfits or select their outfit. Our application frontend is now linked to the backend and database.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the proiect schedule?

I am on schedule.

What deliverables do you hope to complete in the next week?

Next week, I hope to start displaying the clothing item images on the frontend. If I have extra time, I would like to start working on adding a new table for user preferences in our database, and possibly updating the current outfit generation algorithm to take this into account.

Team Status Report for 10/19

Status Report 4

What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?

The most significant risk at the moment is our clothing classification. We are managing this risk by developing a new way to classify clothing, using three different trained models. This should help us get the accuracy we need as each model will be able to focus on one aspect of the item. One model will classify usage, another will classify item type, and the third will classify color. If we are not able to achieve our design requirement classification accuracy, our contingency plan is to have the user confirm that the detected classifications are correct. If they are not, we will allow the user to correct them.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

Yes, we updated the plan for our outfit generation algorithm to take into account the user’s preferences in addition to the clothing they have. This change is necessary because we want the outfits we generate to make sense for the occasion, and the user’s style. This change means that we will need to add a new table in our database, but it should not cause issues time-wise as we already allocated time to update our outfit generation algorithm. Going forward, we will make sure to complete the changes to our outfit generation algorithm for using preferences in the time we have set aside.

We also updated the way that we are classifying clothing. We will be using 3 models instead of one. This change was necessary because we were not getting the accuracy levels for classification that we wanted with our previous design. This change will not affect our latency requirement or our Jetson storage requirement since 3 individual ResNet50s are smaller in size than the original model we had and running classification on a ResNet50 on a lower-spec model of the Jetson takes around 1 second, meaning classifying 3 times will take around 3 seconds. This is discussed in more detail in our design report. Moving forward, we will not move our application to be hosted on the Jetson so that the device can use all its power and have enough storage for the three models.

Provide an updated schedule if changes have occurred.

Our schedule has not changed.

This is also the place to put some photos of your progress or to brag about a component you got working.

Photos of our progress are located in our individual status reports.

Additional Question:

Part A: Written By Alanis

Our product solution will encourage people not to purchase fast fashion products by recommending stylish and weather/occasion-appropriate outfits that already exist in their own closets. Style Sprout allows users to make the most of their existing wardrobe. While this makes getting dressed in the morning easier, it also reduces the need to purchase new, fast-fashion items, minimizing textile waste and resource consumption. As mentioned in part C, the environmental benefits of discouraging people from fast fashion help the globe as the earth’s health and global warming affect everyone. Furthermore, fast fashion companies often exploit workers all around the world since producing cheap clothing can mean underpaying your workers or unsafe factory conditions. Fast fashion leads to many unethical labor practices, as mentioned in this article. Style Sprout encourages users to confidently reuse and style their current clothes, and this push away from fast fashion will also remove support for unethical fast fashion companies who exploit workers in countries all over the world, like Bangladesh, India, and China.

Part B: Written by Riley

Our product solution touches upon many cultural factors due to clothing and attire being an insoluble fragment of culture. Clothing is deeply tied to the representation of culture, tradition, and identity,  making it necessary for us to consider how our solution might affect these factors. Another intractable truth is that clothing is also inherently personal. It is near impossible for an algorithm to summarize and tailor suggestions to all users’ unique styles. As such our solution attempts to touch upon this point by disregarding style as a parameter. Predictions will first only be given with combinations that include covering for the chest and the legs, but will not distinguish between styles outside basic color matching. As such we intend to allow users to maintain their individuality and allow them to express themselves in their cultural values. Only after the user selects clothing would we attempt to partially include their previous selections into future recommendations.

Another cultural implication of our project solution is the western clothing bias inherent in our system. Even if we disregard our personal biases, the types of clothing included, the valid color schemes we include, along with what is classified as “formal”, and “casual” are all rooted in Western (specifically American) culture. As such it is important for us to take this into account for our solution that it is not emblematic of all cultures and all peoples but inherently limited in its usability for certain peoples. This is an issue that is not easily solvable without a massive undertaking but nonetheless is vitally important to consider and disclaim.

Part C: Written by Gabriella

Our product solution addresses the environmental impact of fast fashion. Fast fashion is hugely detrimental to the environment as it leads to increased waste and over consumption. Style Sprout encourages users to make better use of their existing wardrobe, reducing the need for people to purchase new clothing. Through wardrobe management and outfit generation, our app aims to help users make a more intentional use of their wardrobe.

We also hope to help decrease the pressure to participate in fast fashion trends by generating stylish outfits for our users that align both with convenience and environmental consciousness.

Gabriella’s Status Report for 10/19

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week, I mainly worked on the Design Report with my team.

Aside from this, I set up a github for the frontend, to keep our application separate from the backend. I also pushed and wrote code for the barebones frontend UI. Here is the demo image.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the proiect schedule?

I am on schedule.

What deliverables do you hope to complete in the next week?

I hope to begin connecting the frontend to the backend and to AWS S3.

Gabriella’s Status Report for 10/5

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week, I mainly worked on the backend and database. I created the database on my local computer, and set up the inventory table based on the schema we created. I used this tutorial to make the database accessible by remote users. Then, I added some sample data to the database from the MySQL command line. I also set up a python virtual environment and downloaded FastAPI and python-mysql-connector to it on AFS. I then wrote simple backend code for the outfit generation and pushed it to our github. This takes in user requests and returns a top and bottom that matches the request based on what is in the database. I may need to update this algorithm to be more robust later on, as we are currently running into issues with how we want to approach outfit usage and outfit generation, so I will wait for that to be figured out before making more changes. Here are the test results from requesting a casual warm weather outfit.

I also presented the Design Review this week, and began working on the Design Report.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the proiect schedule?

I am on schedule, as I just completed setting up the backend and database code. It is possible that I will need to adjust this code later though, depending on if we can get the usage field working or if we end up needing to change our approach. If that happens, I will update the schedule to include time for more backend changes.

What deliverables do you hope to complete in the next week?

I hope to finish the design report, and begin working on the barebones web app UI.