用deeplabV3+训练自己的数据集并导出.pb模型进行可视化测试
本文介绍deeplabv3+训练模型并做可视化测试,这里有一篇ckpt模型转tflite并在Android端部署的文章可供参考
一.环境配置和前期准备
1.下载tensorflow的deeplabV3+开源项目
2.安装CUDA10.0
3.安装cudnn7.6.5(需和CUDA的版本对应)
4.安装anaconda3
5.用anaconda3新建虚拟环境(python用3.7),教程
6.在虚拟环境中安装tensorflow-gpu
pip install tensorflow-gpu==1.15.3
7.在虚拟环境中进到第一步下载的项目的*/research/slim文件夹下删除BUILD文件,运行:
python setup.py build
python setup.py install
并添加环境变量:运行export PYTHONPATH=$PYTHONPATH:pwd:pwd/slim
二.数据集的处理
1.数据集文件夹格式:

其中train.txt文件为训练的图片的名称,不带后缀名
val.txt文件为验证的图片的名称,不带后缀名
trainval.txt文件为所有的图片的名称,不带后缀名
JPEGImages存放所有的RGB图片(.jpg格式)
SegmentationClass存放所有与JPEGImages对应的标签图片(.png格式,单通道)
2.在VOC下新建tfrecord文件夹
3.修改build_data.py文件的image_format的png为jpg,如下:
tf.app.flags.DEFINE_enum('image_format', 'jpg', ['jpg', 'jpeg', 'png'],
'Image format.')
4.修改build_voc2012_data.py
tf.app.flags.DEFINE_string('image_folder',
'./VOC/JPEGImages',
'Folder containing images.')
tf.app.flags.DEFINE_string(
'semantic_segmentation_folder',
'./VOC/SegmentationClass',
'Folder containing semantic segmentation annotations.')
tf.app.flags.DEFINE_string(
'list_folder',
'./VOC/ImageSets/Segmentation',
'Folder containing lists for training and validation')
tf.app.flags.DEFINE_string(
'output_dir',
'./VOC/tfrecord',
'Path to save converted SSTable of TensorFlow examples.')
_NUM_SHARDS = 4 #生成tfrecord文件夹中的文件数
三.模型的训练
1.下载预训练模型
2.修改data_generator.py 文件,将自己的数据集加入到里面
_MYDATA = DatasetDescriptor(
splits_to_sizes={
'train': 20281, # num of samples in images/training
'val': 2798, # num of samples in images/validation
'trainval': 23079
},
num_classes=2,
ignore_label=255,
)
_DATASETS_INFORMATION = {
'cityscapes': _CITYSCAPES_INFORMATION,
'pascal_voc_seg': _PASCAL_VOC_SEG_INFORMATION,
'ade20k': _ADE20K_INFORMATION,
'mydata':_MYDATA,
}
3.修改train_utils.py
exclude_list = ['global_step', 'logits']
if not initialize_last_layer:
exclude_list.extend(last_layers)
4.修改train.py
flags.DEFINE_string('train_logdir', "./datasets/VOC/trainout",
'Where the checkpoint and logs are stored.')
flags.DEFINE_integer('training_number_of_steps', 5000,
'The number of steps used for training') ########### 迭代次数
flags.DEFINE_integer('train_batc

本文详细指导如何配置环境,处理VOC数据集,训练DeepLabV3+模型,从ckpt转为tflite并在Android部署,以及可视化测试过程。
最低0.47元/天 解锁文章
2794

被折叠的 条评论
为什么被折叠?



