编写翻译配置,1编写翻译配置

近来在做一个Object
Detective
的花色,这里用的是Caffe,假若同学你还没装上Caffe的话,能够参见小编前边写的篇章:Ubuntu
14.04LTS + Caffe+ CUDA8.0 + OpenCV 3.1.0 + cuDNN 8.0

多年来在做三个Object
Detective
的体系,这里用的是Caffe,要是同学你还没装上Caffe的话,可以参谋笔者以前写的文章:Ubuntu
14.04LTS + Caffe+ CUDA8.0 + OpenCV 3.1.0 + cuDNN 8.0

法斯特RCNN 操练本身多少集 (1编译配置)

1,下载编写翻译fast-rcnn

fast-rcnn下载地址 

Clone the Fast R-CNN repository

#Make sure to clone with
–recursive(那样clone下来的是富含rgb大神的caffe版本)

git clone –recursive

安装编写翻译仿效:www.jianshu.com/writer#/notebooks/17157779/notes/17808729

接下去编写翻译frcnn…

编译Cython模块

cd $FRCN_ROOT/lib

make

举个例子提醒未有Cython 模块

消除办法:sudo apt-get install pip

                      pip install Cython

www.5929.com 1

Caffe搭好明白后,再来看那篇。(那与事先法斯特 PAJERO-CNN
1.编写翻译配置的搭建大概,近乎一致)

Caffe搭好了随后,再来看那篇。

转发请注解出处,楼燚(yì)航的blog,

2,编译caffe

cd $FRCN_ROOT/caffe-fast-rcnn

修改Makefile.config

# In your Makefile.config, make sure to have thislineuncommented

WITH_PYTHON_LAYER :=1

make -j8 && make pycaffe

标题:cudnn6.0版本太新面世的难点,用新型的caffe版本的cudnn有关的文本替换掉旧版本的公文

clone py-faster-rcnn

此处,大家先下载Ross Girshick大神在Github上的叁个库。

# Make sure to clone with --recursive$ git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git

如大神所言,记得加上–recursive

clone fast-rcnn

那边,大家先下载Ross Girshick大神在Github上的一个库。

# Make sure to clone with --recursive$ git clone --recursive https://github.com/rbgirshick/fast-rcnn.git

如大神所言,记得加上–recursive

那是小编在github上修修改改的多少个公文的链接,求星星啊,求星星啊(原谅小编那么不要脸~~)

法斯特RCNN是罗斯尔 Girshick在RCNN的根基上平添了Multi task
training整个的教练进度和测量检验进度比RCNN快了不知凡几。其他一些细节不开展,过几天会上传FastRCNN的舆论笔记。法斯特RCNN mAP品质上略有回升。法斯特RCNN中,提取OP的进程和教练进程还是是分离的。因而大家在磨练进程中,须要用OP的章程先把图像OP提取好,再送入法斯特RCNN中磨炼,在检查实验进度中也是那样要求先把相应的测量试验图像的OP提收取来送入检查实验。

率先小编要说的是怎么设置法斯特 RCNN遭逢,具体的流水生产线在RossGirshick的Github上有,他里面根本是教学了怎么样设置和平运动用。小编会稍微提到这一局地情节,首要教师,假诺要练习本人的数码,应该修改那个地点,并把小编自身演习的进度跟我们享用一下。

3.下载预计算的讴歌RDX-CNN检查实验器

大意600多M,百度网盘

链接: 密码: 16ar

Build the Cython modules

从下文最初,笔者将用$FRCN_ROOT来代表上面git
clone下来的文件目录路线。如直接放在home下,$FAST_ROOT被轮换为/home/cap/py-faster-rcnn(注意,此处的cap是本身的顾客名,应该换到你自个儿的)

$ cd $FRCN_ROOT/lib$ make

Build the Cython modules

