在上篇博文中,我详细的介绍了如何在数据集Cityscapes复现Deeplab(v3+),这篇文章主要介绍一下对数据集VOC2012的验证。
一、参考资料:
1、官方代码:githup
2、大神博客:https://blog.csdn.net/qq_32799915/article/details/80070711
二、准备工作:
环境:
关于如何配置tensorflow环境以及路径的导入请见上文:https://blog.csdn.net/qq_38437505/article/details/82952024
数据集准备:
1、下载数据集:
自己先下好voc2012的数据集,解压放在本地。
我的本地数据存在目录如下:
图中:除了SegmentationClassRaw和tfrecord之外的几个文件夹是有下载的数据集解压得到的,而SegmentationClassRaw和tfrecord这两个文件夹使我们自己创建的;SegmentationClassRaw: 是我们将原始的三通道(彩色)Lable转换成单通道(黑白)的,详细转换过程见下步;**tfrecord:**是我们将图片和单通道lable转换用于tensorflow计算的数据格式,转换过程见下.
3、数据格式转换:
- 三通道—to—单通道
下载的数据集中只提供了三通道(彩色)的标注(lable)(SegmentationClass文件夹中),但是我们训练和后面的测试中必须得用到单通道(黑白)的,所以第一步应该将其进行转换(不过我不是很明白为嘛训练要用单通道的,难道是因为单通道的计算量小,希望哪路大神看见此文帮我解答一下);官方提供的代码中提供了格式转换文件【/home/jerry/Deeplab/research/deeplab/datasets/remove_gt_colormap.py】,我在看博文时发现有大神用其他代码转换格式的,很厉害。我就直接用了官方的,代码很简单。我编了个sh脚本文件,直接调用该文件,不需要对【remove_gt_colormap.py】进行任何修改。
转换成后的数据存储在SegmentationClassRaw中,该文件夹最好自己先建好,然后在sh中修改相关路径就ok。 - 生成tfrecord文件
官方提供的文件中,同样有将voc2012数据转换成tfrecord的代码【/home/jerry/Deeplab/research/deeplab/datasets/build_voc2012_data.py】,同样,编写sh脚本文件,修改部分路径,然后直接生成tfrecord文件,代码见上图后半部分。同样,最好先自己建立tfreord文件夹。 - 参数说明:
–image_folder=“保存images的路径” \
–semantic_segmentation_folder=“保存labels的路径” \
–list_folder=“保存train.txt文件的路径” \
–image_format=“jpg(image格式)” \
–output_dir=“生成tfrecord格式的数据所要保存的位置”
数据都准备好了之后,就可以直接开始调用代码,进行训练和测试了。
三、训练
训练这部分,没有什么难的,直接将官方代码运行就好。个人为了麻烦,全部将需要调参的写成了sh脚本文件,下面直接贴出我的代码。
脚本中的相关参数含义可见我的上文https://blog.csdn.net/qq_38437505/article/details/82952024
利用官方提供的ckpt,我训练的loss大约1.4左右。
四、测试:
利用官方的训练ckpt模型,我的最终,Miou达到了81.5%,由于机器以及部分参数的原因,没法达到论文中准确率。
五、可视化结果
最后将我最终得到训练结果给大家看看,还是很不错的。