使用的代码:kwotsin所写的Tensorflow版,180星
记录一下训练的过程,方便以后翻阅。
首先是数据集的准备,数据集的文件夹结构为:
├── test
├── testannot
├── train
├── trainannot
├── val
└── valannot
由上到下分别是测试集、测试集标签、训练集、训练集标签、验证集、验证集标签。
我的数据集为640*480的图片,1800张用于训练,74张用于验证,对应的标签(label)图片为灰度图,使用labelme标注的json文件得到。
这里要特别说明一下,json文件需要解析之后才能得到我们的标签图片,我使用了网上的几个脚本,都存在不同图片中相同的分类对应的序号不同,比如我的数据集中,道路类在第一张图中是2,第二张图中变成了3,这就导致训练的时候会造成神经网络产生困扰,无法有效的学习到特征。因此我使用了labelme作者的脚本,labelme2voc.py,是生成voc数据集格式的脚本,其中的label图可以保证每一类的编号都是统一的。但是这个脚本转换完成的label图却是8-bit的RGB图,是无法直接使用这个版本的ENet进行训练的,否则会遇到问题: