一、说明

本文为系列博客第二篇,主要讲述笔者在使用该团队提供已经标注好的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文件过大,处理过程中出现了一些问题,后来放弃此种做法。

转载于:https://www.cnblogs.com/nightmoonzjm/p/cocostuff_trandefault.html

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

  1. 【NLP】bert4vec:一个基于预训练的句向量生成工具

    一个基于预训练的句向量生成工具 bert4vec:   https://github.com/zejunwang1/bert4vec 环境 transformers>=4.6.0,<5.0 ...

  2. python 将YOLO(txt)格式的标注数据批量转换为PascalVOC(XML)格式的标注数据

    python 将YOLO(txt)格式的标注数据批量转换为PascalVOC(XML)格式的标注数据 准备工作 修改代码路径 运行代码 程序bug(没时间看所以还没解决): 准备工作 需在目标文件夹中 ...

  3. python工具方法 18 labelme语义分割标注数据批量转换为png

    本实例代码主要使用labelme.utils.shapes_to_label方法实现批量将将labelme的语义分割标注数据转换为图片,支持将标注保存为实例分割训练图.语义分割训练图.语义分割+原图效 ...

  4. 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程

    一:前言介绍 LVI-SAM是Tixiao Shan的最新力作,Tixiao Shan是Lego-loam(基于激光雷达里程计的SLAM框架)和Lio-sam(基于惯性-雷达紧耦合的SLAM框架)的作 ...

  5. python 将PascalVOC(XML)格式的标注数据批量转换为YOLO(txt)格式的标注数据

    文章目录 20191022 20200523 第一次使用,修改了代码内容 使用方法 修改过的代码 20191022 引用文章:啊哈~发表第一篇博客,voc格式的标注数据转换为yolo格式的标注数据 i ...

  6. 【NLP】基于预训练的中文NLP工具介绍:ltp 和 fastHan

    1. 简介 2. ltp 2.1 工作流程 2.2 demo 2.3 词典分词 2.4 词性标注集 2.5 模型算法 3. fastHan 3.1 模型结构 3.2 demo 3.3 词典分词 3.4 ...

  7. ckpt下载 deeplabv3_tensorflow语义分割api使用(deeplab训练cityscapes)

    遇到的坑: 1. 环境: - tensorflow1.8+CUDA9.0+cudnn7.0+annaconda3+py3.5 - 使用最新的tensorflow1.12或者1.10都不行,报错:报错不 ...

  8. 【php毕业设计】基于php+mysql+apache的网络数据包分析工具设计与实现(毕业论文+程序源码)——网络数据包分析工具

    基于php+mysql+apache的网络数据包分析工具设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于php+mysql+apache的网络数据包分析工具设计与实现,文章末尾附有本毕业设 ...

  9. 预、自训练之争:谷歌说预训练虽火,但在标注数据上自训练更有效

    公众号关注 "视学算法" 设为 "星标",重磅干货,第一时间送达! 来源 | 机器之心 预训练是当前计算机视觉领域的主要范式,但何恺明等人先前的研究发现,预训练 ...

  10. 数据集标注工具_如何提高数据标注质量,提供精细化标注数据集?丨曼孚科技...

    监督学习下的深度学习算法训练十分依赖于标注数据,然而目前数据标注行业在精细化运营方面仍有诸多不足. 相关数据显示,当下数据标注行业单次交付达标率低于50%,三次内交付达标率低于90%,远远不能满足AI ...

最新文章

  1. uniapp 上拉加载更多完整实现源码
  2. java.net import_import java.net.URL;是什么类?
  3. 软件版本命名规范(转载)
  4. python顺序表代码_python实现顺序表的简单代码
  5. 水木告白工作室:Java从零入门之模仿头条资讯(一)
  6. 演示: 动态NAT完成网络地址翻译
  7. php 公众号验证回调方法_微信公众号关键词自动回复设置方法!
  8. okhttp 工具类_日语学习工具推荐,小白必备!
  9. Vue----常见面试题
  10. 棒!使用.NET Core构建3D游戏引擎
  11. 两个文本框异动任何一个能即时更新计算结果
  12. h5手机端浏览器机制_h5浏览器缓存机制
  13. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-3.登录检验JWT实战之封装通用方法...
  14. 电脑显示屏字体发虚、重影、部分清晰部分不清晰解决办法
  15. 《把时间当做朋友》读书摘记
  16. json生成shp_shp与json互转(转载)
  17. 面试题65:什么是虚拟dom
  18. 更加简便的使用VSS
  19. Birthday Paradox(生日悖论)(概率)
  20. 包,内部类,常用类,集合

热门文章

  1. 常见排序算法之插入排序
  2. 对springboot整合mybatis -- 不一样的看法
  3. Autoware docker 环境安装
  4. idea 错误: -source 1.6 中不支持 diamond 运算符的解决办法
  5. MySQL特有的SQL语句 第一弹
  6. 《众妙之门——用户体验设计的秘密》一1.4 良性的问题解决案例
  7. js操作checkbox(复选框)的方法总结
  8. Spring任务调度实战之Quartz Simple Trigger
  9. APUE读书笔记-18终端输入输出-09终端标识
  10. 一步一步学Silverlight 2系列(15):数据与通信之ASMX