win10+tensorflow+cuda+cudnn,实现deeplabv3语义分割自己的数据集

**

参考:

**
1.使用 deeplabv3+ 训练自己的数据集经验总结
2.window环境下进行deeplab_tensorflow实验之第一阶段
3.window环境下进行deeplab_tensorflow实验之第二阶段
4.deeplab_v3 实现 制作并训练自己的数据集——个人采坑

**

一、前期环境准备

**
1.环境配置
我的环境为win10+tensorflow1.12+cuda9.0+cudnn7.3.1,使用python3.6.2-0,配置环境使用Anaconda4.7.10。

2.下载对应版本的tensorflow模型库,1.12对应库链接https://github.com/tensorflow/models/tree/r1.12.0

3.安装依赖库(详见deeplab介绍:https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/installation.md
· Numpy
· Pillow 1.0
· tf Slim (which is included in the “tensorflow/models/research/” checkout)
· Jupyter notebook
· Matplotlib

4.Windows系统中添加tf.slim的路径至系统
windows 系统下要在py脚本中动态添加地址,即将 deeplab 文件夹下的 train.py, eval.py, vis.py, export_model.py ,model_test.py这5个脚本的开头加如下语句,且必须加在 import deeplab 语句之前。

import sys
sys.path.append(r'D:\Code\tf-models\research')
sys.path.append(r'D:\Code\tf-models\research\slim')  # 以上两处的路径请按照真实的路径添加

5.环境测试
在tensorflow/models/research/下运行model_test.py

python deeplab/model_test.py

如果环境正确,则提示:

Ran 5 tests in 10.758s

6.发生错误怎么办
大多数问题在网上都可找到答案,“错啥搜啥,缺啥装啥”。至此,前期工作结束。

**

二、制作数据集

**
仿照PASCAL VOC 2012数据集格式,制作自己的数据集,使用原料为labelme;正式开始之前,最好将数据集大小整理成统一尺寸,做好命名!!!
1.下载PASCAL VOC 2012数据集并复制,清空所有文件,这里的目的是获得该数据集的结构。实际上,如果仅仅用于分割,那么并不需要完整结构,仅做成如下格式即可。

 VOCdevkit
    └── VOC2012
        ├── ImageSets
        │   └── Segmentation
        ├── JPEGImages
        ├── SegmentationClass
        ├── SegmentationClassRaw

ImageSets/Segmentation:存放图像列表,格式为txt,内容为图像名称编号
JPEGImages: 存放图像原图
SegmentationClass: 存放标好的mask图,即labels
SegmentationClassRaw:去除colormap后的mask图。

2.使用labelme标注数据
(1)激活环境,输入 labelme,即可打开标注器进行标注,设置好原图文件夹,标注文件夹和标注类型。标注后应生成.json文件。
(2)转换.json文件,在环境下使用如下语句,配置好文件路径,即可在输出文件夹中生成解析后的子文件夹(命名为原图对应的名称),每个包含5个文件

python json_to_dataset.py D:/dataset/input -o D:/dataset/output

5个文件分别为:img.png,info.yaml,label.png,label_names.txt,label_viz.png,代表含义为:
原图,标注信息,分割图即带colormap的mask,分割名称,分割视图可视化。至此实现标注。

3.将子文件夹中的label.png文件统一转移至SegmentationClass中
为此,找到一段以前写的MATLAB程序,实现label.png文件的重命名和转移。
A:子文件夹的上一层文件夹名称
B:SegmentationClass文件夹的相对路径

clc
clear all
close all

%% 读入需要处理的图片信息
file_path =  'A\';                            % 要处理的图片的文件夹
img_path_list = dir(strcat(file_path,'*.jpg'));        % 要处理的图片的详细信息
img_num = length(img_path_list);                       % 要处理的图片的个数

%% 导出图片的路径配置
new_folder = 'B\';            
mkdir(new_folder);                                      % 创建文件夹
addpath(new_folder);                                    % 添加文件夹路径

%% 重命名并转移文件夹
for m = 1:img_num
    image_name = img_path_list(m).name;
    I =  imread(strcat(file_path,image_name));                % 读入第m个图片
    J = imresize(I,[240 320]);
    imwrite(J,[new_folder,image_name]);                       % 新尺寸保存在文件夹下
end

至此完成数据集制作。

**

三、训练前数据处理

**
1.按照官方文档将数据文件放置为如下图的目录结构(没有某个文件夹就新建一个):

deeplab/datasets/你的数据集名称
├── exp
│   └── train_on_train_set
│       ├── eval
│       │   └── events.out.tfevents....
│       ├── export
│       │   └── frozen_inference_graph.pb
│       ├── train
│       │   ├── checkpoint
│       │   ├── events.out.tfevents....
│       │   ├── graph.pbtxt
│       │   ├── model.ckpt-0.data-00000-of-00001
│       │   ├── model.ckpt-0.index
│       │   ├── model.ckpt-0.meta
│       │   └── .
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值