从下文伊始,小编将用$FRCN_ROOT来表示上边git
clone下来的文件目录路线。如直接放在home下,$FAST_ROOT被交换为/home/cap/fast-rcnn(注意,此处的cap是自己的客户名,应该换来你和睦的)

$ cd $FRCN_ROOT/lib$ make

1.本来是Git clone一下罗斯尔的工程啦

此间给出Github的链接
第一依据他的唤起

Make sure to clone with –recursive
git clone –recursive

此地并非忘了加–recursive

4,测试Demo

cd$FRCN_ROOT

./tools/demo.py

报错:no module named ***

用pip安装非常快  需求立异一下pip源

cd /home/mahxn0

mkdir .pip

vim .pip/pip.conf  输入以下保存就可以

[global]

index-url =

[install]

trusted-host=mirrors.aliyun.com

Build Caffe and pycaffe

在编写翻译在此之前,先来做下希图干活。

  • $FRCN_ROOT/caffe-fast-rcnn目录下的Makefile.config.example编写翻译配置,1编写翻译配置。文件复制一份,重命名字为Makefile.config

  • 修改Makefile.config的相干项

...USE_CUDNN = 1 //此项默认是关闭的,若你安装了cudnn,则把前面的#去掉,让其支持cudnn.WITH_PYTHON_LAYER = 1 //这项默认也是关闭的,应该打开,去掉前面的#USE_PKG_CONFIG = 1 //此项默认也是关闭的,应该打开,去掉前面的## CPU_ONLY := 1 //此项默认是关闭的,如果你的机器不支持gpu计算,则将其打开,去掉前面的注释CUDA_DIR := /usr/local/cuda //注意此项,应该和你安装的cuda的路径相同OPENCV_VERSION := 3 //此项默认也是关闭的,应该打开,去掉前面的#BLAS := atlas //我不太确定这项是什么,貌似与先前搭建Caffe时有关,在此处选择默认的,即不用修改

在做到了前边的办事后,初阶编译pycaffe。

$ cd $FRCN_ROOT/caffe-fast-rcnn$ make -j8 && make pycaffe
  • 编写翻译pycaffe时,作者的机器报错了
AR -o .build_release/lib/libcaffe.aLD -o .build_release/lib/libcaffe.so/usr/bin/ld: cannot find -lippicvcollect2: error: ld returned 1 exit statusmake: *** [.build_release/lib/libcaffe.so] Error 1
  • 消除措施:把OpenCV下的libippicv.a文件复制到/usr/local/lib目录下,然后重新编写翻译pycaffe。具体操作如下:复制libippicv.a文件

$ cd /usr/local/opencv-3.1.0/3rdparty/ippicv/unpack/ippicv_lnx/lib/intel64$ sudo cp libippicv.a /usr/local/lib

接下来重新编写翻译pycaffe

$ cd $FRCN_ROOT/caffe-fast-rcnn$ make clean #清除前面的$ make -j8 && make pycaffe

Build Caffe and pycaffe

在编写翻译以前,先来做下筹算干活。

  • $FRCN_ROOT/caffe-fast-rcnn目录下的Makefile.config.example文件复制一份,重命名称为编写翻译配置,1编写翻译配置。Makefile.config

  • 修改Makefile.config的连带项

...USE_CUDNN = 1 //此项默认是关闭的,若你安装了cudnn,则把前面的#去掉,让其支持cudnn.WITH_PYTHON_LAYER = 1 //这项默认也是关闭的,应该打开,去掉前面的#USE_PKG_CONFIG = 1 //此项默认也是关闭的,应该打开,去掉前面的## CPU_ONLY := 1 //此项默认是关闭的,如果你的机器不支持gpu计算,则将其打开,去掉前面的注释CUDA_DIR := /usr/local/cuda //注意此项,应该和你安装的cuda的路径相同

在成功了前头的做事后,开端编写翻译pycaffe。

$ cd $FRCN_ROOT/caffe-fast-rcnn$ make -j8 && make pycaffe
  • 编译pycaffe时,小编的机器报错了
