"What's for Dinner?" is an attempt to build a program that accepts an input image and returns a list of recipes that can be made with food items found in the picture. It will attempt to do this by segmenting the image, feeding those image segments into a neural network, determining what the items are, and feeding the results into an online recipe database.
We've all been there...you open the fridge, stare at a bunch of colors and shapes, and wonder what the heck you can eat for dinner tonight. I want to take some of the anxiety that comes in such situations and in the process introduce people to new recipes and reduce waste.
I am new to the CS world and have been working feverishly for almost a year to get up to speed quickly on as many aspects of CS and programming as I can. I have done a bit of C++ up to this point, but have not really built anything of my own choice (aside from dinking around with Project Euler). By tackling this project, I hope to learn a few useful things, such as:
- Python For years I have wanted to learn Python, and I see this project as an opportunity to do so.
- OpenCV One of the major reasons I chose to study computer science is computer vision. The possibilities seem endless, and the field seems young. I wanted an opportunity to play with one of the premier tools of the CV world.
- TensorFlow Since childhood, AI has fascinated me. Around the time I conceived this project, Google open-sourced TF, and I couldn't resist trying it out.
- API Interface As part of my project, I plan to interface with an online recipe database via API. More and more APIs are being opened up, and learning to use them seems like a great way to expand functionality while letting someone else take care of maintaining code.
- Software Engineering I know very little about putting different pieces together to build something neat, something that has never been done before. I see this project as my chance to dive in and figure it out.
As someone who has used open-source software for years, I strongly support the belief that ideas should be shared, for others to learn from, build upon, and improve. Thus, my code will be released under a BSD 2-clause license, to allow for as much opportunity as possible. Software packages used in the project are still subject to their own licenses.