Select to view content in your preferred language

Machine learning workflow with MultiTaskRoadExtractor model and a Pixel Classification Model

985
2
05-09-2023 11:00 AM
AlexDevoid
Emerging Contributor

I'm am designing a project to extract roads, parking lots, and driveways from Sentinel-2 satellite imagery using machine learning, and I'd love to get some feedback my proposed approach.

My Goal is to extract roads, parking lots, and driveways from satellite imagery, to estimate their combined area in a given city.

Here is a high-level workflow I’ve drafted:

Extract OSM Roads and parking lots:

  1. Download and preprocess Sentinel-2 images in AOI
  2. Download OpenStreetMap (OSM) road centerlines and parking lot polygons.
    1. As a note: my workflow needs to work for areas of interest not covered by SpaceNet and open-sentinel-map .
  3. Use MultiTaskRoadExtractor model to extract road networks. (I need to calculate the area of the road networks, so OSM road centerlines are not enough.)
    1. Generate road and parking lot masks using road centerlines and parkinglot polygons in area of interest
    2. Train and save MultiTaskRoadExtractor model then use it to extract a classified raster. Covert the raster to vector, which I should be able to calculate the area of the road network and parking lots.

Extract driveways and parking lots not included in OSM data

  1. Use extracted road/parking lot vectors as a preliminary training/testing dataset.
  2. Plot the preliminary dataset on the satellite imagery. Most driveways are not included in OSM data.
  3. For my MVP, proof of concept, I will Ground truth driveways and parking lots in a subset of at least 200 property parcels across a couple neighborhoods within my AOI, manually labeling any missing driveways or parking lots labels.
  4. Use updated training dataset to train one of the ArcGIS API’s Pixel Classification Models DeepLab, PSPNet, or U-Net.
  5. Apply the trained model to the rest of the city’s parcels to classify roads, parking lots, and driveways.

I plan on using the ArcGIS Python API to implement the above workflow, using the MultiTaskRoadExtractor model and a Pixel Classification Model. Does anyone have any suggestions, recommendations, or concerns regarding my proposed approach? Have you worked on a similar project or know of any resources that could be helpful? I'm particularly interested in hearing about any potential pitfalls or improvements that could be made.

Any feedback would be greatly appreciated! 

Thanks in advance!

0 Kudos
2 Replies
David_McRitchie
Esri Contributor

Common pitfalls in my experience tend to be hardware and processing time.

I recommend taking a small sample set of data and running through this. It might also be worth testing your code tool by tool and gauging how long each part of the process will take. From there you can do a rough estimate for how long the entire dataset may take.

If you have access to ArcGIS Online I would also recommend checking out the pre-trained models from this as it might cover some groundwork for you. These are .dlpk files so you can fine-tune them if needed. The following one is specifically made for Sentinel 2 imagery and deals with land classification.

 

Hope that helps!

David

 

 

Esri UK -Technical Support Analyst
VinayViswambharan1
Emerging Contributor

Hi @AlexDevoid - 

Did you try the pretrained models for extracting roads and parking lots?

This link has over 60 models as of today, which you can use to extract features from your imagery. You can also use it as a base model to derive a model thats customized to your geography / image resolution.

https://livingatlas.arcgis.com/en/browse/?q=dlpk#d=2&q=dlpk