• ubuntu系统使用Faster RCNN训练自己的数据集


    本人使用的ubantu16.04系统,带有GPU处理器,环境配置安装就不说了。

    本次所使用的源码为:https://github.com/endernewton/tf-faster-rcnn

    一.下载Github代码

    git clone https://github.com/endernewton/tf-faster-rcnn.git
    

    二.更改配置

    cd ~/tf-faster-rcnn/lib
     
    vim setup.py
     
    

    因为本人使用的服务器为GTX 1080,因此改为sm_61,大家可以通过nvidia-smi查看自己电脑的GPU配置。

    三.编译

    在上一步那个lib 文件夹中进行:

    make clean
     
    make
     
    cd ..

    四.安装COCO API

    cd data
    git clone https://github.com/pdollar/coco.git
    cd coco/PythonAPI
    make
    cd ../../..

    五.下载数据并解压

    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
    tar xvf VOCtrainval_06-Nov-2007.tar
    tar xvf VOCtest_06-Nov-2007.tar
    tar xvf VOCdevkit_08-Jun-2007.tar 

    六.重命名

    手动将下载的数据集文件夹VOCdevkit修改名字为VOCdevkit2007放入faster rcnn目录下的Data文件夹里。也可以通过以下代码实现,改名字是因为代码中是VOCdevkit2007。

    cd $FRCN_ROOT/data
    ln -s $VOCdevkit VOCdevkit2007 
    

    七.下载预训练的模型

    这一步下载需要FQ往往下载不成功,因此可以在此网盘中下载https://pan.baidu.com/s/1kWkF3fT,下载后放在data目录下进行解压。

    tar xvf voc_0712_80k-110k.tgz
    

    八.建立预训练模型的软连接

    这一步的目的是在tf-faster-rcnn目录下建立output文件夹,并使用软连接来使用预训练模型,使用以下代码这里按照步骤走就行:

    NET=res101
    TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
    mkdir -p output/${NET}/${TRAIN_IMDB}
    cd output/${NET}/${TRAIN_IMDB}
    ln -s ../../../data/voc_2007_trainval+voc_2012_trainval ./default
    cd ../../..

    九.demo测试

    GPU_ID=0
    CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py

    十.使用自己的数据训练

    替换自己的数据,可参照另一篇博客:https://blog.csdn.net/hitzijiyingcai/article/details/81636455

    将制作好的数据放在data文件夹下,然后还要在其中新建一个txt文件,具体的位置及相关文件夹名称如图:

     

    十一.下载预训练模型

    首先下载VGG模型,网盘下载地址https://pan.baidu.com/s/1aD0jlYGHhZQeeTvNJy0GGQ,密码:45ef。

    在tf-faster-rcnn/data/目录下创建一个imagenet_weights文件夹,解压权重数据并把解压后的vgg_16.ckpt重命名为vgg16.ckpt,因为后面在调用权重数据的时候名字需要对应的上。

    可以说到这里就可以进行训练了,但是为了节省时间并排除错误,把迭代次数只设置了2000次,具体操作为:

    ./experiments/scripts/train_faster_rcnn.sh里的第22行把ITERS=70000改成ITERS=2000,

    同时把./experiments/scripts/test_faster_rcnn.sh的ITERS也改成2000。

    在tf-faster-rcnn/lib/datasets目录下的pascal_voc.py里第36行更改自己的类别,'__background__'切记不可删掉,把后面的原来的20个label换成自己的,不用更改类别数目,也没有地方可以更改。

     在tf-faster-rcnn/lib/datasets目录下的imdb.py中修改类别,类别+1,我的数据是两类。

    在开始训练之前,还需要把之前训练产生的模型以及cache删除掉,分别在tf-faster-rcnn/output/vgg16/voc_2007_trainval/default路径下和tf-faster-rcnn/data/cache路径下,然后再修改一些内容:

    在tf-faster-rcnn/tools目录下test_net.py文件中修改如下内容:哪些地方修改照着自己的目录修改

     然后修改同目录下的trainval_net.py文件中的内容:

     接下来可以进行训练和测试了

    GPU_ID=0
     
    ./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc vgg16

    GPU_ID=0
     
    ./experiments/scripts/test_faster_rcnn.sh 0 pascal_voc vgg16

    训练和测试结果就不展示了,展示demo测试的结果。

    十二.demo测试模型

    进行测试之前需要在tf-faster-rcnn/data/demo/目录下放入自己需要测试的图片

    在tf-faster-rcnn/tools/目录下的demo.py文件中修改如下内容:找到对应的位置修改即可

     

     

     修改图片名称,和放在demo文件夹中的图片名称一致,.jpg文件格式。

    ./tools/demo.py

    demo测试其中一类结果

     

    参考文章:

    1.https://blog.csdn.net/hitzijiyingcai/article/details/81808091

    2.https://blog.csdn.net/hitzijiyingcai/article/details/81914200

    3.https://blog.csdn.net/hitzijiyingcai/article/details/81347402

    作者:舟华520

    出处:https://www.cnblogs.com/xfzh193/

    本文以学习,分享,研究交流为主,欢迎转载,请标明作者出处!

  • 相关阅读:
    将现有MySQL数据库改为大小写不敏感
    在Windows中玩转Docker Toolbox
    使用ABP EntityFramework连接MySQL数据库
    数据库设计范式2——BC范式和第四范式
    让OData和NHibernate结合进行动态查询
    文档在线预览的实现
    有哪些老鸟程序员知道而新手不知道的小技巧?自我感受
    EEPROM的概念接口类型及软件实例
    flash的几种模式Normal Mode、DUAL Mode、Quad Mode的概念和区别
    ESP8266 打造一款物联网产品---搭建环境编译及烧录
  • 原文地址:https://www.cnblogs.com/xfzh193/p/11620788.html
Copyright © 2020-2023  润新知