Object Detection之Fast R-CNN

简介

Fast R-CNN在R-CNN的基础上改善了训练和测试速度,同时提高了检测准确率。Fast R-CNN使用了VGG16,训练时比R-CNN快了9倍,测试时快了213倍。
R-CNN模型的复杂度主要来自两个方面:很多proposal需要处理,同时这些proposal的定位比较粗糙,必须改进才能得到准确的定位结果。
R-CNN有一些显著的缺点:

  • 训练需要多个阶段:需要训练CNN和SVM。
  • 训练需要的空间、时间很多。
  • 目标检测很慢,用VGG16检测速度为47s/image。
    其中,因为R-CNN需要对每个proposal跑CNN,所以很慢。
    Fast R-CNN有如下优点:高mAP、单阶段训练、训练更新所有权重、不用存储feature。

模型结构

模型结构
Fast R-CNN的输入是图片和一系列proposal。通过卷积和max池化产生feature map(特征图)。接着,对每个proposal,使用region of interest(RoI) pooling 从feature map中提取定长的feature vector。每个feature vector被喂进fully connected(fc)层,然后产生两个分支:第一个使用softmax产生(K+1)个分数,K为类别数,1为背景;另外一个分支产生4个实数代表bounding box的位置。

RoI Pooling

RoI pooling层使用max pooling把RoI转化成较小的大小固定的feature map(例如7×7)。论文中用(r,c,h,w)表示每个RoI,(r,c)为左上角的顶点,(h,w)为图片的高和宽。
RoI max pooling把大小为h×w的RoI划分成H×W个小格,每个大小约为h/H × w/W,然后在每个小格进行max pooling。pooling对每个channel是独立的。

从pre-trained网络进行初始化

首先,把最后的max pooling层换成RoI pooling层,接着,把网络最后的fc层和softmax层换成两个分支:K+1分类和bounding box回归。最后,网络的输入修改为图片和RoI。

对detection进行fine-tuning

Fast R-CNN训练使用的SGD mini-batch是通过分层采样得到的。首先,选取N张图片,之后从每张图片取R/N个RoI(N=2,R=128)。因为,同一种图片共享前向和后向的过程,节省了计算复杂度。

Multi-task loss

Fast R-CNN有两个输出,对于每个RoI,第一个输出K+1个类的离散概率分布,通常又fc后用softmax得到,第二个输出对每个类产生bounding box回归的偏移量。用多任务loss L来训练分类和bounding box回归:
图片说明
其中,图片说明。只有u大于等于1的时候,即ground truth存在目标时才有第二项loss。u=0时即为背景。
对于bounding-box 回归,使用Smooth L1 loss:
图片说明
其中,
图片说明
这个loss对于outlier不会太敏感。
Multi-task loss中的lambda平衡两个任务的loss,对v进行归一化操作,使用lambda=1。

Mini-batch sampling

使用R=128,每张图片采样64个RoI。其中,与ground truth bounding box的IoU至少为0.5的取25%,其余的RoI从IoU为[0.1,0.5)的区间选取。训练时,图片以0.5的概率随机水平翻转。

RoI pooling层的Back-propagation

假设图片说明 输入进RoI pooling层,第r个RoI的第j个输出为图片说明 ,其中图片说明图片说明图片说明 max pool输出的下标。
RoI pooling层的反向可以计算:
图片说明

Truncated SVM 加速检测

使用SVD,一层的参数可以表示为
图片说明
Truncated SVD把参数数目从uv减少到t(u+v)。

结果

图片说明

论文

Fast R-CNN

全部评论

相关推荐

#简历#先说一说我自己的想法,很多人都很排斥苍穹外卖,认为没什么技术点和含金量,但实际上我觉得恰恰相反,苍穹外卖虽然代码本身并不是你自身能力的证明,但是是作为一个新人学习时很好的跳板和原始框架,在这个框架上进行的改进可以很好的辐射到你自己的个人成果上,并作为你和面试官聊天的筹码大多数人的苍穹外卖只写增删改查,千篇一律,吸引不了面试官,所以这才让大家误以为只要是苍穹外卖就不要写进简历里这种误区,但实际上如果你在原有的层面上进行改进,并作为你的项目亮点和面试官介绍,告诉他你的苍穹外卖和别人的有什么不同,增加了哪些技术难点,这才显得你是完全自己理解了这个项目,并且有自己动手实践项目的能力,而不是就看了个课程就以为自己会了,就当成自己的了,如此一来,这反而成为你的加分项苍穹外卖为什么看的人最多,说明它好啊,如果它不好,为什么看的人还这么多,想清楚这个逻辑,我觉得要做的最重要的事,就是如何在原有框架上进行改进提效,比起听其他人的话重新搞一个项目性价比高得多,而且我亲测项目并没有成为我找到工作的阻碍,我投的大厂一大半都给我面试了,而且很多不止一个部门,退一万步说,当你手头没有其他项目的时候,有苍穹外卖总比什么都没有的好很多,不需要因为苍穹外卖有任何心理负担关于简历的任何部分都欢迎大家提意见,十分感谢大家,祝大家找实习+秋招顺利上岸,offer拿到手软#简历中的项目经历要怎么写##我的上岸简历长这样##最后再改一次简历##简历##简历被挂麻了,求建议#
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务