这是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}
}