一、说明

本文为系列博客第二篇,主要讲述笔者在使用该团队提供已经标注好的COCO数据集进行训练的过程。
由于在windows中编译Caffe和Deeplab特别的麻烦,笔者并没有去探索,后续可能会去尝试。所以整个过程都可以在linux系统中运行的,但为了标注方便,笔者采用服务器(linux)完成训练过程+windows完成标注过程的方式,并且此方式也十分有利于协同标注。

二、准备工作

安装软件:Matlab

建议到Matlab官网进行下载,安装过程应该不会有什么问题,笔者使用的版本为R2017,不过版本应该没什么影响。

安装库:Caffe

编译过程以及Caffe相关基础知识建议参考denny的学习专栏

安装库:Deeplab

编译过程建议参考博文:Deeplab v2 调试全过程(Ubuntu 16.04+cuda8.0)图像语义分割:从头开始训练deeplab v2系列,前者也是参考的后者博客,不过整理的过程更详细一点,不过里面有些许小问题,学习过程中最好两篇结合起来。
上述博文用的启动文件( run_pascal.sh)以及模型文件和本项目中的有所不同,建议主要通过上文学会整个过程,踩一下在编译过程中遇到的坑,后续可以将相应的配置替换即可。
不过因为配置有点复杂,没有替换到位会有很多意想不到的错误,还是建议通过上文大致跑通后,再依照此文步骤(略讲)再次下载编译与CocoStuff相对应的Deeplab文件。

下载项目:

项目源地址

三、目录解析

项目目录主要分为3部分:
1、标注工具部分
2、数据集部分
3、模型(训练部分)

annotator


annotator主要包含两部分:代码部分和数据部分。后续标注工程需要使用的一些脚本都写在此处,数据部分主要为了方便协同标注而设定的,分配的任务都对应的写在input/imageLists/目录下user的list文件内。

dataset


下载数据集的脚本都在这些文件中,后续下载好的数据都会在此文件下。

models


cocostuff目录主要是训练的配置文件、数据集、数据列表、训练模型的存放处。deeplab-public-ver2目前没内容,后续需要将deeplab2安装编译在此目录下。

四、运行脚本

数据准备部分

下载好项目后,在Matlab中进入项目目录下
-Matlab中运行:startup()进入项目环境
-Matlab中运行:demo_cocoStuff()查看demo效果(可跳过)
-linux中运行:wget --directory-prefix=downloads http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/cocostuff-10k-v1.1.zip
unzip downloads/cocostuff-10k-v1.1.zip -d dataset/将数据集下载下来;如果是windows系统可以直接去对应网址下载,然后解压到对应目录下即可。
-Matlab中运行:
CocoStuffClasses.showClassHierarchyStuffThings()查看标签的层次结构图(可跳过)
-Matlab中运行:CocoStuffAnnotator()打开标注工具进行尝试,因为本篇主要讲述使用标注好的数据的过程,可跳过。

训练部分

-Linux中运行:git submodule update --init models/deeplab/deeplab-public-ver2下载deeplab
-修改deeplab配置文件并编译:
cd models/deeplab/deeplab-public-ver2
cp Makefile.config.example Makefile.config
make all -j8(有问题参考“准备工作”中的博客)
cd ../..
-创建供给训练的相关文件夹:
mkdir models/deeplab/deeplab-public-ver2/cocostuff && mkdir models/deeplab/deeplab-public-ver2/cocostuff/data
cd models/deeplab/cocostuff/data && ln -s ../../../../dataset/images images && cd ../../../..
-将准备好的标注文件转换为deeplab认识的格式:
startup()
convertAnnotationsDeeplab()
-下载model:
wget --directory-prefix=models/deeplab/cocostuff/model/deeplabv2_vgg16 http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/deeplabv2_vgg16_init.caffemodel
-以上均没报错,就可以开始训练了:
cd models/deeplab && ./run_cocostuff_vgg16.sh

五、备注

在运行这些命令的时候如果没有报错的话,其他先不用考虑,能保证运行起来再进行标注方面的学习。
训练默认为训练集9000张,测试集1000张,迭代20000次,每10000次生成一次model,生成的model保存在cocostuff10k/models/deeplab/cocostuff/model目录下
训练完成后的测试结果为mat文件,保存在cocostuff10k/models/deeplab/cocostuff/data/feature/fc8目录下

然后通过运行
mat = load(fileName)
imagesc(mat.varName)
来借助Matlab自带的,可将矩阵图可视化的函数imagesc大致查看下训练的效果。
更专业的准确的检测训练效果的方法,是使用IoU重叠度检测的方法,简单的说就是:取训练结果和真实结果的交集与并集之比。但是因为笔者暂时还没找到合适的脚本(肯定已经有现成的轮子),此事暂时搁置。

*注:此处类似于Deeplab v2 调试全过程中的create_labels_21.py的作用,但是因为我们这里使用的类别为182类,无法直接使用这个脚本。笔者有去查看该脚本的内容,主要是对应21种类别进行RGB三通道赋值,然后通过python调用调色板工具,进行着色而已。但是笔者按照这样思路,创建了一个182类的调色脚本(create_labels_182.py)但是好像因为mat文件过大,处理过程中出现了一些问题,后来放弃此种做法。

