实验向:用FPN训练自己的数据集,以docker为例

1.从github上clone对应的FPN的repository,我下载的是下面这个

$ git clone https://github.com/unsky/FPN.git

 

2. 下载VOC2007,2012以及ResNet50.caffemodel,

数据集VOC2007下载链接为 https://pan.baidu.com/s/1kXb26VX  密码:uvlj ,下载完之后把它放在data目录下

模型下载链接为 https://onedrive.live.com/?authkey=%21AAFW2-FVoxeVRck&id=4006CBB8476FF777%2117887&cid=4006CBB8476FF777,下载完之后把它放在data/models/models目录下

 

3.编译caffe

在docker hub上pull下来了我的基础镜像之后,我在容器里对caffe进行编译,

基础镜像为uhub.ucloud.cn/uaishare/gpu_uaitrain_ubuntu-14.04_python-2.7.6_caffe-py-faster-rcnn

$ sudo docker pull uhub.ucloud.cn/uaishare/gpu_uaitrain_ubuntu-14.04_python-2.7.6_caffe-py-faster-rcnn

然后通过Dockerfile将我本地的/服务器上的已经添加了数据集以及模型的FPN文件添加到我的基础镜像之中,即

$ vi Dockerfile

$ From uhub.ucloud.cn/uaishare/gpu_uaitrain_ubuntu-14.04_python-2.7.6_caffe-py-faster-rcnn

$ ADD ./FPN /root/FPN

以上我使用的基础镜像其中包括了py-faster-rcnn,我选择将其删除,即

$ rm -r /root/py-faster-rcnn

接下来就是最恶心的编译,刚开始是规规矩矩按照github上的步骤,即

$ cd /FPN/caffe-fpn

$ mkdir build && cd build

$ cmake ..

$ make -j16 all

$ cd /FPN/lib

$ make

由于我的基础镜像中没有cmake,我就用wget从url上下载了cmake,后来发现这就是我陷入困境的最大的bug之一,即

$ wget https://cmake.org/files/v3.10/cmake-3.10.2.tar.gz

$ tar -xzvf cmake-3.10.2.tar.gz

$ mv cmake-3.10.2 cmake

$ cd cmake 

$ ./bootstrap

$ make -j8

$ sudo make install

然后我就遇到了一系列bug,这里跳过,安装完成之后我继续对caffe-fpn进行cmake,然后报错

Looking for pthread_create in pthreads - not found

据说好像是cmake版本的问题,因此我就去寻找archive下载,后来依然报错,就想起了之前复现rbg的faster r-cnn的时候似乎并没有用到cmake的命令,所以在我纠结了大概三四五六天之后我决定跳过cmake,转而下面这条路线:

$ cd /FPN/lib

$ make

$ cd /FPN/caffe-fpn

$ make -j8 && make pycaffe

测试是否编译成功,

$ cd /FPN/caffe-fpn/python/caffe

$ python

$ import caffe #没有报错就应该是成功了

 

4.跑demo

编译完之后我做的第一件事情是在服务器上跑了一下demo,由于服务器上看不到图形界面,但是还是可以看到结果如何,由于我发现github上FPN的作者不是官方,而且似乎是将rbg的faster r-cnn拷贝过来之后做了一些相应修而成的,所以对于demo还要对其做以下修改:

$ vi /FPN/tools/demo.py

$ NETS = {'vgg16': ('VGG16',

                  'VGG16_faster_rcnn_final.caffemodel'),
        'zf': ('ZF',
                  'ZF_faster_rcnn_final.caffemodel')}

 

将代码中的上面部分改为下面部分

$ NETS = {'vgg16': ('FPN',

                  'VGG16_faster_rcnn_final.caffemodel'),
        'zf': ('ZF',
                  'ZF_faster_rcnn_final.caffemodel')}

以及main函数中,

$ prototxt = os.path.join(cfg.MODELS_DIR, NETS[args.demo_net][0],

                            'faster_rcnn_alt_opt', 'faster_rcnn_test.pt')

 

改为

$ prototxt = os.path.join(cfg.MODELS_DIR, NETS[args.demo_net][0],

                            'FP_NET_end2end', 'solver.prototxt')

保存之后,

$ cd /FPN

$ python ./tools/demo.py

即可。

 

5.开始训练自己的数据

建立一个文件夹

$ mkdir train_with_battery_20180305

文件夹结构如下:

 

Dockerfile  code  data  experiments  output  pack-run.cmd  run.sh

下面分别介绍每一个文件/文件夹的情形:

Dockerfile的目的是用来建立一个训练镜像,内容如下:

 

FROM 19940608/prepo:battery-train-20180210

ADD ./code/ /data/

ADD run.sh /data/

实际上基础镜像应该是你最开始搭好FPN的那个镜像,我这里是另外一个镜像,理解大致意思就好

code文件夹主要包含的就是FPN下面的lib和tools文件夹,其中lib下面有些文件因为numpy版本的问题,需要修改一下,参考:https://github.com/ucloud/uai-sdk/tree/master/examples/caffe/train/faster-rcnn 即可。

data文件夹包含了FPN下面的models以及从网上下载的VOCdevkit2007文件

 

6. 开始训练自己的数据

这个训练文件夹是公司的前辈建的,里面的基本文件如下:

 

Dockerfile  README.md  batch_test  config.json  config.py  config.pyc  config_docker.json  data  docker-compose.yml  main.py  pytests  requirements.txt  src

Dockerfile的具体内容如下:

 

FROM 19940608/prepo:battery-train-20180210_2

MAINTAINER hongpu

WORKDIR /data

COPY ./ /data

RUN cp config_docker.json ./config.json

EXPOSE 7912 5000

RUN echo 'export PYTHONPATH=/root/FPN/lib:$PYTHONPATH' >> /root/.bashrc

RUN pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

 

batch_test是测试进行的核心文件夹,内容如下:

 

README.MD  __init__.py  faster_rcnn_test.py  images  output  simhei.ttf

其中faster_rcnn_test.py为测试的核心python文件,主要是对tools里面的test_net.py等几个python文件进行了整合,使得更加简洁。images主要用来存放测试图片,output主要用来存储测试图片后的结果。

几个config文件即为配置文件,接下来是data文件夹,其内容为下:

 

labels  models  test_sets  trained_models

labels主要存放模型标签,比如对应的分类标签;models存放的是test.prototxt;test_sets存放的是测试图片的名称;trained_models存放的是训练所得到的模型。

main.py是测试主程序

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值