AR -o .build_release/lib/libcaffe.aLD -o .build_release/lib/libcaffe.so/usr/bin/ld: cannot find -lippicvcollect2: error: ld returned 1 exit statusmake: *** [.build_release/lib/libcaffe.so] Error 1
  • 消除方法:把OpenCV下的libippicv.a文件复制到/usr/local/lib目录下,然后再度编写翻译pycaffe。具体操作如下:复制libippicv.a文件

$ cd /usr/local/opencv-3.1.0/3rdparty/ippicv/unpack/ippicv_lnx/lib/intel64$ sudo cp libippicv.a /usr/local/lib

然后再一次编写翻译pycaffe

$ cd $FRCN_ROOT/caffe-fast-rcnn$ make clean #清除前面的$ make -j8 && make pycaffe

2.在此处大约介绍一下工程目录

第一工程的根目录轻巧的称之为 FRCN_ROOT,能够见见根目录下有以下多少个公文夹

  • caffe-fast-rcnn

    此地是caffe框架目录

  • data

    用来寄放pretrained模型 比如imagenet上的,以及读取文件的cache缓存

  • experiments

    存放配置文件以及运营的log文件,别的这么些目录下有scripts
    用来赢得imagenet的模型,以及作者磨练好的fast
    rcnn模型,以及对应的pascal-voc数据集

  • lib

    用来寄放一些python接口文件,如其下的datasets首要负担数据库读取
    config担当cnn一些磨炼的计划选项

  • matlab

    放置matlab与python的接口,用matlab来调用达成detection

  • models

    中间寄放了多个模型文件,Mini互联网的CaffeNet 大型网络VGG16
    中型网络VGG_CNN_M_1024

  • output

    那边贮存的是教练成功后的出口目录,暗中同意会在default文件夹下

  • tools

    其间贮存的是陶冶和测量试验的Python文件

5.制作本身的voc数据集修改练习网络

数码放到data/VOCdevkit二〇〇六/VOC二零零六目录上边

自己用的是ZF网络  只须求修改以下几处地点就可以

www.5929.com 2

Download pre-computed Fast R-CNN detectors

此间是下载一些教练模型,在那篇博客里,我们先用我曾经磨练好的caffe模型,看下fast-rcnn的效应:

$ cd $FRCN_ROOT$ ./data/scripts/fetch_faster_rcnn_models.sh

下载完后,在$FRCN_ROOT/data/faster_rcnn_models下有2个模型,分别为

.├── VGG16_faster_rcnn_final.caffemodel└── ZF_faster_rcnn_final.caffemodel

$FRCN_ROOT/data/scripts下,有三个shell文件

.├── fetch_faster_rcnn_models.sh├── fetch_imagenet_models.sh└── fetch_selective_search_data.sh

此处援引楼燚航同桌的牵线:第一是小编陶冶好的faster_rcnn模型,第叁个是imagenet_model上预演习好的模型,第四个对应着的是作者依据PascalVOC数据集提取的selective_search预选框。假如想要看一下faster
rcnn的效应,能够向来加载Ross陶冶好的faster_rcnn模型,假若要团结演练以来,记得加载imagenet模型

在初阶前,你或者需求先安装相关的Python module

$ sudo pip2 install easydict$ sudo pip2 install pyyaml

开首跑动demo

cd $FRCN_ROOT./tools/demo.py

借令你的gpu品质不加,那么恐怕出现类似如下的谬误

Loaded network /home/hadoop/py-faster-rcnn/data/faster_rcnn_models/VGG16_faster_rcnn_final.caffemodelF0319 16:20:55.433835 29960 relu_layer.cu:26] Check failed: error == cudaSuccess  invalid configuration argument*** Check failure stack trace: ***Aborted (core dumped)
  • 解决办法:使用比较小的网络模型

