The goal of this project was to train a Generative Adversarial Network (GAN) to extract road networks from satellite imagery and assess its performance relative to pixel-wise classification methods. The data I used was 4 band (Red, Green, Blue, Near IR) imagery with a 3m resolution from Planet Labs. Throughout the Remote Sensing course, we often used indices such as NDVI or NDWI for land cover classification. With indices like these, a value is calculated for each pixel that is a function of the band values at that pixel. This value can then be thresholded to classify a certain type of land cover. A shortcoming of this method is that no local context is used to inform the classification of each pixel. By using a discriminator with convolutional layers, I hoped to achieve superior performance to pixel-wise classification through the incorporation of some of this local context in the classification process.
The first challenged I faced was producing training data.
Acquiring 4 band imagery from Planet was relatively simply, but producing accurate labels for the roads was more difficult.
I ended up using the OpenStreetMap API to retrieve all of the roads within the Planet Scene, and then drew binary road masks for each scene.
RoadGAN | |||
---|---|---|---|
Scene | Precision | Recall | F1 Score |
Western Mass. 1 | 0.287 | 0.176 | 0.218 |
Western Mass. 2 | 0.595 | 0.182 | 0.279 |
Western Mass. 3 | 0.474 | 0.192 | 0.274 |
Western Rhode Island | 0.347 | 0.254 | 0.293 |
Average | 0.480 | 0.189 | 0.271 |
SVM | |||
---|---|---|---|
Scene | Precision | Recall | F1 Score |
Western Mass. 1 | 0.114 | 0.257 | 0.158 |