Deeplabv2-pytorch
写在前面
本博客参考的代码:https://github.com/zhoulukuan/deeplab_v2_pytorch
deeplabv2论文地址:https://arxiv.org/pdf/1606.00915.pdf
数据集介绍
文章中使用的数据集并不全是pascal-voc2012,而是由voc2012和另外一个数据集合并而成,需要用到JPEGImages和SegmentationClassAug.
模型介绍
1、deeplabv2改进点
- 最大的改进就是采用了ASPP(atrous spatial pyramid pooling)模块,成功地融合了多尺度信息。
- Atrous Convolution取代原本的上采样的方法,比之前得到更高像素的score map,在不增加参数数量和计算量的情况下,有效地扩大感受野,以获得更多的上下文信息;
- 全连接的CRF,利用底层的细节信息对分类的局部特征(边缘)进行优化
与deeplabv1的区别还有,deeplabv2使用resnet和vggnet进行实验,但是deeplabv1仅仅使用了vggnet。整体的deeplabv2结构图如下所示:
2、Atrous Convolution
1维展示:
其中rate表示膨胀因子 ,空洞卷积公式如下所示:
公式中的 y是输出信号,x是输入信号,w是卷积模板,K是滤波器长度,r则是输入信号的采样间隔。
2维展示 :
空洞卷积的两种实现方式介绍参考:空洞卷积实现方式
3、 ASPP
具体结构如图所示:
通过不同的rate构建不同感受野的卷积核,从而获得多尺度的对象信息;
4、CRF
作者使用全连接的条件随机场获取细节信息。详细内容可参考:
CRF大白话解释
结果展示
demo.py
运行demo.py可以得到如下结果:
输入命令:
python demo.py --img_path path/to/your/img(输入自己的图片路径)
在image文件夹下测试test.jpg的结果如下图所示:
上侧为原图,下侧为结果:
trainval.py
运行trainval.py(由于电脑算力有限,将cfgs中的MAX_ITERS设为4000),运行结果如下:(只贴出了开始迭代的部分和结束迭代的部分)
test.py
没有刻意的记录运行时间,但是不超过5个小时,运行完成,最后的结果Mean IOU=73.10%