$ cd $FRCN_ROOT$ ./tools/demo.py --net zf
  • 譬如是您的机械不协助GPU,那么记得在前方的Makefile.config文件去掉 #
    CPU_ONLY := 1 前面的#,使用CPU总括,然后此处跑动demo时,敲入

$ cd $FRCN_ROOT$ ./tools/demo.py --cpu
  • 想打听越来越多的操作,敲入

$ cd $FRCN_ROOT$ ./tools/demo.py -husage: demo.py [-h] [--gpu GPU_ID] [--cpu] [--net {vgg16,zf}]Faster R-CNN demooptional arguments: -h, --help show this help message and exit --gpu GPU_ID GPU device id to use [0] --cpu Use CPU mode (overrides --gpu) --net {vgg16,zf} Network to use [vgg16]
  • Ross Girshick大神在Github上的搭建表明

  • 小咸鱼_校友的法斯特er-RCNN+ZF用本身的数据集中练习练模型

  • 庞贝船长的法斯特 凯雷德-CNN 1.编写翻译配置

Download pre-computed Fast R-CNN detectors

这边是下载一些教练模型,在那篇博客里,我们先用小编曾经陶冶好的caffe模型,看下fast-rcnn的效能:

$ cd $FRCN_ROOT$ ./data/scripts/fetch_fast_rcnn_models.sh

下载完后,在$FRCN_ROOT/data/fast_rcnn_models下有多个模型,分别为

.├── caffenet_fast_rcnn_iter_40000.caffemodel├── vgg16_fast_rcnn_iter_40000.caffemodel└── vgg_cnn_m_1024_fast_rcnn_iter_40000.caffemodel

$FRCN_ROOT/data/scripts下,有三个shell文件

.├── fetch_fast_rcnn_models.sh├── fetch_imagenet_models.sh└── fetch_selective_search_data.sh

此处引用楼燚航同学的牵线:第一是笔者练习好的fast_rcnn模型,第贰个是imagenet_model上预练习好的模型,第多个对应着的是笔者依据PascalVOC数据集提取的selective_search预选框。假诺想要看一下fast
rcnn的成效,能够一直加载罗斯尔磨练好的fast_rcnn模型,如若要团结磨练以来,记得加载imagenet模型

在起初前,你恐怕要求先安装相关的Python module

$ sudo pip2 install easydict

初阶跑动demo

cd $FRCN_ROOT./tools/demo.py

运转结果:结果跑出了3张图,这里贴出在那之中一张结果的功能图

www.5929.com 3demo

若果您的gpu质量不加,显存小于3G,那么大概出现就像如下的失实

Loaded network /home/hadoop/fast-rcnn/data/fast_rcnn_models/vgg16_fast_rcnn_iter_40000.caffemodel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Demo for data/demo/000004.jpgF0314 16:28:23.588573 5987 syncedmem.cpp:51] Check failed: error == cudaSuccess  out of memory*** Check failure stack trace: ***Aborted (core dumped)
  • 化解办法:使用一点都不大的互联网模型

$ cd $FRCN_ROOT$ ./tools/demo.py --net caffenet
  • 借使是你的机器不扶助GPU,那么记得在后边的Makefile.config文件去掉 #
    CPU_ONLY := 1 前面的#,使用CPU总计,然后此处跑动demo时,敲入

$ cd $FRCN_ROOT$ ./tools/demo.py --cpu
  • 想询问更加多的操作,敲入

$ cd $FRCN_ROOT$ ./tools/demo.py -husage: demo.py [-h] [--gpu GPU_ID] [--cpu] [--net {vgg16,caffenet,vgg_cnn_m_1024}]Train a Fast R-CNN networkoptional arguments: -h, --help show this help message and exit --gpu GPU_ID GPU device id to use [0] --cpu Use CPU mode (overrides --gpu) --net {vgg16,caffenet,vgg_cnn_m_1024} Network to use [vgg16]
  • Ross Girshick大神在Github上的搭建表达

  • 楼燚航同桌的法斯特 RCNN 磨练本人数据集

  • dengshuai_super同学的/usr/bin/ld: 找不到 -lippicv(ubuntu 16.04
    LTS 安装opencv-3.1.0,含完整安装步骤)中的解决方案三

