Deeplab V3+训练过程
0. 参考链接
TensorFlow实战:Chapter-9上(DeepLabv3+代码实现)主要参考1
TensorFlow实战:Chapter-9下(DeepLabv3+在自己的数据集训练)主要参考2
图像语义分割 — 利用Deeplab v3+训练自己的数据 loss震荡解决办法
图像语义分割 —利用Deeplab v3+训练VOC2012数据集用VOC训练
deeplabv3+Xception讲了一些概念
图像语义分割 Deeplab v3+报错[predictions out of bound]解决办法
Tensorflow - 语义分割 Deeplab API 之 Demo 主要是对demo的讲解,这个博主的其他博客也很好
Deeplab v3 (2): train.py、eval.py源码分析
---------------------------感谢这些博主的无私奉献!------------------------------
1. 制作数据集
使用labelme制作。
1.1. 制作json文件。
labelme的打开:
cxx@cxx-211:~/labelmemaster$ python labelme/main.py
1.2. 批量转换 json–png
[关于labelme做数据集](下面所提到的三段代码在这个笔记里,注意更改)
-
调整label.png为灰度图
-
批量转换
cxx@cxx-211:~/labelmemaster$ python labelme/cli/json_to_dataset.py /home/cxx/labelmemaster/data # 后者是json文件所在文件夹
会生成5个文件,如:000000.png、000000_gt.png、000000_viz.png、info.yaml、label_names.txt。其中_gt.png是所需要的label文件。
-
提取所有的_gt.png文件
cxx@cxx-211:~/labelmemaster$ python get_gt.py
1.3. 数据集目录制作
目录如下:
#from /home/cxx/Deeplab/models/research/deeplab/datasets/screw_seg/
+ image
+ mask
+ index
- train.txt
- trainval.txt
- val.txt
+ tfrecord
-
iamge和mask
-
iamge中存放所有的输入图片,包括训练、测试、验证集的图片
-
mask中存放所有的labeled图片,,和输入图片(即iamge)是一一对应的
-
PS:这里需要注意一个点,image和mask的文件名应该一致,且全部小写,上一步产生的iamge后缀大写,用 rename ‘y/A-Z/a-z/’ * 修改,,mask文件名是000000_gt.png,用 rename ‘s/_gt.png/.png/’ ./* 修改,这样image和mska的文件名就能对应。对应代码如下:
rename 's/\_gt.png/.png/' ./* #修改后缀 rename 'y/A-Z/a-z/' * #全部小写
-
-
index
该目录下包含三个.txt文件:
train.txt:所有训练集的文件名称 trainval.txt:所有验证集的文件名称 val.txt:所有测试集的文件名称
这三个文件的生成文件是/home/cxx/Deeplab/models/research/deeplab/datasets/screw_seg/train_data.py,命令如下:
cxx@cxx-211:~/