CocoStuff—基于Deeplab训练数据的标定工具【二、用已提供的标注数据跑通项目】
一、说明
本文为系列博客第二篇,主要讲述笔者在使用该团队提供已经标注好的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训练数据的标定工具【二、用已提供的标注数据跑通项目】的更多相关文章
- CocoStuff—基于Deeplab训练数据的标定工具【一、翻译】(未完)
一.CocoStuff简介 CocoStuff是一款为deeplab设计的,运行在Matlab中的语义标定工具,其标定结果和结合Deeplab训练出的结果均为mat文件格式,该项目源码已在github ...
- CocoStuff—基于Deeplab训练数据的标定工具【三、标注工具的使用】
一.说明 本文为系列博客第三篇,主要展示COCO-Stuff 10K标注工具的使用过程及效果. 本文叙述的步骤默认在完成系列文章[二]的一些下载数据集.生成超像素处理文件的步骤,如果过程中有提示缺少那 ...
- CocoStuff—基于Deeplab训练数据的标定工具【五、训练成果分析】
一.说明 本文为系列博客第五篇,主要展示训练的结果,以及对训练进行分析. *注:暂未进行大量的数据训练以及IoU测算,目前只做到使用Matlab将训练结果的mat文件可视化. 二. *占坑
- CocoStuff—基于Deeplab训练数据的标定工具【四、用该工具标定个人数据】
一.说明 本文为系列博客第四篇,主要讲述笔者在正式使用该工具使用自定义标签标注自己的图片的过程. 二.数据整理 相信大家已经在 *占坑
- 基于Java的简易表达式解析工具(二)
之前简单的介绍了这个基于Java表达式解析工具,现在把代码分享给大家,希望帮助到有需要的人们,这个分享代码中依赖了一些其他的类,这些类大家可以根据自己的情况进行导入,无非就是写字符串处理工具类,日期处 ...
- 开源 Web 相册程序: Photoview 和数据可视化生成工具:Datawrapper
Photoview Photoview是一个开源 Web 相册程序,Go 语言写的,使用 Docker 安装,可以用来快速架设个人相册. github地址:https://github.com/pho ...
- 数据科学中的R和Python: 30个免费数据资源网站
1 政府数据 Data.gov:这是美国政府收集的数据资源.声称有多达40万个数据集,包括了原始数据和地理空间格式数据.使用这些数据集需要注意的是:你要进行必要的清理工作,因为许多数据是字符型的或是有 ...
- 一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解
文章标题: 一行导出所有任意微软SQL serer数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解 关键字 : mssql-scripter,SQL Server 文章分 ...
- 初识TPOT:一个基于Python的自动化机器学习开发工具
1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...
随机推荐
- AndroidManifest 配置主活动
在activity标签中写如下代码: <activity android:name=".MainActivity" android:label="This is M ...
- Android高级_第三方下载工具Volley
Volley下载主要应用于下载文本数据和图片数据两个方向,下面分别介绍: 一.使用Volley开启下载,首先要做的是导包和添加权限: (1)在build.gradle文件中导入依赖包:compile ...
- MySQL基础之 AUTO_INCREMENT
AUTO_INCREMENT AUTO_INCREMENT是mysql唯一扩展的完整性约束,当为数据库表中插入新纪录时,字段上的值会自动生成唯一的ID,再具体设置AUTO_INCREMENT约束时,一 ...
- EXI6.0的安装(找不到网卡、找不到磁盘)
给一台华为2488 V5 服务器安装EXI6.0服务 (问过华为售后不支持EXI5.5的安装,建议EXI6.0及以上版本) 根据界面提示信息按“Del”.进入BIOS设置界面 参考博客地址:https ...
- [Python] 同时安装了python2和python3时,pip命令该如何使用?
当python2和python3同时安装windows上时,它们对应的pip都叫pip.exe,所以不能够直接使用 pip install 命令来安装软件包. 而是要使用启动器py.exe来指定pip ...
- 类与对象 - Java学习(二)
弄清楚类与对象的本质与基本特征,是进一步学习面向对象编程语言的基本要求.面向对象程序设计与面向过程程序设计在思维上存在着很大差别,改变一种思维方式并不是一件容易的事情. 一.面向对象程序设计 程序由对 ...
- 旋转的地球css3
css3果然博大精深: 1.代码里面还有用box-shadow制作椭圆形阴影的效果,厉害了!之前找了好久都没找到,今天给找到了 html: <section class="stage& ...
- 【转】1.2 CDN的基本工作过程
1.2 CDN的基本工作过程 使用CDN会极大地简化网站的系统维护工作量,网站维护人员只需将网站内容注入CDN的系统,通过CDN部署在各个物理位置的服务器进行全网分发,就可以实现跨运营商.跨地域的用 ...
- loglevel-metamask
pimterry/loglevel https://github.com/pimterry/loglevel Minimal lightweight simple logging for JavaSc ...
- yarn的学习-1-包管理工具
https://yarn.bootcss.com 使用yarn的原因: 1.速度超快 Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载. 同时利用并行下载以最大化资源利用率,因此安装速度更快 ...