3.编译Cython module

cd $FRCN_ROOT/lib
make

进去lib目录直接make就足以了

6.起先练习

./experiments/scripts/faster_rcnn_end2end.sh 0 VGG_CNN_M_1024
pascal_voc

问题1:KeyError  HP

标记的数码标签不能够有大写的

批量交换掉:

grep -rl “HP” | xargs sed -i ‘s/HP/hp/g’

问题2:AttributeError: ‘module’ object has no attribute ‘text_format’

sudo pip install –upgrade protobuf

在文件./lib/fast_rcnn/train.py扩大一行import
google.protobuf.text_format 就能够缓和难点

教练进程:

www.5929.com 4

rpn迭代完报错:TypeError: ‘numpy.float64’ object cannot be interpreted
as an index

报错原因numpy1.11之上不辅助浮点运算,网络看了人家的皆以说:sudo pip
install -U numpy==1.11.0

唯独安装之后提示ImportError: numpy.core.multiarray failed to import

末了Google化解了特殊要求修改一下源码:

solution:

Try to change the file in lib/roi_data_layer/minibatch.py

change the following lines:

line 55

for im_i in xrange(num_images):

labels, overlaps, im_rois, bbox_targets, bbox_inside_weights

= _sample_rois(roidb[im_i], int(fg_rois_per_image),
int(rois_per_image),

int(num_classes))

line 98

if fg_inds.size > 0:

fg_inds = npr.choice(

fg_inds, size=int(fg_rois_per_this_image), replace=False)

line 110

if bg_inds.size > 0:

bg_inds = npr.choice(

bg_inds, size=int(bg_rois_per_this_image), replace=False)

line 124

bbox_targets, bbox_inside_weights = _get_bbox_regression_labels(

roidb[‘bbox_targets’][keep_inds, :], int(num_classes))

add

start = int(start)

end = int (end)

after line 175

potential cause:

According to some materials, the error is caused by numpy.

the version higher than 1.11.0 may not support float. therefore int(*)
is needed.

修改完事后:pip install -U python-numpy

作者未来的版本是numpy-1.13.1    cudnn6.0  cuda8.0  opencv3.2

4.编译Caffe and pycaffe

cd $FRCN_ROOT/caffe-fast-rcnn
make -j8 && make pycaffe

那边要求小心的是你直接make -j8 && make pycaffe是会报错的,

能够旁观图中是是不曾Makefile.config文件,可是小编有二个Makefile.config.example文件,你需求复制它须臾间然后重命名字为Makefile.config

www.5929.com 5

亟需专心的是在那之中还只怕有多少个布局必要丰裕

  • 打开 USE_CUDNN = 1,那些选项暗中同意情状下时关闭的,让CUDA补助DNN

  • 打开 WITH_PYTHON_LAYEPRADO =
    1,那么些在私下认可景况下也是关闭的,法斯特RCNN需求协理Python接口,由此须要开拓

  • FastRCNN供给hdf5的补助,这几个依据自身的Linux里的库文件安装路线增多,不通晓的可以find一下,可是貌似景观下,INCLUDE_DIRAV4S
    应该添加上 /usr/include/hdf5/serial LIBRARY_DIRS 添加上
    /usr/lib/x86_x64-linux-gnu/hdf5/serial

  • 另外把USE_PKG_CONFIG = 1
    记得展开,要不然会找不到有些库文件,PKG是linux用来处理库文件

