Deeplabv3训练自己数据集并批量预测图片

将最近自己跑deeplabv3的过程与遇到的问题记录下来,希望能帮到大家。主要工作:利用deeplabv3训练自己的数据集,将模型导出并批量预测图片。实现了输入大图检测并输出大图检测结果。下面是与文章有关的代码:

labelme批量转换json文件

调用deeplabv3的pb文件对大幅图像进行检测

deeplabv3调用pb模型批量预测图片

deeplabv3代码

代码环境:python3.5,tensorflow1.6,win10

 

1.数据集制作

1.1 标注图像

数据集制作我用的是github上的开源标注软件labelme,对图像类别和区域进行标注。标注后生成json文件,再利用lablelme自带的转换文件,将json文件转换为标注图像。json文件批量转换工具labelme批量转换json文件。

我原始数据为10000×10000的大图,裁剪为500×500的小图后进行标注与训练。

1.2 格式转换

由于deeplabv3需要输入灰度图像,因此需要将彩色的标注图像转为灰度图像。在githun上提供的deeplab代码中,图片是不能直接送入网络的,需要先转换为tf文件。因此,我们利用deeplab中的build_voc2012_data.py文件制作tf格式文件,将下图的相应参数改成自己数据对应的文件夹就可以了。

Deeplabv3训练自己数据集并批量预测图片_第1张图片

2.模型训练

在train.py文件对相应参数进行修改,主要包括下面几个参数:

ckpt文件保存位置

Deeplabv3训练自己数据集并批量预测图片_第2张图片learning rate及其下降速度

batchsize大小

cropsize大小

atrous_rates

训练的数据集及其位置

在训练过程中,可以在保存ckpt的文件夹用tensorboard --logdir = '  '来监测loss等

3.模型预测

利用vis.py文件对图片进行预测

vis.py文件中,许多参数与train.py文件中参数相似,有相同的参数改为与train.py相同就可以。

你预测图片保存位置

训练模型的保存位置

Deeplabv3训练自己数据集并批量预测图片_第3张图片

Deeplabv3训练自己数据集并批量预测图片_第4张图片

4.模型导出

利用export_model.py将模型导出

你的ckpt模型保存位置

导出的.pb模型保存位置

Deeplabv3训练自己数据集并批量预测图片_第5张图片其他参数

5.调用模型批量预测

调用.pb模型,对图片进行批量预测。因为预测结果生成的灰度图像,我把灰度图像转换成了rgb图像,这样更加容易看出类别。代码。deeplabv3调用pb模型批量预测图片

6.大图检测

我的原始数据是10000×10000的大图,经过裁剪得到了500✖500的小图,但是最终还是要对大图进行检测并输出大图。基本思路是对大图进行裁剪成500✖500的小图,对小图进行检测,将小图检测结果最终拼接为大图。代码。调用deeplabv3的pb文件对大幅图像进行检测

你可能感兴趣的:(Deeplabv3训练自己数据集并批量预测图片)