Back in the day, you went to Ikea, sat on the 10 sofas they had and bought one. With the advent of the digital age and online buying, we now simply browse catalogues before ordering sofas. But there are thousands upon thousands of sofas. Unlike many products, there are limited filtering options available on most sofa catalogues to narrow your search. How can you expect to find a sofa that fits you?
What it does
That's where Sofa Search comes in. The web application will present you with sofas, each of which you rate from 0-5 stars. As you rate each one, a convolutional neural network will learn your preferences and suggest sofas that more closely match your tastes. This very quickly narrows your sofa search and will ultimately lead you to your ideal sofa.
How we built it
Challenges we ran into
Due to the lack of data, the primary issue with our network was high variance (i.e. overfitting), which we counteracted by keeping the network simple and convoluting the image further.
For data collection, we tried to use Scrapy (a web scraping library for Python), however, it had documented issues with Python 3 + Windows 10. Thus, we had to resort to Beautiful Soup, which accomplished the task as we needed. Another issue with data collection was the zooming and animated image thumbnails and windows on various retailer websites, which took some time to figure out and overcome.
Accomplishments that we're proud of
We are quite proud of being able to create a machine learning-based hack in the limited amount of time we had. Our minimum viable product came together and we were able to tweak and refine it before submission.
What we learned
This was our first time scraping data online, so we used Beautiful Soup. This was also our primary Flask developer's first time using Flask. Although we had experience using TensorFlow, it was our first time building a convolutional network. We learned a lot about these specific technologies along with web development in general.
What's next for Sofa Search
Sofa Search has a comfy future ahead of it. In the immediate future, we would like to add a "Shopping Cart" of sorts and other convenience features on the site to improve the user's experience.
This model works well due to the consistency of the images available for sofas in catalogues (constant position, blank background, etc). With slight modifications, this model can be generalized to work on a variety of furniture items as well as other products.
We would also like add accounts with a database for this service in order to save the user's preferences. We can also cross-reference user's tastes and dislikes to help new users more quickly find a sofa that matches their needs.