用于语义图像分割的带空洞可分离卷积的编解码器 论文 源码 讲解
下面第一个是原作者提供的代码,基于tf.contrib.slim。第二个代码是网友实现的,基于tf.estimator。tf.estimator是比tf.contrib.slim更高级的API,能同时训练和验证模型。[更多]
Tensorflow/model下面的源码
- 安装tensoeflow-gpu==1.9.0(python2.7),较低版本tf会出现这样的错误:
AttributeError: module 'tensorflow.python.platform.flags' has no attribute 'DEFINE_multi_float'
- 安装pillow。
- 下载源码models-master。
- 找到models-master/research/deeplab。
- 把models-master/research/slim拷贝到deeplab文件夹。
- 把models-master/research/slim/nets拷贝到deeplab文件夹。
- 测试环境:
添加环境变量: export PYTHONPATH=$PYTHONPATH:/home/<path before deeplab> 在deeplab的外层文件夹: python deeplab/model_test.py 在deeplab文件夹: 创建文件夹deeplab/datasets/pascal_voc_seg,在该文件夹下载PASCAL VOC 2012数据集,并产生4个文件夹。然后执行训练、验证、可视化 sh local_test.sh
- 说明:执行sh local_test.sh生成的数据与项目路径有关,所以项目路径更改后要删除文件夹deeplab/datasets/pascal_voc_seg,并重新生成。
- 在PASCAL VOC 2012数据集上运行。
rishizek提供的源码
- 下载源码,命名为DeepLabv3p。
- 下载PASCAL VOC training/validation data和augmented segmentation data。数据组织方式:
DeepLabv3p -dataset --VOCdevkit ---VOC2012 ----Annotations ----ImageSets ----JPEGImages ----SegmentationClass ----SegmentationClassAug(来自增广数据集,注意里面只有图片没有文件夹) ----SegmentationObject
- 生成TFRecord数据:
python create_pascal_tf_record.py \ --data_dir dataset/VOCdevkit/VOC2012/ \ --image_data_dir JPEGImages \ --label_data_dir SegmentationClassAug 这会生成dataset/voc_train.record和dataset/voc_val.record。
- 下载pre-trained Resnet v2 101模型,这样存放:
output -init --eval.graph#没用 --resnet_v2_101.ckpt --train.graph#没用
- 训练:
python train.py \ --batch_size=4 \(默认是10) --model_dir output/model \ --pre_trained_model output/init/resnet_v2_101.ckpt 会创建文件夹:output/eval
- 可视化:tensorboard --logdir output
- 测试任意张图片:使用自己训练的模型或下载作者提供的模型:
python inference.py \ --data_dir output \#测试图片的路径 --infer_data_list output/sample_images_list.txt \#测试图片的路径列表(data_dir后的XXX/XXX.jpg) --model_dir output/model#模型文件
-
相关源码解读。