Skip to content

[BMVC 2018] Self-supervised Feature Learning for Semantic Segmentation of Overhead Imagery.

License

Notifications You must be signed in to change notification settings

suriyachaudary/Self-supervision-for-segmenting-overhead-imagery

Repository files navigation

Self-Supervised Feature Learning for Semantic Segmentation of Overhead Imagery

If you find our work useful in your research, please cite:

@inproceedings{singhBMVC18overhead,
    Author = {Singh, Suriya; Batra, Anil; Pang, Guan; Torresani, Lorenzo; Basu, Saikat; Paluri, Manohar; Jawahar, C. V.},
    Title = {Self-supervised Feature Learning for Semantic Segmentation of Overhead Imagery},
    Booktitle = {BMVC},
    Year = {2018}
}

Dependencies

Datasets

Preparing datasets for training
  • Potsdam
bash prepare_potsdam.sh
  • SpaceNet
bash prepare_spacenet.sh
  • DeepGlobe Lands
bash prepare_deepglobe_lands.sh
  • DeepGlobe Roads
bash prepare_deepglobe_roads.sh
Please refer to jupyter notebook for semantic inpainting (Pathak et al, CVPR 2016), adversarial mask prediction, and semantic segmentation codes:

Notebook

Toggling use_coach flag in the notebook is sufficient to switch between our method and Context Encoders. Random patches from the image are erased when use_coach = False whereas the mask values are sampled from uniform distribution in iteration 0 or predicted by the coach network in iteration > 0 when use_coach = True.

For other ResNet-18 baselines in Table 2,
scratch :

from models import resnet18, FCNify

net = resnet18().cuda()

net_segmentation = FCNify(net, n_class = nClasses)

ImageNet :

from models import resnet18, FCNify

net = resnet18(pretrained=True).cuda()

net_segmentation = FCNify(net, n_class = nClasses)

autoencoder with bottleneck and retaining pre-trained deocder:

net = resnet18_encoderdecoder_wbottleneck().cuda()

erase_count = 0 ### number of blocks to erase from image

net_segmentation = FCNify_v2(net, n_class = nClasses)

autoencoder without bottleneck and retaining pre-trained deocder:

net = resnet18_encoderdecoder_wbottleneck().cuda()

erase_count = 0 ### number of blocks to erase from image

net_segmentation = FCNify_v2(net, n_class = nClasses)

About

[BMVC 2018] Self-supervised Feature Learning for Semantic Segmentation of Overhead Imagery.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages