Over new year break I started working on a project which is very fascinating for me. While, I just got very initial results, couldn’t stop myself and made a video clip, which literally is just the visualization of the collected data set.
The main goal of this project is to see using the so called “representation learning” methods such as convolutional neural networks and a big collection of images of more than 75K cities across the world how it is possible to learn hierarchies of urban patterns.
This project is at the intersection of urban morphology and representation theory, where I am curious to answer the following questions:
1- Is it possible to come up with some clusters of basic elements in road networks across the cities all over the world? For example, it is obvious that many cities in US to have rectlinear grid structures and therefore the rectangular cells are definitely one obvious basic elements of urban fabrics. However, if we look at thousands of cities altogether, there should be many other basic repeating patterns. Definitely, this task can not be done manually. The followings are just few of them.
Other research questions are as follows:
2- Using the learned hierarchical representations learned via methods such as Convolutional Neural Nets, is it possible to easily similar cities or regions all over the world?
3- Learning the above mentioned features now toward a certain target such as road pollution, is it possible to predict (degrees of ) relationships between urban patterns and those factors of interest?
These are the initial goals of this project I set so far. While I had the idea of this project for a while, the data collection for this project always seemed a bit difficult to me. However, I realized that there is a beautiful and simple way, using Mapbox studio API. You just need to style your map first. For example, style maps that show only roads in red and buildings in blue and nothing else. Then, having the coordinates of those cities, using Mapbox static API on your styled map, you can save the pictures of each city with different resolutions.
In this regard, I first found out somewhere (don’t remember exactly where!) a long list of cities in the world. Then, using Google geocoding API, I managed to get the geocoordinates of around 75K cities. You can get this info here.
Finally, I collected lots of images of the cities including roads only, buildings only and roads and buildings only, where roads are red and buildings are blue.
At the moment I am testing different architectures of Convolutional neural nets. For the first task I need to have a convolutional autoencoders. My initial results using tensorflow was very interesting, but since I didn’t know how to save the trained model I couldn’t save any thing. The problem here is that I run my models with the CPU and it is extremely time consuming.
For now I made a video clip that shows around 2000 cities quickly. It is called, roads are red, coming with the music by RZA, the soundtrack of Ghost Dog.