研究fastcnn算法 rcnn系列的目标检测算法有什么用

使用Faster-Rcnn进行目标检测(实践篇) - CSDN博客
使用Faster-Rcnn进行目标检测(实践篇)
上一篇文章,已经说过了,大家可以参考一下,
我使用的代码是python版本的Faster Rcnn,官方也有Matlab版本的,链接如下:
按照官方的README进行配置就好,不过在这之前大家还是看下硬件要求吧
For training smaller networks (ZF, VGG_CNN_M_1024) a good GPU (e.g., Titan, K20, K40, …) with at least 3G of memory suffices
For training Fast R-CNN with VGG16, you’ll need a K40 (~11G of memory)
For training the end-to-end version of Faster R-CNN with VGG16, 3G of GPU memory is sufficient (using CUDNN)
我的是环境是Ubuntu 14.04 + Titan X(12GB) + cuda 7.0 + cudnn V3
1 Caffe环境配置
Caffe环境需要python layer的支持,在你的Caffe的Makefile.config中去掉以下的注释
WITH_PYTHON_LAYER := 1
USE_CUDNN := 1
2 安装python库依赖
cython,python-opencv和easydict
pip install cython
pip install python-opencv
pip install easydict
3 克隆py-faster-rcnn源代码
git clone --recursive /rbgirshick/py-faster-rcnn.git
4 编译cython模块
cd $FRCN_ROOT/lib
5 编译Caffe和pycaffe
cd $FRCN_ROOT/caffe-fast-rcnn
make -j8 && make pycaffe
-j8的选项是进行多核编译,可以加速编译过程,推荐使用
参考VOC2007的数据集格式,主要包括三个部分:
JPEGImages
Annotations
ImageSets/Main
JPEGImages —& 存放你用来训练的原始图像
Annotations —& 存放原始图像中的Object的坐标信息,XML格式
ImageSets/Main —& 指定用来train,trainval,val和test的图片的编号
这部分非常重要,数据集做不好直接导致代码出现异常,无法运行,或者出现奇怪的错误,我也是掉进了很多坑,爬上来之后才写的这篇博客,希望大家不要趟我趟过的浑水!每一个部分我都会细说的!
JPEGImages
这个没什么,直接把你的图片放入就可以了,但是有三点注意:
编号要以6为数字命名,例如000034.jpg
图片要是JPEG/JPG格式的,PNG之类的需要自己转换下
图片的长宽比(width/height)要在0.462-6.828之间,就是太过瘦长的图片不要
0.462-6.828是我自己实验得出来的,就我的数据集而言是这个比例,总之长宽比太大或者太小的,你要注意将其剔除,否则可能会出现下面我实验时候出的错:
Traceback (most recent call last):
File “/usr/lib/python2.7/multiprocessing/process.py”, line 258, in _bootstrap
self.run()
File “/usr/lib/python2.7/multiprocessing/process.py”, line 114, in run
self._target(*self._args, **self._kwargs)
File “./tools/train_faster_rcnn_alt_opt.py”, line 130, in train_rpn
max_iters=max_iters)
File “/home/work-station/zx/py-faster-rcnn/tools/../lib/fast_rcnn/train.py”, line 160, in train_net
model_paths = sw.train_model(max_iters)
File “/home/work-station/zx/py-faster-rcnn/tools/../lib/fast_rcnn/train.py”, line 101, in train_model
self.solver.step(1)
File “/home/work-station/zx/py-faster-rcnn/tools/../lib/rpn/anchor_target_layer.py”, line 137, in forward
gt_argmax_overlaps = overlaps.argmax(axis=0)
ValueError: attempt to get argmax of an empty sequence
Google给出的原因是 Because the ratio of images width and heights is too small or large,这个非常重要
Annotations
faster rcnn训练需要图像的bounding box信息作为监督(ground truth),所以你需要将你的所有可能的object使用框标注,并写上坐标,最终是一个XML格式的文件,一个训练图片对应Annotations下的一个同名的XML文件
参考官方VOC的Annotations的格式:
&VOC2007& #数据集文件夹
&000105.jpg& #图片的name
& #注释信息,无所谓有无
&The VOC2007 Database&
&PASCAL VOC2007&
& #注释信息,无所谓有无
&Eric T. Johnson&
& #图片大小
& #多少个框就有多少个object标签
&boat& #bounding box中的object的class name
&22& #框的坐标
这里有一个非常好用的工具,可以自动帮你生成需要的XML格式,实际中发现格式基本无误,只有小的地方需要改动下,大家对比下就知道怎么改了,我是在linux下借助sed修改的,这个不难
Imagesets/Main
因为VOC的数据集可以做很多的CV任务,比如Object detection, Semantic segementation, Edge detection等,所以Imageset下有几个子文件夹(Layout, Main, Segementation),我们只要修改下Main下的文件就可以了(train.txt, trainval.txt, val.txt, test.txt),里面写上你想要进行任务的图片的编号
将上述你的数据集放在py-faster-rcnn/data/VOCdevkit2007/VOC2007下面,替换原始VOC2007的JPEGIMages,Imagesets,Annotations
原始VOC2007下载地址:
工程目录介绍
caffe-fast-rcnn —& caffe框架
data —& 存放数据,以及读取文件的cache
experiments —&存放配置文件以及运行的log文件,配置文件
lib —& python接口
models —& 三种模型, ZF(S)/VGG1024(M)/VGG16(L)
output —& 输出的model存放的位置,不训练此文件夹没有
tools —& 训练和测试的python文件
修改源文件
faster rcnn有两种各种训练方式:
Alternative training(alt-opt)
Approximate joint training(end-to-end)
推荐使用第二种,因为第二种使用的显存更小,而且训练会更快,同时准确率差不多,两种方式需要修改的代码是不一样的,同时faster rcnn提供了三种训练模型,小型的ZFmodel,中型的VGG_CNN_M_1024和大型的VGG16,论文中说VGG16效果比其他两个好,但是同时占用更大的GPU显存(~11GB)
我使用的是VGG model + alternative training,需要检测的类别只有一类,加上背景所以总共是两类(background + captcha)
1 py-faster-rcnn/models/pascal_voc/VGG16/faster_rcnn_alt_opt/stage1_fast_rcnn_train.pt
name: 'data'
type: 'Python'
top: 'data'
top: 'rois'
top: 'labels'
top: 'bbox_targets'
top: 'bbox_inside_weights'
top: 'bbox_outside_weights'
python_param {
module: 'roi_data_layer.layer'
layer: 'RoIDataLayer'
param_str: "'num_classes': 2" #按训练集类别改,该值为类别数+1
name: "cls_score"
type: "InnerProduct"
bottom: "fc7"
top: "cls_score"
lr_mult: 1.0
lr_mult: 2.0
num_output: 2 #按训练集类别改,该值为类别数+1
weight_filler {
type: "gaussian"
type: "constant"
name: "bbox_pred"
type: "InnerProduct"
bottom: "fc7"
top: "bbox_pred"
lr_mult: 1.0
lr_mult: 2.0
num_output: 8 #按训练集类别改,该值为(类别数+1)*4,四个顶点坐标
weight_filler {
type: "gaussian"
std: 0.001
type: "constant"
2 py-faster-rcnn/models/pascal_voc/VGG16/faster_rcnn_alt_opt/stage1_rpn_train.pt
name: 'input-data'
type: 'Python'
top: 'data'
top: 'im_info'
top: 'gt_boxes'
python_param {
module: 'roi_data_layer.layer'
layer: 'RoIDataLayer'
param_str: "'num_classes': 2" #按训练集类别改,该值为类别数+1
3 py-faster-rcnn/models/pascal_voc/VGG16/faster_rcnn_alt_opt/stage2_fast_rcnn_train.pt
name: 'data'
type: 'Python'
top: 'data'
top: 'rois'
top: 'labels'
top: 'bbox_targets'
top: 'bbox_inside_weights'
top: 'bbox_outside_weights'
python_param {
module: 'roi_data_layer.layer'
layer: 'RoIDataLayer'
param_str: "'num_classes': 2" #按训练集类别改,该值为类别数+1
name: "cls_score"
type: "InnerProduct"
bottom: "fc7"
top: "cls_score"
lr_mult: 1.0
lr_mult: 2.0
num_output: 2 #按训练集类别改,该值为类别数+1
weight_filler {
type: "gaussian"
type: "constant"
name: "bbox_pred"
type: "InnerProduct"
bottom: "fc7"
top: "bbox_pred"
lr_mult: 1.0
lr_mult: 2.0
num_output: 8 #按训练集类别改,该值为(类别数+1)*4,四个顶点坐标
weight_filler {
type: "gaussian"
std: 0.001
type: "constant"
4 py-faster-rcnn/models/pascal_voc/VGG16/faster_rcnn_alt_opt/stage2_rpn_train.pt
name: 'input-data'
type: 'Python'
top: 'data'
top: 'im_info'
top: 'gt_boxes'
python_param {
module: 'roi_data_layer.layer'
layer: 'RoIDataLayer'
param_str: "'num_classes': 2" #按训练集类别改,该值为类别数+1
5 py-faster-rcnn/models/pascal_voc/VGG16/faster_rcnn_alt_opt/faster_rcnn_test.pt
name: "cls_score"
type: "InnerProduct"
bottom: "fc7"
top: "cls_score"
inner_product_param {
num_output: 2 #按训练集类别改,该值为类别数+1
6 py-faster-rcnn/lib/datasets/pascal_voc.py
class pascal_voc(imdb):
def __init__(self, image_set, year, devkit_path=None):
imdb.__init__(self, 'voc_' + year + '_' + image_set)
self._year = year
self._image_set = image_set
self._devkit_path = self._get_default_path() if devkit_path is None \
else devkit_path
self._data_path = os.path.join(self._devkit_path, 'VOC' + self._year)
self._classes = ('__background__',
captcha' # 有几个类别此处就写几个,我是两个
cls = self._class_to_ind[obj.find('name').text.lower().strip()]
如果你的标签含有大写字母,可能会出现KeyError的错误,所以建议全部使用小写字母
7 py-faster-rcnn/lib/datasets/imdb.py
将append_flipped_images函数改为如下形式:
def append_flipped_images(self):
num_images = self.num_images
widths = [PIL.Image.open(self.image_path_at(i)).size[0]
for i in xrange(num_images)]
for i in xrange(num_images):
boxes = self.roidb[i]['boxes'].copy()
oldx1 = boxes[:, 0].copy()
oldx2 = boxes[:, 2].copy()
boxes[:, 0] = widths[i] - oldx2 - 1
print boxes[:, 0]
boxes[:, 2] = widths[i] - oldx1 - 1
print boxes[:, 0]
assert (boxes[:, 2] &= boxes[:, 0]).all()
entry = {'boxes' : boxes,
'gt_overlaps' : self.roidb[i]['gt_overlaps'],
'gt_classes' : self.roidb[i]['gt_classes'],
'flipped' : True}
self.roidb.append(entry)
self._image_index = self._image_index * 2
到此代码修改就搞定了
训练前还需要注意几个地方
1 cache问题
假如你之前训练了官方的VOC2007的数据集或其他的数据集,是会产生cache的问题的,建议在重新训练新的数据之前将其删除
(1) py-faster-rcnn/output
(2) py-faster-rcnn/data/cache
2 训练参数
py-faster-rcnn/models/pascal_voc/VGG16/faster_rcnn_alt_opt/stage_fast_rcnn_solver*.pt
base_lr: 0.001
lr_policy: 'step'
step_size: 30000
display: 20
迭代次数在文件py-faster-rcnn/tools/train_faster_rcnn_alt_opt.py中进行修改
max_iters = [8, 8]
分别对应rpn第1阶段,fast rcnn第1阶段,rpn第2阶段,fast rcnn第2阶段的迭代次数,自己修改即可,不过注意这里的值不要小于上面的solver里面的step_size的大小,大家自己修改吧
cd py-faster-rcnn
./experiments/scripts/faster_rcnn_alt_opt.sh 0 VGG16 pascal_voc
指明使用第一块GPU(0),模型是VGG16,训练数据是pascal_voc(voc2007),没问题的话应该可以迭代训练了
训练完毕,得到我们的训练模型,我们就可以使用它来进行我们的object detection了,具体是:
1 将py-faster-rcnn/output/faster_rcnn_alt_opt/voc_2007_trainval/VGG16_faster_rcnn_final.caffemodel,拷贝到py-faster-rcnn/data/faster_rcnn_models下
2 将你需要进行test的images放在py-faster-rcnn/data/demo下
3 修改py-faster-rcnn/tools/demo.py文件
CLASSES = ('_background_', 'captcha') #参考你自己的类别写
NETS = {'vgg16': ('VGG16',
'VGG16_faster_rcnn_final.caffemodel'), #改成你训练得到的model的name
'zf': ('ZF',
'ZF_faster_rcnn_final.caffemodel')
im_names = ['1559.jpg','1564.jpg']
上几张我的检测结果吧
本文已收录于以下专栏:
相关文章推荐
经过RCNN和Fast RCNN的积淀,Ross B. Girshick在2016年提出了新的Faster RCNN,在VOC2007测试集测试mAP达到73.2%,检测的速度可以达到每秒5帧。和之前...
Faster rcnn 安装、训练自己的数据、测试、调参
Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network...
在父窗口定义var location = new Object()//或者var location = &&等都可以 top.location != location判断当前是页面和祖父页面的地址是不...
深度学习中的Attention,源自于人脑的注意力机制,当人的大脑接受到外部信息,如视觉信息、听觉信息时,往往不会对全部信息进行处理和理解,而只会将注意力集中在部分显著或者感兴趣的信息上,这样有助于滤...
本文介绍一下2015 ImageNet中分类任务的冠军——MSRA何凯明团队的Residual Networks。实际上,MSRA是今年Imagenet的大赢家,不单在分类任务,MSRA还用resid...
博主课题需要研究Faster RCNN,先后看了RCNN、Fast RCNN和Faster RCNN三篇paper,然而有点懵逼= =所以准备再捋一遍总结一下~
reference link:http://blog.csdn.net/shenxiaolu1984/article/details/
Region CNN(RCNN)可以说是利用深...
paper链接:Faster
R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
论文笔记:Faster-Rcnn进行目标检测Object Detection发展介绍Faster rcnn是用来解决计算机视觉(CV)领域中Object Detection的问题的。经典的解决方案是使...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)【目标检测】Object Detection Fast RCNN 算法解析 - g的博客 - CSDN博客
【目标检测】Object Detection Fast RCNN 算法解析
Girshick, Ross. “Fast r-cnn.” Proceedings of the IEEE International Conference on Computer Vision. 2015.
继2014年的RCNN之后,Ross Girshick在15年推出Fast RCNN,构思精巧,流程更为紧凑,大幅提升了目标检测的速度。在Github上提供了。
同样使用最大规模的网络,Fast RCNN和RCNN相比,训练时间从84小时减少为9.5小时,测试时间从47秒减少为0.32秒。在PASCAL VOC 2007上的准确率相差无几,约在66%-67%之间.
基础:RCNN
简单来说,RCNN使用以下四步实现目标检测:&
a. 在图像中确定约个候选框&
b. 对于每个候选框内图像块,使用深度网络提取特征&
c. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类&
d. 对于属于某一特征的候选框,用回归器进一步调整其位置&
更多细节可以参看。
改进:Fast RCNN
Fast RCNN方法解决了RCNN方法三个问题:
问题一:测试时速度慢&
RCNN一张图像内候选框之间大量重叠,提取特征操作冗余。&
本文将整张图像归一化后直接送入深度网络。在邻接时,才加入候选框信息,在末尾的少数几层处理每个候选框。
问题二:训练时速度慢&
原因同上。&在训练时,本文先将一张图像送入网络,紧接着送入从这幅图像上提取出的候选区域。这些候选区域的前几层特征不需要再重复计算。
问题三:训练所需空间大&
RCNN中独立的分类器和回归器需要大量特征作为训练样本。&
本文把类别判断和位置精调统一用深度网络实现,不再需要额外存储。
以下按次序介绍三个问题对应的解决方法。
特征提取网络
图像归一化为224×224直接送入网络。
前五阶段是基础的conv+relu+pooling形式,在第五阶段结尾,输入P个候选区域(图像序号×1+几何位置×4,序号用于训练)。&
注:文中给出了大中小三种网络,此处示出最大的一种。三种网络基本结构相似,仅conv+relu层数有差别,或者增删了norm层。
roi_pool层的测试(forward)
roi_pool层将每个候选区域均匀分成M×N块,对每块进行max pooling。将特征图上大小不一的候选区域转变为大小统一的数据,送入下一层。&
roi_pool层的训练(backward)
首先考虑普通max pooling层。设xi为输入层的节点,yj为输出层的节点。&
?L?xi={0?L?yjδ(i,j)=falseδ(i,j)=true
其中判决函数δ(i,j)表示i节点是否被j节点选为最大值输出。不被选中有两种可能:xi不在yj范围内,或者xi不是最大值。
对于roi max pooling,一个输入节点可能和多个输出节点相连。设xi为输入层的节点,yrj为第r个候选区域的第j个输出节点。
判决函数δ(i,r,j)表示i节点是否被候选区域r的第j个节点选为最大值输出。代价对于xi的梯度等于所有相关的后一层梯度之和。
网络参数训练
参数初始化
网络除去末尾部分如下图,在ImageNet上训练1000类分类器。结果参数作为相应层的初始化参数。&
其余参数随机初始化。
在调优训练时,每一个mini-batch中首先加入N张完整图片,而后加入从N张图片中选取的R个候选框。这R个候选框可以复用N张图片前5个阶段的网络特征。&
实际选择N=2, R=128。
训练数据构成
N张完整图片以50%概率水平翻转。&
R个候选框的构成方式如下:
分类与位置调整
第五阶段的特征输入到两个并行的全连层中(称为multi-task)。&
cls_score层用于分类,输出K+1维数组p,表示属于K类和背景的概率。&
bbox_prdict层用于调整候选区域位置,输出4*K维数组t,表示分别属于K类时,应该平移缩放的参数。
loss_cls层评估分类代价。由真实分类u对应的概率决定:&
Lcls=-logpu
loss_bbox评估检测框定位代价。比较真实分类对应的预测参数tu和真实平移缩放参数为v的差别:&
Lloc=Σ4i=1g(tui-vi)
g为Smooth L1误差,对outlier不敏感:&
g(x)={0.5x2|x|-0.5|x|&1otherwise
总代价为两者加权和,如果分类为背景则不考虑定位代价:&
L={Lcls+λLlocLclsu为前景u为背景
源码中bbox_loss_weights用于标记每一个bbox是否属于某一个类
全连接层提速
分类和位置调整都是通过全连接层(fc)实现的,设前一级数据为x后一级为y,全连接层参数为W,尺寸u×v。一次前向传播(forward)即为:&
计算复杂度为u×v。
将W进行SVD分解,并用前t个特征值近似:&
W=UΣVT≈U(:,1:t)?Σ(1:t,1:t)?V(:,1:t)T
原来的前向传播分解成两步:&
y=Wx=U?(Σ?VT)?x=U?z
计算复杂度变为u×t+v×t。&
在实现时,相当于把一个全连接层拆分成两个,中间以一个低维数据相连。&
在github的源码中,这部分似乎没有实现。
实验与结论
实验过程不再详述,只记录结论&
- 网络末端同步训练的分类和位置调整,提升准确度&
- 使用多尺度的图像金字塔,性能几乎没有提高&
-&倍增训练数据,能够有2%-3%的准确度提升&
- 网络直接输出各类概率(softmax),比SVM分类器性能略好&
-&更多候选窗不能提升性能
同年作者团队又推出了Faster RCNN,进一步把检测速度提高到准实时,可以参看。&
关于RCNN, Fast RCNN, Faster RCNN这一系列目标检测算法,可以进一步参考作者在15年ICCV上的讲座。
我的热门文章【目标检测】Fast RCNN算法详解
我的图书馆
【目标检测】Fast RCNN算法详解
Girshick, Ross. “Fast r-cnn.” Proceedings of the IEEE International Conference on Computer Vision. 2015.
继2014年的RCNN之后,Ross Girshick在15年推出Fast RCNN,构思精巧,流程更为紧凑,大幅提升了目标检测的速度。在Github上提供了。
同样使用最大规模的网络,Fast RCNN和RCNN相比,训练时间从84小时减少为9.5小时,时间从47秒减少为0.32秒。在PASCAL VOC 2007上的准确率相差无几,约在66%-67%之间.
基础:RCNN
简单来说,RCNN使用以下四步实现目标检测:
a. 在图像中确定约个候选框
b. 对于每个候选框内图像块,使用深度网络提取特征
c. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
d. 对于属于某一特征的候选框,用回归器进一步调整其位置
更多细节可以参看。
改进:Fast RCNN
Fast RCNN方法解决了RCNN方法三个问题:
问题一:测试时速度慢
RCNN一张图像内候选框之间大量重叠,提取特征操作冗余。
本文将整张图像归一化后直接送入深度网络。在邻接时,才加入候选框信息,在末尾的少数几层处理每个候选框。
问题二:训练时速度慢
原因同上。
在训练时,本文先将一张图像送入网络,紧接着送入从这幅图像上提取出的候选区域。这些候选区域的前几层特征不需要再重复计算。
问题三:训练所需空间大
RCNN中独立的分类器和回归器需要大量特征作为训练样本。
本文把类别判断和位置精调统一用深度网络实现,不再需要额外存储。
以下按次序介绍三个问题对应的解决方法。
特征提取网络
图像归一化为224×224直接送入网络。
前五阶段是基础的conv+relu+pooling形式,在第五阶段结尾,输入P个候选区域(图像序号×1+几何位置×4,序号用于训练)?。
注:文中给出了大中小三种网络,此处示出最大的一种。三种网络基本结构相似,仅conv+relu层数有差别,或者增删了norm层。
roi_pool层的测试(forward)
roi_pool层将每个候选区域均匀分成M×N块,对每块进行max pooling。将特征图上大小不一的候选区域转变为大小统一的数据,送入下一层。
roi_pool层的训练(backward)
首先考虑普通max pooling层。设xi为输入层的节点,yj为输出层的节点。
Lxi={0Lyjδ(i,j)=falseδ(i,j)=true
其中判决函数δ(i,j)表示i节点是否被j节点选为最大值输出。不被选中有两种可能:xi不在yj范围内,或者xi不是最大值。
对于roi max pooling,一个输入节点可能和多个输出节点相连。设xi为输入层的节点,yrj为第r个候选区域的第j个输出节点。
Lxi=Σr,jδ(i,r,j)Lyrj
判决函数δ(i,r,j)表示i节点是否被候选区域r的第j个节点选为最大值输出。代价对于xi的梯度等于所有相关的后一层梯度之和。
网络参数训练
参数初始化
网络除去末尾部分如下图,在ImageNet上训练1000类分类器。结果参数作为相应层的初始化参数。
其余参数随机初始化。
在调优训练时,每一个mini-batch中首先加入N张完整图片,而后加入从N张图片中选取的R个候选框。这R个候选框可以复用N张图片前5个阶段的网络特征。
实际选择N=2, R=128。
训练数据构成
N张完整图片以50%概率水平翻转。
R个候选框的构成方式如下:
与某个真值重叠在[0.5,1]的候选框
与真值重叠的最大值在[0.1,0.5)的候选框
分类与位置调整
第五阶段的特征输入到两个并行的全连层中(称为multi-task)。
cls_score层用于分类,输出K+1维数组p,表示属于K类和背景的概率。
bbox_prdict层用于调整候选区域位置,输出4*K维数组t,表示分别属于K类时,应该平移缩放的参数。
loss_cls层评估分类代价。由真实分类u对应的概率决定:
Lcls=logpu
loss_bbox评估检测框定位代价。比较真实分类对应的预测参数tu和真实平移缩放参数为v的差别:
Lloc=Σ4i=1g(tuivi)
g为Smooth L1误差,对outlier不敏感:
g(x)={0.5x2|x|0.5|x|&1otherwise
总代价为两者加权和,如果分类为背景则不考虑定位代价:
L={Lcls+λLlocLclsu为前景u为背景
源码中bbox_loss_weights用于标记每一个bbox是否属于某一个类
全连接层提速
分类和位置调整都是通过全连接层(fc)实现的,设前一级数据为x后一级为y,全连接层参数为W,尺寸u×v。一次前向传播(forward)即为:
计算复杂度为u×v。
将W进行SVD分解,并用前t个特征值近似:
W=UΣVT≈U(:,1:t)Σ(1:t,1:t)V(:,1:t)T
原来的前向传播分解成两步:
y=Wx=U(ΣVT)x=Uz
计算复杂度变为u×t+v×t。
在实现时,相当于把一个全连接层拆分成两个,中间以一个低维数据相连。
在github的源码中,这部分似乎没有实现。
实验与结论
实验过程不再详述,只记录结论
- 网络末端同步训练的分类和位置调整,提升准确度
- 使用多尺度的图像金字塔,性能几乎没有提高
- 倍增训练数据,能够有2%-3%的准确度提升
- 网络直接输出各类概率(softmax),比SVM分类器性能略好
- 更多候选窗不能提升性能
同年作者团队又推出了Faster RCNN,进一步把检测速度提高到准实时,可以参看。
关于RCNN, Fast RCNN, Faster RCNN这一系列目标检测,可以进一步参考作者在15年ICCV上的讲座。
TA的推荐TA的最新馆藏[转]&
喜欢该文的人也喜欢【图文】目标检测CNN系列_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
目标检测CNN系列
&&理清深度学习、神经网络和目标检测的关系,回顾近年来目标检测顶尖的研究进展。
大小:545.17KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 caffe fast rcnn 的文章

 

随机推荐