I came with different idea to build for this hackathon, Idea was to build an alexa skill which will kinda work as blind dating using Tinder APIs. But, while I was doing background homework before starting my code @ 12pm, I noticed 40-50% of people waiting for solid 2-5 mins deciding which bin out of 3 should they throw their trash cans, fruit peels, fork, glasses, bottles, etc. Also, out of rest of 50-60% crowd threw the trash in incorrect bins, which makes it even more harder for segregation later. Hence, I decided to move forward with some method for training the model which can suggest the correct bin on our behalf. So, I dropped my idea for blind date skill (will take it later :D ) and started reading about any research done on this part of the Machine Learning + Computer Vision problem. I found one research paper from Stanford professors discussing similar idea, but not exactly same (http://cs229.stanford.edu/proj2016/report/ThungYang-ClassificationOfTrashForRecyclabilityStatus-report.pdf). So, I thought it's good to work on something being researched right now and hence, started with this problem statement.
What it does
It suggests with accuracy count which bin should the item go. Improvements on this model is endless. What I tried to build today is just a PoC for the problem solution.
How I built it
I used OpenCV along with Tensorflow to train my model with about 400 classes of objects and referring to appropriate trash bins. I've used tf-gpu and hence taking advantage of the Cuda toolkit from Nvidia for compute.
Challenges I ran into
Cuda installation and compatibility with display driver versions (blew my display driver last night). Unavailability of annotated train data, although I found images of the train data, but it wasn't annotated and need to label them. I think given more time, it can be scaled and expanded properly.
Accomplishments that I'm proud of
Working solution to segregate with certain level of accuracy. Took advantage of Tensorflow and OpenCV.
What I learned
What's next for Trash Segregation
Label more train data and improve model suggestions and adding more items in datasets. Also, distribute the system, such as hosting the image capturing part may be on raspberry pie next to the trash cans and performing the compute on Google Compute or Amazon Cloud and returning results by displaying on TV next to trashbins.