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

    dataset

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

    models

    deeplab目录
    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文件过大,处理过程中出现了一些问题,后来放弃此种做法。

  • 相关阅读:
    三种方法
    渐渐明白
    出手的时候到了
    URL OpenDocument
    熟练使用IDT
    时间快到了
    还是这样
    接口的多态性
    接口(interface)的使用
    抽象类(abstract class)与抽象方法
  • 原文地址:https://www.cnblogs.com/nightmoonzjm/p/cocostuff_trandefault.html
Copyright © 2020-2023  润新知