那多少个是亟需在Makefile.config.example中期维修改的,最佳直接copy一个再修改。
别的还会有二个索要潜心的地点是,当初楼主的linux版本太高,ubuntu那东西更新太快了,boost库的本子太高,FastRCNN里面用的是1.55版本的boost库,当时自己Computer上是1.59,会油但是生接口不包容,记得是裁撤了多少个接口,编写翻译报错,装回1.55的就可以了

7,测试

将练习取得的py-faster-rcnn\output\faster_rcnn_alt_opt\***_trainval中ZF的caffemodel拷贝至py-faster-rcnn\data\faster_rcnn_models(若无这些文件夹,就新建二个),然后,修改:

py-faster-rcnn\tools\demo.py,主要修改:

a,

CLASSES = (‘__background__’,

www.5929.com,’你的标签1′, ‘你的价签2’, ‘你的竹签3’, ‘你的标签4’)

改成你的数量集标签;

b,

NETS = {‘vgg16’: (‘VGG16’,

‘VGG16_faster_rcnn_final.caffemodel’),

‘zf’: (‘ZF’,

‘ZF_faster_rcnn_final.caffemodel’)

地方ZF的caffemodel改成你的caffemodel。

c.

im_names = [‘8.jpg’,’75.jpg’,’141.jpg’,

‘488.jpg’,’966.jpg’,’1013.jpg’,’1334.jpg’,’1052.jpg’]

改成你的测量检验图片。(测验图片放在py-faster-rcnn\data\demo中)

5.下载相应的模型文件

Ross给出的操作是这么的,其实小编不引入这么弄,因为直接用wget去下载的快慢一点也不慢,大家能够展开个中的shell文件,把url粘贴出来,到迅雷里面下载,几分钟就好了

cd $FRCN_ROOT
./data/scripts/fetch_fast_rcnn_models.sh

此间以相应的
imagenet_model为例,你到目录下得以见见3个shell文件,分别是fetch_fast_rcnn_models.s
h,fetch_imagenet_models.sh,fetch_selective_search_data.sh,第一是小编陶冶好的fast_rcnn模型,第三个是imagenet_model上预陶冶好的模型,第四个对应着的是作者根据PascalVOC数据集提取的selective_search预选框。假设想要看一下fast
rcnn的效能,能够一贯加载罗斯尔磨练好的fast_rcnn模型,若是要协调陶冶以来,记得加载imagenet模型

这里是imagenet_model的shell文件,看家里面包车型大巴U大切诺基L了没,最后的U奥迪Q5L链接就是这几个链接再增加FILE变量,链接,你一直把它链接起来,复制到迅雷中下载就足以了,速度灰常快,间接下载的话炒鸡慢啊。
下在以往记得放到data/目录下来解压哦,

www.5929.com 6

8,结果

在py-faster-rcnn下,

执行:./tools/demo.py –net zf

www.5929.com 7

www.5929.com 8

www.5929.com 9

www.5929.com 10

www.5929.com 11

www.5929.com 12

www.5929.com 13

www.5929.com 14

6.运作网络和加载模型文件

在tools上面有个demo.py文件

cd $FRCN_ROOT
./tools/demo.py

就足以向来运营,记得看一下内部的参数,这里对显卡有断定的渴求,罗斯尔说必需是3G的显存以上才方可跑的动哦,里面有3个分寸的网络caffenet是小小的的,有显卡应该就会跑起来,vgg_cnn_m_1024是贰个中等互连网,vgg16是大型互连网,后七个得看显卡的显存大小技术跑起,显存非常不够运行会报错的。

固然在cpu方式下的话速度是灰常慢的,GPU情势下大致0.2秒左右。

对了demo里面都以有呈现的函数的,借使你是在linux终端下未有输出设备运营是会报错的

不错运营的结果如下
当中有七个图片检查测验效果,这里放一张

www.5929.com 15

7.有关磨练本人的数码样本

请等待下一篇 过两日就放上来 FastRCNN 练习自个儿多少集 (2接口退换陶冶)

Leave a Comment.