What it does
It turns Google Street View into works of art. Your world will never be the same.
The first iteration of the website was a Chrome Extension: VR Harambe Sighting in which Harambe would be stochastically overlaid on the sidewalks of Google Street View using a suite of CV algorithms. Due to the nature of async flow, not all functionalities can be implemented in browser. As a result, I decided to pivot the app towards deep learning.
I started deepstreetview around 6pm Saturday and finished at 4am Sunday. It would have more features if I woke up earlier.
Google Maps API was a low-level "callback hell". In the age of ES2017, it should be rewritten with the help of async/await and AMD. I want to thank EMCAScript Guru Ron Chen for his guidance with the Google Maps API.
The very first successful build uses the same format as Google Streetview. The tile size is 512x512 so the output looks pieced together with visible gridlines between tiles. This is solved by stitching all the parts and cutting the result in half vertically (rationale being the middle part is usually the road). This makes the image much more integral and easy to look at. However, the downside is that it takes the server much longer (10x) to respond because of the nature of the algorithm.
The (7x4) tiles are fetched from Google in 512x512 so 28 requests have to be made. It was originally written synchronously but then converted to parallel using a simple threading model. This increased the speed from 2s to 210ms.
Computation is expensive so caching is necessary. Although the cache is implemented using /tmp/ and serialized python strings, it works like a charm so not a challenge when n is small.
The server does not have a GPU as 1and1 don't offer GPU instances. This drastically slows process down. With a GPU, responding should be within seconds.
GPU instances are unreliable and expensive. Definitely not worth it for a sensational project such as this one. I think the future of this is to cache enough processed street view images and throw them in a vault.
Buying a Namecheap domain.
The idea for the hack and the execution were pretty on point
The ML library Torch is easy to deploy. It took about 8 lines of code and works flawlessly.
This being a generally successful hack with lots of hacky code written is good
It's canonical to respect the API
Patience is the archenemy of programming
Neural nets are hard to devise but bring good vibes when deployed
Keeping up with The Hacker News will get you clever ideas
What's next for DeepStreetView
I have an Ethereum mining rig in my dorm so I'll just use that to cache enough processed street view tiles and throw everything on AWS and forget about this project. And the python flask microservice is simply not robust enough to handle any load so that has to be rewritten.