本目录包含了采用MegEngine实现的经典DeepLabV3+网络结构,同时提供了在Pascal VOC2012和Cityscapes数据集上的完整训练和测试代码。
网络在Pascal VOC2012验证集上的性能和结果如下:
模型 | mIoU |
---|---|
deeplabv3plus-res101-voc-512size | 79.5 |
网络在Cityscapes验证集上的性能和结果如下:
模型 | mIoU |
---|---|
deeplabv3plus-res101-cityscapes-768size | 78.5 |
本目录下代码基于MegEngine v1.2,在开始运行本目录下的代码之前,请确保按照README进行了正确的环境配置。
以DeepLabV3+为例,模型训练好之后,可以通过如下命令测试单张图片:
python3 tools/inference.py -f configs/deeplabv3plus_res101_voc_512size.py \
-w /path/to/model_weights.pkl \
-i ../../assets/cat.jpg
tools/inference.py
的命令行选项如下:
-f
, 测试的网络结构描述文件。-w
, 需要测试的模型权重。-i
, 需要测试的样例图片。
使用默认图片和默认模型测试的结果见下图:
以DeepLabV3+在Pascal VOC2012数据集上训练为例。
- 在开始训练前,请下载Pascal VOC2012数据集,并解压到合适的目录下。为保证一样的训练环境,还需要下载SegmentationClassAug。具体可以参照这个流程。
准备好的 VOC 数据目录结构如下:
/path/to/
|->VOC2012
| |Annotations
| |ImageSets
| |JPEGImages
| |SegmentationClass
| |SegmentationClass_aug
其中,ImageSets/Segmentation中包含了trainaug.txt。
注意:SegmentationClass_aug和SegmentationClass中的数据格式不同。
-
准备预训练的
backbone
网络权重:可使用 megengine.hub 下载megengine
官方提供的在ImageNet上训练的模型, 并存放在/path/to/pretrain.pkl
。 -
开始训练:
python3 tools/train.py -f configs/deeplabv3plus_res101_voc_512size.py -n 8 \
-d /path/to/VOC2012
tools/train.py
的命令行选项如下:
-f
, 所需要训练的网络结构描述文件。-n
, 用于训练的devices(gpu)数量。-w
, 预训练的backbone网络权重。-d
, 数据集的上级目录,默认/data/datasets
。-r
, 是否从已训好的模型继续训练,默认None
。
默认情况下模型会存在 log-of-模型名
目录下。
以DeepLabV3+在Pascal VOC2012数据集上测试为例。
在得到训练完保存的模型之后,可以通过tools下的test.py文件测试模型在验证集上的性能。
python3 tools/test.py -f configs/deeplabv3plus_res101_voc_512size.py -n 8 \
-w /path/to/model_weights.pkl \
-d /path/to/VOC2012
tools/test.py
的命令行选项如下:
-f
, 所需要测试的网络结构描述文件。-n
, 用于测试的devices(gpu)数量。-w
, 需要测试的模型权重。-d
,数据集的上级目录,默认/data/datasets
。
- Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation Liang-Chieh Chen, Yukun Zhu, George Papandreou, Florian Schroff, and Hartwig Adam. European Conference on Computer Vision (ECCV), 2018.