Only roughly 35% of recyclable materials are accurately identified and sent to the correct facilities in the USA. In Chicago that number drops to almost 9%. Furthermore, incorrect materials being recycled led to nearly half of recycled goods being ultimately wasted. According to the EPA, uncertainty regarding what is usable was a major factor in depressing successful recycling rates. The objective of our android application is to automatically identify whether a certain object is recyclable in accordance to the local municipal regulations to resolve these human capital issues within the system. Our ambition is to remove the formerly mentioned roadblocks to promote environmentally friendly and industry supportive habits.
What it does
The CU-Recycle app determines whether an object is recyclable based off a simple picture or a manual entry. Furthermore, it provides detailed information provided directly by both Champaign and Urbana recycling sites including information on proper recycling procedures. Our hope is that this now easily accessible information will greatly bolster the successful recycling rate in the local cities.
How we built it
We created an Android app based on a UI design developed in Figma, and we trained a convolutional neural network on an open source recycling dataset using Keras to determine if an object is recyclable according to local regulations. When the user takes the picture of an object, it is sent to our Flask server which queries our model to predict what type of waste the item is. The user can also manually enter the type of waste they possess into a SearchView to get an instantaneous result if the item exists in our database. In addition; we have also provided proper recycling procedures as well as Urbana education materials to support our objective of protecting our environment in both the short and long run.
Challenges we ran into
We ran into several challenges during the development of the front end. Figma, the application we used to design the GUI, did not transfer well into Android Studio due to being outdated and providing faulty, incomplete code. In addition, we initially intended to use Google Firebase as a database and switching over to Google Firecloud in the middle caused some difficulties during the transition. Implementing a search bar and displaying the results was also a challenge faced during the creation of the app. There were multiple search functionalities that could be implemented but none were simple in design. Our method of using a searchview to search and listview to display the results still required multiple additional classes being made to support the functionality.
On the neural network side of things, finding a plausible dataset was the most difficult challenge. We downloaded an open source dataset, but every object was placed against a solid background, so training efforts resulted in the network learning putting a heavy weight on the background. To circumvent this, we implemented data augmentation with each image, changing attributes such as zoom, rotation, orientation, etc. This allowed a greater degree of versatility in the trained model. Furthermore, each team member took ten photos of each recyclable and non-recyclable item with varying backgrounds which nearly doubled the dataset. Overall, the training was much improved because items were classified with a higher degree of accuracy and precision.
Additionally, it was challenging to create a server to connect our android application to our neural network. Since neural networks take a long time to train and predict, we knew we had to create a server to query our pre-trained model for class labels. We built our server on flask, and faced some issues when trying to load the model for prediction. Since flask was multi-threaded, this caused issues when we were trying to use the model for prediction when it was not even fully loaded in. We fixed this problem by forcing tensorflow to use the global default machine learning graph.
Accomplishments that we're proud of
Ultimately, we are proud of collaborating as a team for 24 hours and integrating all our work into one system. We all faced our individual challenges and overcame them. On the neural network side, we are proud of training a fully-fledged convolutional neural network on an abstract dataset and connecting it to a server in a short amount of time. For the UI and Firestore side, we are proud of learning a new development environment and database system. Integrating it all together was the biggest accomplishment of them all. After many merge conflicts and failed commits, all the components came together into one cohesive solution for the community.
What we learned
A lot of public “knowledge” and “facts” about recycling are actually incredibly wrong. Shredded paper, napkins, and plastic film for example are all usually unrecyclable and cause financial woes to the recycling companies. During our intensive research into the topic, we discovered how increased rates of recycling and better public knowledge of recycling could result in drastic and overwhelmingly beneficial results to the communities and environment.
In addition, we learned about using Android Studio, Flask, and working as a team on a git project together. We learned how to successfully implement listviews, search-views, and adapters in Android development. We also learned a lot of how to properly use different types of layouts and the elements within to design a working gui. We learned about switching between activities and providing functionality to GUI as well. Additionally, we learned about the significance of the quality of a training dataset for machine learning models, and how to tune parameters for increased accuracy. We also learned how to build a flask server on python and deal with multiple threads to force our application to use a fully loaded model.
What's next for CU-Recycle
Ultimately our hope and objective for our communities is to protect our environment starting with excellent recycling behaviors. Our app is already providing relevant education and identification services to help bolster the successful recycling rate in Champaign-Urbana, but we hope that our services will expand beyond the municipal lines and educate members of our communities everywhere. Our neural network is continuously being trained to correctly identify more objects and increase accuracy percentage and we are in the works of developing a process to automate the discovery of local waste regulations to ensure citizens in different areas have more effective location specific procedures.