CocoStuff—基于Deeplab训练数据的标定工具【二、用已提供的标注数据跑通项目】的更多相关文章

  1. CocoStuff—基于Deeplab训练数据的标定工具【一、翻译】(未完)

    一.CocoStuff简介 CocoStuff是一款为deeplab设计的,运行在Matlab中的语义标定工具,其标定结果和结合Deeplab训练出的结果均为mat文件格式,该项目源码已在github ...

  2. CocoStuff—基于Deeplab训练数据的标定工具【三、标注工具的使用】

    一.说明 本文为系列博客第三篇,主要展示COCO-Stuff 10K标注工具的使用过程及效果. 本文叙述的步骤默认在完成系列文章[二]的一些下载数据集.生成超像素处理文件的步骤,如果过程中有提示缺少那 ...

  3. CocoStuff—基于Deeplab训练数据的标定工具【五、训练成果分析】

    一.说明 本文为系列博客第五篇,主要展示训练的结果,以及对训练进行分析. *注:暂未进行大量的数据训练以及IoU测算,目前只做到使用Matlab将训练结果的mat文件可视化. 二. *占坑

  4. CocoStuff—基于Deeplab训练数据的标定工具【四、用该工具标定个人数据】

    一.说明 本文为系列博客第四篇,主要讲述笔者在正式使用该工具使用自定义标签标注自己的图片的过程. 二.数据整理 相信大家已经在 *占坑

  5. 基于Java的简易表达式解析工具(二)

    之前简单的介绍了这个基于Java表达式解析工具,现在把代码分享给大家,希望帮助到有需要的人们,这个分享代码中依赖了一些其他的类,这些类大家可以根据自己的情况进行导入,无非就是写字符串处理工具类,日期处 ...

  6. 开源 Web 相册程序: Photoview 和数据可视化生成工具:Datawrapper

    Photoview Photoview是一个开源 Web 相册程序,Go 语言写的,使用 Docker 安装,可以用来快速架设个人相册. github地址:https://github.com/pho ...

  7. 数据科学中的R和Python: 30个免费数据资源网站

    1 政府数据 Data.gov:这是美国政府收集的数据资源.声称有多达40万个数据集,包括了原始数据和地理空间格式数据.使用这些数据集需要注意的是:你要进行必要的清理工作,因为许多数据是字符型的或是有 ...

  8. 一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解

    文章标题: 一行导出所有任意微软SQL serer数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解 关键字 : mssql-scripter,SQL Server 文章分 ...

  9. 初识TPOT:一个基于Python的自动化机器学习开发工具

    1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...

随机推荐

  1. 【转】Linux 高级的视角来查看Linux引导过程

    [原文]https://www.toutiao.com/i6594210975480545800/ 1.概述 图 1 是我们在20,000 英尺的高度看到的视图. 当系统首次引导时,或系统被重置时,处 ...

  2. 看代码网备份|利用WebClient|eKing.CmdDownLoadDbBakOper|实现定时拷贝数据库备份文件到文件服务器

    摘要: 1.有两台服务器 (1)看代码网(记为A):内网IP:10.186.73.30 (2)文件服务器(记为B):内网IP:10.135.87.157 2.在A架设一个网站,端口8088(防火强设置 ...

  3. Custom Voice 操作步骤

    首先,准备数据 1.Unicode格式的Transcript 2wav格式语音数据,并打包 好,现在POSTMAN进行api测试. 先拿着订阅密钥(Subscription Key)获取令牌(Toke ...

  4. 关于idea通过smalidea无源调试apk

    idea 14.0.2 可以使用 smalidea 0.03 单步时,只能按照源码中的行号(line xxx)指定的行跳动, 可以使用鼠标选中变量即时查看变量值 idea 16/17 可以使用smal ...

  5. windows的一些好用命令-自己总结:

    在win+R运行框中:     cmd:进入命令行界面     msconfig:可以查看“系统配置”     msinfo32:查看系统信息     services.msc打开"服务&q ...

  6. csv文件的读取

    .csv Introduction CSV是一种常以逗号或者制表符分割的文件格式. 利用Excel创建一个csv文件 用记事本打开,实际上是这样子的: 读取csv文件 直接用open()打开 with ...

  7. 关于Javascript的des加密

    参考文章:https://www.cnblogs.com/MSMXQ/p/4484348.html 需要先下载CryptoJS文件,然后引入其中的两个文件,可以在github中找到. 直接上代码 &l ...

  8. Python3 中 sys.argv[ ]的用法解释

    sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白.因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list), ...

  9. BZOJ3211:花神游历各国(线段树)

    Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 5 5 1 1 2 2 1 2 1 1 2 2 2 3 ...

  10. Object Detection API 相关

    训练官方提供的数据集: http://blog.csdn.net/LiJiancheng0614/article/details/77756252 训练自己的数据集(墙外): https://medi ...