Show HN: Banana ripeness classifier (ML webapp)
isthisbananaripe.ml
isthisbananaripe.ml
Feedback is always appreciated!
Data, code and trained model are available here: https://github.com/giovannipcarvalho/banana-ripeness-classif...
It's an interesting project, nonetheless, and sounds like just the sort of thing I'd like to replicate to get started in ML.
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...".
Any chance for making an avocado identifier, because those are pretty tough to guess wether they are ripe.
In the forums there is a pinned thread about a docker build that works nicely on https://render.com/
fork repo, replace ML model, change html content, link to render, done https://course.fast.ai/deployment_render.html
- 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?