概述
Deeplab系列,是图像语意分割的经典之作,用深度学习的方法实现图像分割,绕不过系统学习Deeplab系列,而学习的最快途径就是先把demo跑起来,之后再去细读文献和代码。
本博客主要是基于v2版本的deeplab,使用VGG16模型,在VOC2012数据集上进行测试!
参考了很多博客的精华,但是有些博客记录的不是很全,核心资料就是参看官网:deeplab_v2
我把我的踩坑过程记录如下,让自己再熟悉一遍。记录按照demo运行顺序进行:
收集处理数据:
文章中的数据集由两部分组成,已经有人写好脚本,可以直接从网上拉下来,这样就不去网页上自己手动搜索了。
下载脚本如下:
# 这里建议自己建立一个data文件夹,存放相关数据
# augmented PASCAL VOC #增强数据集
mkdir -p ~/DL_dataset
cd ~/DL_dataset #save datasets 为$DATASETS
wget http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/semantic_contours/benchmark.tgz # 1.3 GB
tar -zxvf benchmark.tgz
mv benchmark_RELEASE VOC_aug
# original PASCAL VOC 2012 #原始数据集
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar # 2 GB
tar -xvf VOCtrainval_11-May-2012.tar
mv VOCdevkit/VOC2012 VOC2012_orig && rm -r VOCdevkit
数据转换 :
- 因为pascal voc2012增强数据集的label是mat格式的文件,所以我们需要把mat格式的label转为png格式的图片,脚本如下:
cd ./DL_dataset/VOC_aug/dataset
if [ ! -d cls_png ];
then
mkdir cls_png
else
echo dir exist
fi
cd ../../../
python3 ./mat2png.py ./DL_dataset/VOC_aug/dataset/cls ./DL_dataset/VOC_aug/dataset/cls_png
- pascal voc2012原始数据集的label为三通道RGB图像,但是caffe最后一层softmax loss 层只能识别一通道的label,所以此处我们需要对原始数据集的label进行降维,脚本如下:
cd ./DL_dataset/VOC2012_orig
if [ ! -d SegmentationClass_1D ];
then
mkdir SegmentationClass_1D
else
echo dir exist
fi
cd ../../
python3 convert_labels.py ./DL_dataset/VOC2012_orig/SegmentationClass/ ./DL_dataset/VOC2012_orig/ImageSets/Segmentation/trainval.txt ./DL_dataset/VOC2012_orig/SegmentationClass_1D/
为了方便直接使用图片,我们将图片两个图片源合并,且将文件夹改成train.txt里要求的形式:
脚本如下:
cp ./DL_dataset/VOC2012_orig/SegmentationClass_1D/* ./DL_dataset/VOC_aug/dataset/cls_png
cp ./DL_dataset/VOC2012_orig/JPEGImages/* ./DL_dataset/VOC_aug/dataset/img/
echo "复制完毕"
cd ./DL_dataset/VOC_aug/dataset
mv ./img ./JPEGImages
mv ./cls_png ./SegmentationClassAug
echo "文件夹改名"
echo "查看JPEGImages文件数量:"
cd ./JPEGImages
ls -l | grep "^-" | wc -l
echo "查看SegmentationClassAug文件数量::"
cd ../SegmentationClassAug
ls -l | grep "^-" | wc -l
到此处,在 /DL_dataset/VOC_aug/dataset文件夹中
- images数据集的文件名为:JPEGImages ,jpg图片数由5073变为17125
- labels数据集文件名为:cls_png ,png图片数由11355变为12031
数据收集工作也到此结束。
数据收集完之后第二步,就是建立一些文件夹,开始一些配置工作,之后就可以把数据扔进caffe里训练了。
配置环境
参看官方文档: