Usually, there are two waste disposal methods: 1. Wastes are placed in the storage yard and then in landfill. 2. Incineration. However, none of them are good options because the first method pollutes the water and air, and the second methods creates one of the most toxic substances. To solve this problem, garbage classification is the better choice. Right now, many people realize the importance of waste managing; however, they have not yet started to take any actions. As we know, Charlottesville has already adopted a sustainability policy in order to become a greener city, but pursing this comes at a high cost as it requires a lot of more labors. We, as a team, want to develop a website app that encourages people in our neighborhood to learn to manage their waste in an interactive way. Also, this will reduce employees' health risks by letting robots help sort wastes in storage yards.
What it does
The user can simply upload an image of some waste, click the "submit" button, and our web app will tell the user which category it belongs to. The user can upload another image by clicking "try another one."
How we built it
Our web app is built using the Django framework and hosted on Heroku. We created our own images and color style on Procreate for our user interface, and materialized our design with the help of Bootstrap 4. On the backend, we have a machine learning model which we trained on a garage image classification dataset (from https://github.com/garythung/trashnet), using pytorch and torchvision libraries.
Challenges we ran into
We have three members in our teams, and two of us are first-year students who have less experience with machine learning and website designing. After we came up with this idea, we doubted if we were able to finish our goal in time. Working persistencely, each of us worked on our area of expertise. One challenge we had was that having too many our dependencies exceeded heroku's upper limit slug size and thus our app could not deploy. We hit lots of dead-ends trying to find a solution and weren't sure if we could fix it. After searching through many similar issues online, we realized that PyTorch with CUDA was too big for heroku slug size. We were able to find a CPU-only version of PyTorch, which is much smaller than PyTorch with CUDA. Using the CPU-only PyTorch on deployment, we were able to reduce 60% of the slug size.
Accomplishments that we're proud of
Each of us applied different skills as we are good at different things, and we were able to parallel-work on this project. What we are most proud of is that we actually achieved our goal that we feel were impossible in a single day. As our project gets applied to the community, we are proud to know that people can actually use it to maintain a good environment and make everyday an Earth day.
What we learned
This is our first time designing and building a website in one day. We were all stressed at the start of this project. However, we understood that programming is a process of trail and errors. In this process, we learned how to combine the knowledge we learned about machine learning and web development with team problem-solving skills. Communications, support, and cooperation among our team is the most endearing of what we developed today.
What's next for Recycle Bot
In the future, we can make a mobile version of our app so that users can have wider access to our recycle bot. We can also find a larger dataset to improve the accuracy of our model. For better accommodation, we can also create new features such as allowing people to take photos directly through our app or voice recognition system for people with disabilities.
Try It out
bootstrap, django, heroku, machine-learning, python, pytorch, resnet, torch, torchvision