git clone https://github.com/venkanna37/Label-Pixels.git conda env create -f environment.yml OR
conda install -c conda-forge keras conda install -c conda-forge gdal conda install -c anaconda scikit-learn - Creates labels with shapefiles
- The projection of imagery and shapefiles should be same
- Projection units should be in meters if you want to buffer line feature
| options | Description |
|---|---|
| --help | Print usage information |
| --raster | Raster/Image name with directory |
| --vector | Vector file name with directory |
| --output_file | Output filename with directory |
| --buffer | Buffer length for line feature. Not required for polygon |
| --buffer_atr | Attribute from the vector file, this attribute can be buffer width and It multiplies with --buffer. Not required for polygon |
| --labels_atr | Attribute from the vector file, pixels inside the polygon will be assigned by its attribute value. Not required for line and single class (Polygon) |
Example:
python rasterize.py --raster ../data/spacenet/raster/spacenet_chip0.tif --vector ../data/spacenet/vector/spacenet_chip0.shp --buffer 2 --buffer_atr lanes --output_file ../data/spacenet/binary/test.tif
- Generate patches from Images/Tiles
- To generate patches for train, test and valid sets, the command needs to be run three times
- Name of image and label files should be same
| options | Description |
|---|---|
| --image_folder | Folder of input images/tiles with directory |
| --image_format | Image format tiff/tif/jpg/png |
| --label_folder | Folder of label images with directory |
| --label_format | Label format tiff/tif/jpg/png |
| --patch_size | Patch size to feed network. Default size is 256 |
| --overlap | Overlap between two patches on image/tile |
| --output_folder | Output folder to save patches |
Example:
python patch_gen.py --image_folder ../data/mass_sample/test/image/ --image_format tiff --label_folder ../data/mass_sample/test/roads_and_buildings/ --label_format tif --patch_size 256 --output_folder ../data/mass_patches/
- Save directories of patches in CSV file instead of reading patches from folders directly
| options | Description |
|---|---|
| --image_folder | Folder of image patches with directory |
| --image_format | Image format tif (patch_gen.py save patches in tif format) |
| --label_folder | Folder of label patches with directory |
| --label_format | Label format tif (patch_gen.py save patches in tif format) |
| --patch_size | Patch size to feed network. Default size is 256 |
| --output_csv | csv filename with directory |
Example
python csv_paths.py --image_folder ../data/mass_patches/image/ --image_format tif --label_folder ../data/mass_patches/label/ --label_format tif --output_csv ../paths/data_rd.csv
- Training FCNs for semantic segmentation
| options | Description |
|---|---|
| --model | Name of FCN model. Existing models are unet, segnet and resunet |
| --train_csv | CSV file name with directory, consists of directories of image and label patches of training set. |
| --valid_csv | CSV file name with directory, consists of directories of image and label patches of validation set. |
| --input_shape | Input shape of model to feed (patch_size patch_size channels) |
| --batch_size | Batch size, depends on GPU/CPU memory |
| --num_classes | Number of classes in labels data |
| --epochs | Number of epochs |
Example
python train.py --model unet --train_csv ../paths/data_rd.csv --valid_csv ../paths/data_rd.csv --input_shape 256 256 3 --batch_size 1 --num_classes 3 --epochs 100
- Calculates the accuracy using different accuracy metrics.
| options | Description |
|---|---|
| --input_shape | Input shape of model (patch_size patch_size channels) |
| --weights | Trained model with directory |
| --csv_paths | CSV file name with directory, consists of directories of image and label patches of test set. |
| --num_classes | Number of classes in labels data |
Example
python accuracy.py --model unet --input_shape 256 256 3 --weights ../trained_models/unet300_06_07_20.hdf5 --csv_paths ../paths/data_rd.csv --num_classes 3
- Predicts the the entire image/tile with trained model.
| options | Description |
|---|---|
| --input_shape | Input shape of model (patch_size patch_size channels) |
| --weights | Trained model with directory |
| --image_folder | Folder of input images/tiles with directory |
| --image_format | Image format tiff/tif/jpg/png |
| --output_folder | Output folder to save predicted images/tiles |
Example:
python tile_predict.py --model unet --input_shape 256 256 3 --weights ../trained_models/unet300_06_07_20.hdf5 --image_folder ../data/mass_sample/test/image/ --image_format tiff --output_folder ../data/
- Summary of FCNs
| options | Description |
|---|---|
| --model | Name of FCN model. Existing models are unet, segnet and resunet |
| --input_shape | Input shape of model to feed (patch_size patch_size channels) |
| --num_classes | Number of classes to train |
Example
python summary.py --model unet --input_shape 256 256 3 --num_classes 3
- Massachusetts Benchmark datasets for Roads and Buildings extraction
https://academictorrents.com/browse.php?search=Volodymyr+Mnih - List of Benchmark datasets for semantic segmentation, object detection from remote sensing imagery https://github.com/chrieke/awesome-satellite-imagery-datasets
Open issue or mail me 👉 g.venkanna37@gmail.com