概述
在前边一篇文章,我们讲了如何复现论文代码,使用pascal voc 2012数据集进行训练和验证,具体内容可以参考《deeplab v3+在pascal_voc 2012数据集上进行训练》,在本篇文章,我们主要讲述,如何对deeplab v3+进行迁移学习,也即如何使用deeplab v3+算法来训练个人的数据集。
1. 数据集准备
首先在开始之前我们先对数据集做一个简单的说明,由于deeplabv3+
使用的TensorFlow
框架,并且为了提高训练的速度,因此在训练开始前,需要转换成tfrecorde
类型的文件来进行训练,因此,我们直接仿照pascal voc 2012数据集的数据结构来制作数据集,这样我们在训练所需图片准备完成之后可以直接复用转换tfrecorde
的脚本。
1.1 标注图片,获取json文件
古人有句话:兵马未动粮草先行,而对深度学习来说,粮草毫无疑问指的是训练的数据,毕竟我们最终的模型都是依靠数据来喂养出来的🐶!因此选择一个趁手的标注工具很重要,此处我推荐使用labelme
,标注起来相当方便。
下边我简单说一下lableme
的安装方法(此处建议使用Anconda来实现环境隔离)。
-
安装Ancodna环境,
执行如下命令:
conda create --name=labelme python=2.7(这一步python=*选择自己的Python版本) activate labelme
-
安装软件与依赖
conda install pyqt pip install labelme
-
启动与使用
activate labelme labelme
启动完成之后可以看到如下界面:

标注的时候,将物体用线条框起来即可,例如:

1.2 转换json,获取png图片
在图像标注完成之后,在我们对应设置的文件夹下有许多json,这些json文件记录了所标注图片的位置以及图片内容等信息,根据这些信息我们可以转换成训练所需要的mask图(此处是png格式的图片)。
虽然labelme
中包含labelme_json_to_dataset
来帮助我们将json图片转成png图片,但是该命令有一个巨大的缺点就是无法实现批量转换,因此需要我们自己写一个批量转换的脚本来辅助转换。
一个简单的转换脚本如下: