這是MIT ADE20K場景解析數據集(http://sceneparsing.csail.mit.met.edu/)上語義分割模型的Pytorch實現。
ADE20K是MIT Computer Vision團隊發布的最大的用於語義細分和場景解析的開源數據集。請點擊下面的鏈接,以找到我們數據集的存儲庫,並在Caffe和Torch7上找到實現:https://github.com/csailvision/sceneparsing
如果您只想玩我們的演示,請嘗試以下鏈接:http://scenesegration.csail.mit.edu,您可以上傳自己的照片並解析!
您也可以在此處使用此COLAB筆記本電腦操場,以修補用於分割圖像的代碼。
所有審慎的模型均可在以下網址找到:http://sceneparsing.csail.mit.mit.edu/model/pytorch


語義類別的顏色編碼可以在此處找到:https://docs.google.com/spreadsheets/d/1se8yetb2dets7oupe86fxgyd269pmycawe2mtkuj2mtkuj2w8/edit? usp = sharing
config/defaults.py中詳細介紹。該模塊在訓練過程中計算所有設備上所有設備的平均值和標準差。我們從經驗上發現,合理的大批量大小對於分割很重要。我們感謝Jiayuan Mao所做的貢獻,請參閱同步Batchnorm-Pytorch,以獲取詳細信息。
實現易於使用:
對於語義細分的任務,最好在訓練過程中保持圖像的長寬比。因此,我們重新實現DataParallel模塊,並使其支持將數據分配到Python dict中的多個GPU,以便每個GPU都可以處理不同尺寸的圖像。同時,數據加載程序的運行方式也不同。
現在,數據加載程序的批處理大小始終等於GPU的數量,每個元素將發送到GPU。它也與多處理兼容。請注意,多處理數據加載程序的文件索引存儲在總體過程中,這與我們的目標相矛盾,即每個工人都維護自己的文件列表。因此,我們使用一個技巧,儘管總體過程仍然使數據加載程序為__getitem__函數提供索引,但我們只是忽略了此請求並發送隨機批次。同樣,由數據加載器分配的多名工人都有相同的種子,如果我們直接使用上述技巧,您會發現多個工人將產生完全相同的數據。因此,我們添加了一行代碼,該代碼在激活數據加載器中的多個工人之前,為numpy.random設置了defaut seed。
我們將模型分為編碼器和解碼器,在該編碼器和解碼器中,編碼器通常直接從分類網絡進行修改,並且解碼器由最終的捲積和UPSMPLING組成。我們已經在config夾中提供了一些預配置的模型。
編碼器:
解碼器:
重要的是:我們的存儲庫中的基本重新設置是定制的(與火車中的一個不同)。基本型號將在需要時自動下載。
| 建築學 | 多尺度測試 | 意思是我 | 像素精度(%) | 總分 | 推理速度(FPS) |
|---|---|---|---|---|---|
| Mobilenetv2Dilated + C1_Deepsup | 不 | 34.84 | 75.75 | 54.07 | 17.2 |
| 是的 | 33.84 | 76.80 | 55.32 | 10.3 | |
| MobilenetV2Dilated + ppm_deepsup | 不 | 35.76 | 77.77 | 56.27 | 14.9 |
| 是的 | 36.28 | 78.26 | 57.27 | 6.7 | |
| resnet18dilated + c1_deepsup | 不 | 33.82 | 76.05 | 54.94 | 13.9 |
| 是的 | 35.34 | 77.41 | 56.38 | 5.8 | |
| resnet18dilated + ppm_deepsup | 不 | 38.00 | 78.64 | 58.32 | 11.7 |
| 是的 | 38.81 | 79.29 | 59.05 | 4.2 | |
| resnet50dilated + ppm_deepsup | 不 | 41.26 | 79.73 | 60.50 | 8.3 |
| 是的 | 42.14 | 80.13 | 61.14 | 2.6 | |
| resnet101Dilated + ppm_deepsup | 不 | 42.19 | 80.59 | 61.39 | 6.8 |
| 是的 | 42.53 | 80.91 | 61.72 | 2.0 | |
| UPERNET50 | 不 | 40.44 | 79.80 | 60.12 | 8.4 |
| 是的 | 41.55 | 80.23 | 60.89 | 2.9 | |
| UPERNET101 | 不 | 42.00 | 80.79 | 61.40 | 7.8 |
| 是的 | 42.66 | 81.01 | 61.84 | 2.3 | |
| HRNETV2 | 不 | 42.03 | 80.77 | 61.40 | 5.8 |
| 是的 | 43.20 | 81.47 | 62.34 | 1.9 |
該培訓是在用8個NVIDIA PASCAL TITAN XP GPU(12GB GPU內存)的服務器上進行基準測試的,推理速度在沒有可視化的情況下對單個NVIDIA PASCAL TITAN XP GPU進行了基準測試。
該代碼是在以下配置下開發的。
[--gpus GPUS] )chmod +x demo_test.sh
./demo_test.sh該腳本下載了訓練有素的模型(resnet50diled + ppm_deepsup)和一個測試映像,運行測試腳本,並將預測的細分(.png)保存到工作目錄中。
$PATH_IMG )上測試,您只需進行以下操作: python3 -u test.py --imgs $PATH_IMG --gpu $GPU --cfg $CFG
chmod +x download_ADE20K.sh
./download_ADE20K.sh$GPUS )和配置文件( $CFG )來訓練模型。在培訓期間,默認情況下,檢查點保存在文件夾ckpt中。 python3 train.py --gpus $GPUS --cfg $CFG --gpus 0-7或--gpus 0,2,4,6 。例如,您可以從我們提供的配置開始:
python3 train.py --gpus GPUS --cfg config/ade20k-mobilenetv2dilated-c1_deepsup.yamlpython3 train.py --gpus GPUS --cfg config/ade20k-resnet50dilated-ppm_deepsup.yamlpython3 train.py --gpus GPUS --cfg config/ade20k-resnet101-upernet.yamlpython3 train.py TRAIN.num_epoch 10 。 VAL.visualize True以輸出可視化,如預告片所示。例如:
python3 eval_multipro.py --gpus GPUS --cfg config/ade20k-mobilenetv2dilated-c1_deepsup.yamlpython3 eval_multipro.py --gpus GPUS --cfg config/ade20k-resnet50dilated-ppm_deepsup.yamlpython3 eval_multipro.py --gpus GPUS --cfg config/ade20k-resnet101-upernet.yaml該庫可以通過pip安裝以輕鬆與另一代碼庫集成
pip install git+https://github.com/CSAILVision/semantic-segmentation-pytorch.git@master現在,該庫可以很容易地以編程方式消費。例如
from mit_semseg . config import cfg
from mit_semseg . dataset import TestDataset
from mit_semseg . models import ModelBuilder , SegmentationModule 如果您發現代碼或預培訓模型有用,請引用以下論文:
通過ADE20K數據集對場景的語義理解。 B. Zhou,H。 Zhao,X。 Puig,T。 Xiao,S。 Fidler,A。 Barriuso和A. Torralba。國際計算機視覺雜誌(IJCV),2018年。 (https://arxiv.org/pdf/1608.05442.pdf)
@article{zhou2018semantic,
title={Semantic understanding of scenes through the ade20k dataset},
author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Xiao, Tete and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},
journal={International Journal on Computer Vision},
year={2018}
}
場景通過ADE20K數據集解析。 B. Zhou,H。 Zhao,X。 Puig,S。 Fidler,A。 Barriuso和A. Torralba。計算機視覺和模式識別(CVPR),2017年。
@inproceedings{zhou2017scene,
title={Scene Parsing through ADE20K Dataset},
author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
year={2017}
}