用deeplabV3+训练自己的数据集并导出.pb模型进行可视化测试

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

用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的pngjpg,如下:

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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值