James wants to go to Ottawa for a vacation. He does not how to dress properly for the weather as -1 degree Celsius in the sunny and snowy Ottawa feels completely different than -1 degree Celsius in the rainy Vancouver.
When visiting a new city or country, often, just typing the city name to Google is not enough to determine the weather of the city. If you have never experienced extremely humid summer or extremely cold winter, you will have no idea what ‘-5’ degree or ‘38’ degree Celsius mean.
By showing photos of people standing outside in these cities on a specific day of the year, you will be able to decide what is the appropriate clothing to bring for your vacation.
What it does
Where to Wear is an application that shows you the weather of any city and what people are wearing in the city, so that you can dress accordingly. The application also shows historical weather data and what people wore for a particular date.
How we built it
We use Express (nodeJS) for the backend and Angular for the front end. We also use API services from the following:
- OpenWeather (Current weather)
- DarkSky (Historical Data)
- Instagram (Photos)
- Google Vision (Filters for photos of people) We cached all the images we collected by location via Instagram using MongoDB. We then use image recognition to filter out irrelevant pictures. We also used concurrency to increase the efficiency of getting labels and data of images
Challenges we ran into
It was difficult to collect data from Instagram as they have removed many endpoints recently due to their data scandals. Instagram also blocked our IP address multiple time, which was resolved using VPN. It was also difficult to find free historical data services that we could use.
However, the most challenging thing that we have encountered is the slow image recognition as we are dealing with a large number of photos. We solved this by doing 1) caching and 2) concurrency.
Accomplishments that we're proud of
We were able to implement most of the features we planned. We were able to do image recognition better than our expectation using machine learning by doing trials and errors for the keywords.
What we learned
We learned to integrate different implementation of APIs to our web application. We also learned new tools such as Angular and MongoDB.
What's next for Where to Wear
We could further refine the image recognition algorithm and we could also collect more image data from different social media platforms.