5 ms·
Show HN: Banana ripeness classifier (ML webapp)
- gcarvalho 8y agoHey, HN! I am colorblind and I can't reliably identify when a banana is ripe enough to eat, so I made a machine learning model that does it for me. The model (92% val accuracy, ~12MB) runs on your device (tf.js) and you can upload directly from the camera on mobile. Feedback is always appreciated! Data, code and trained model are available here: https://github.com/giovannipcarvalho/banana-ripeness-classification https://github.com/giovannipcarvalho/banana-ripeness-classif...
- GordonS 8y agoI'm also colour blind (red-green), and can't tell ripe bananas from unripe based on the green/yellow colour. But as they ripen, they tend to develop more black patterns on them, and they're softer when you give them a little squeeze. It's an interesting project, nonetheless, and sounds like just the sort of thing I'd like to replicate to get started in ML.
- mrfusion 8y agoSense of smell is the best way.
- curiousgal 8y agoUsually it's a good idea to include another class that captures bannans in general during the training, that way it doesn't try to classify things that are not bannans to begin with.
- morenoh149 8y agoha I made something similar for weed, https://chronicsickness.com https://chronicsickness.com
- simongr3dal 8y agoNice, pretty cool project. It correctly identified some bananas I had just bought as a little green. Any chance for making an avocado identifier, because those are pretty tough to guess wether they are ripe.
- gcarvalho 8y agoThanks! I might give it a shot. But yeah, I think it wouldn't work nearly as well.
- lovestodonothin 8y agoCool website! Can you go through how you set up the whole thing?
- anotheryou 8y agoI'm pretty sure it's based on the fast.ai course. Their current set-up tutorial is outdated and doesn't work though. In the forums there is a pinned thread about a docker build that works nicely on https://render.com/ https://render.com/ fork repo, replace ML model, change html content, link to render, done https://course.fast.ai/deployment_render.html https://course.fast.ai/deployment_render.html
- gcarvalho 8y agoThank you. I actually didn’t base it on fast.ai. It went on like so: - I scraped from google images using queries like “ripe bananas”, “green bananas”, etc - Filtered out garbage images and labeled the remaining with the help of someone - Trained the model (very straight forward with Keras). The code in the notebook is something like 30 lines I think. - Using tf.js was what took me the longest. Using tensorflowjs_converter.save_model outputs an incompatible or corrupted file. Saving it first with keras and then using the tensorflowjs_converter CLI tool is what worked. The web-ui code is also available in the repo. - Lastly. It is served from GitHub pages (not a problem since everything is static and runs client side), with a custom freenom domain (on a convenient .ml tld) and through cloudflare’s DNS which gives me SSL on a custom domain, caching and some very basic analytics. Everything free tier. It only cost me time (around 5h I think). Did I miss anything you wanted to know?
- dbs 8y agoI just uploaded an image with some portuguese custard pies and the model went bananas.
- dplgk 8y agoNext, can you develop Not Banana app? I think you could hit it big with that.
- anotheryou 8y agoI tried to guess an album covers decade: https://uncover-a-covers-decade.onrender.com/ https://uncover-a-covers-decade.onrender.com/ You are doing the fast.ai course too, right? [edit: looking at your code, no, you did not :)] I chose my challenge to maximize my learning through something challenging enough it might fail. It's only right 60-70% of the time. What I learned: - Binning in to decades might not be Ideal. Something from 79 and 80 is more similar than something from 71 and 79. I guess a better approach would have been smaller bins (3 or more per decade) and than rounding the result to the decade. - Be careful how you gather your learning data. I pulled from the google image search with something like "album OR LP cover 20s/30s/40s..."; this has ~20% "best of the XXs" collections in them where the cover was designed in a much later decade. I should have searched for "1920 OR 1921 OR 1922...".