目录
前言
最近在接触一个项目,要用到语义分割,如果大家有什么问题,都可以跟我沟通交流。除了通过博客交流外,欢迎你加入我的QQ群:326866692,一起交流有关于区块链、机器学习、深度学习、计算机视觉有关内容。我现在处于广泛涉猎阶段,希望我们能够一起沟通。下图是我的群二维码:
上一次我们说到了将label标签提取出来,提取方式如下:
一、文件的归属
文件的归属是说将对应的文件放到对应的文件夹下,所有的文件是有自己的存放位置,不是随意乱放的
官方给出的推荐文件目录如下:
我的目录如下:
防止大家混乱,我只说与本文相关的文件夹的存放内容。后续文章中我会专门说明所有文件夹的存放内容。
我们这次只用到两个二级文件夹:
tfrecord:存放生成的tf文件。
VOC2019:主要用到该文件夹下面的三个文件夹:
(1)ImageSets:用到Segmentation文件夹,该文件夹下存放train.txt和val.txt两个txt文件。train中存放训练集的名称,val中存放验证集的名称。
(2)JPEGImages:存放初始jpg图片与后来生成的png图片,如果本身初始数据集图片就是png,那只有png就可以了。
(3)SegmentationClass:存放label标签图片。注意这个图片是单通道的,简单理解就是黑白图像,按照我前面的转化label的方式生成的直接是单通道的,无需大家再转化。
2、图片的转存
这个图片指的是label图片和原图
1.原图
原图必须是png格式的,因为我做数据集的时候的图片是jpg 的,所以这个里面我还要讲png文件再存进来,前面生成label图像时,就生成了对应的png文件,按照相同的提取方法:
将png格式的图片提取到 JPEGImages 文件夹下。
2.label图像
label图像必须是单通道的png图片。我们需要将前面转存到单独文件夹下的png图片存在 SegmentationClass 文件夹下。
3.转存图像须知
因为这个比较重要,再强调一下:
(1)原图必须为png格式;
(2)label图像必须为单通道png格式;
(3)原图与label图像和train.txt和val.txt文件中的名称一一对应。
二、tf文件生成
打开 build_voc2012_data.py 文件,修改如下的内容:
tf.app.flags.DEFINE_string(
'image_folder', #保存images的路径
'D:/zyt/DLProject/deeplab/datasets/Pascal_Voc/VOC2019/JPEGImages',
'Folder containing images.')
tf.app.flags.DEFINE_string(
'semantic_segmentation_folder', #保存labels的路径
'D:/zyt/DLProject/deeplab/datasets/Pascal_Voc/VOC2019/SegmentationClass',
'Folder containing semantic segmentation annotations.')
tf.app.flags.DEFINE_string(
'list_folder', #保存train.txt 和 val.txt 文件的路径
'D:/zyt/DLProject/deeplab/datasets/Pascal_Voc/VOC2019/ImageSets/Segmentation',
'Folder containing lists for training and validation')
tf.app.flags.DEFINE_string(
'output_dir', # 生成tfrecord格式的数据所要保存的位置
'D:/zyt/DLProject/deeplab/datasets/Pascal_Voc/tfrecord',
'Path to save converted SSTable of TensorFlow examples.')
修改中间位置的内容,即修改路径:
(1)'image_folder' :保存images的路径
(2)'semantic_segmentation_folder' :保存label图像的路径
(3)'list_folder' :保存train.txt 和 val.txt 文件的路径
(4)'output_dir' :生成tfrecord格式的数据所要保存的位置
三、预调试
接下来就是预调试,右键点击文件运行就可以了。
为什么是预调试呢?因为可能会出现错误,我们需要不断地解决这些问题,可能出现的问题是找不到png文件,那就是图像路径有问题,或者文件名称对不上,注意检查一下上面强调的问题。
四、执行
解决完所有问题就是执行代码了,右键点击文件运行。我使用了1000张训练集图片,100张验证集图片。执行如下:
生成的文件如下,因为我没有在trainval.txt文件夹中设置数据集,所有生成的文件为空。