潮科技行业入门指南 | 深度学习理论与实战:提高篇(8)——目标检测算法Fast R-CNN
编者按:本文节选自《深度学习理论与实战:提高篇 》一书,原文链接http://fancyerii.github.io/2019/03/14/dl-book/ 。作者李理,环信人工智能研发中心vp,有十多年自然语言处理和人工智能研发经验,主持研发过多款智能硬件的问答和对话系统,负责环信中文语义分析开放平台和环信智能机器人的设计与研发。
以下为正文。
本文介绍目标检测的常见算法之一:Fast R-CNN。
Fast R-CNN
R-CNN虽然效果不错,但是它有如下缺点:
训练需要很多步骤,从卷积网络到SVM再到Bounding box回归,整个Pipeline过于复杂
训练需要大量时间和空间 我们需要为每个类别都训练一个二分类的SVM,而且由于SVM的特征来自于卷积网络的全连接层,这是两个模型不好集成,因此需要把卷积网络的特征写到磁盘上,这要占用大量磁盘空间和IO时间
预测的速度慢,对于每个候选区域,我们都要用卷积网络提取特征(基本相对于一次forward计算),即使有一个GPU,预测一个图片平均都需要47s的时间
R-CNN慢的最主要原因就是每个候选的区域都要用CNN提取特征,而事实上它们都是这张图片的一部分,很多计算都是重复的。此外训练慢的原因在于有多个模型——卷积网络、SVM和Bouding box回归。下面我们介绍Fast R-CNN的模型结构以及它是怎么来解决上述的问题的。
Fast R-CNN架构图
Fast R-CNN的架构如上图所示。它的输入是一张图片和一些候选区域,对于输入的图片,它会使用多层的卷积网络得到一些特征映射(Feature Map),然后对于每一个候选区域,一个RoI(Region of Interest)的pooling层会从这些特征映射中选取与之对应的区域,通过pooling得到固定大小的特征,再把这些特征输入全连接层。然后再从全连接层分出两个分支,一个用softmax进行分类,另一个分支直接输出4个数值,分别表示Bounding box的位置。
Fast R-CNN对于每个图片只用CNN提取一次特征,然后不同的候选区域会”共享“这个特征,只是使用RoI来选择空间位置上与之对应的部分,这样预测的时候速度会比R-CNN快很多。其次,Fast R-CNN完全抛弃了SVM和一个单独的Bouding box回归。而是使用统一的一个深度神经网络来同时输出分类和Bouding box的位置,因此是一个统一的训练过程,从而避免复杂的Pipeline和提高训练速度。
RoI pooling层
因为不同的候选区域的尺寸是不同的,所以对应的Feature map的尺寸也是不同,因此使用max pooling把它们变成固定大小(H=7 x W=7)的特征。每个RoI都对应原始Feature map的某个区域,比如某个RoI的大小是(h=21, w=21),那么我们就可以使用(h/H=3, w/W=3)的max pooling层把它变成(H, W)的特征。当然如果某个RoI的大小是(14, 14),那么我们就需要(2, 2)的max pooling,从而保证最终的输出是(7, 7)。这样通过不同大小的RoI,我们的模型就可以检查不同大小的目标对象。
预训练
和R-CNN类似,Fast R-CNN也可以使用图片分类(而不是目标检测)的数据来预训练。预训练完成后我们再fine-tuning,把最后一个pooling层换成RoI层,把1000类的softmax换成N(目标检测的类别数)+1(其它对象或者背景)。此外再加上4个预测Bounding Box的输出,这就有两个损失函数,这是典型的multi-task学习问题,后面我们会介绍它的损失函数。这样这个模型学习出来的特征既要考虑分类的准确率,也同时要考虑回归的准确率。而之前的R-CNN里的特征只考虑分类,而Bounding box回归是单独的一个模块,而且它的输入就是CNN的特征,这个是在分类训练完成后就固定了的,Bounding box回归是不能调整它的。
Multi-task Loss
对于每一个候选区域,它的真实类别是u(0代表不是任何目标物体),它的真实bounding box是t^u。而模型预测的分类是一个概率分布p=(p0,p1,…,pK)p=(p0,p1,…,pK),模型预测的bouding box是v。因为候选区域的大小不是固定的,因此这里的bounding box都是相对候选区域的位置,我们只要理解它是和候选区域大小无关的一种相对位置就行了,感兴趣的读者可以参考R-CNN论文的附录部分。最终的loss为:
其中:
这个损失是计算预测的x,y,w,h与真实的L1L1距离,只不过加了一点平滑:
改进效果
模型的效果对于指标mAP有6%的提高,而训练速度是原来的18倍,预测速度是原来的169倍,对于大的模型,预测也只需要0.3秒。
训练和预测速度对比
相关推荐
潮科技行业入门指南 | 深度学习理论与实战:提高篇(8)——目标检测算法Fast R-CNN
潮科技行业入门指南 | 深度学习理论与实战:提高篇(9)——目标检测算法Faster R-CNN
潮科技行业入门指南 | 深度学习理论与实战:提高篇(10)——目标检测算法FPN
潮科技行业入门指南 | 深度学习理论与实战:提高篇(12)Fast/Faster/Mask R-CNN总结
潮科技行业入门指南 | 深度学习理论与实战:提高篇(7)——目标检测算法R-CNN
潮科技行业入门指南 | 深度学习理论与实战:提高篇(11)——实例分割
潮科技行业入门指南 | 深度学习理论与实战:提高篇(14)——Mask R-CNN代码简介
潮科技行业入门指南 | 深度学习理论与实战:提高篇(13)——Faster R-CNN代码简介
潮科技行业入门指南 | 深度学习理论与实战:提高篇(6)—— 视觉任务简介
潮科技行业入门指南 | 深度学习理论与实战:提高篇(20)—— 强化学习简介(六)
网址: 潮科技行业入门指南 | 深度学习理论与实战:提高篇(8)——目标检测算法Fast R-CNN http://www.xishuta.com/newsview2102.html
推荐科技快讯
- 1问界商标转让释放信号:赛力斯 94804
- 2人类唯一的出路:变成人工智能 18105
- 3报告:抖音海外版下载量突破1 17624
- 4移动办公如何高效?谷歌研究了 17377
- 5人类唯一的出路: 变成人工智 17213
- 62023年起,银行存取款迎来 9991
- 7网传比亚迪一员工泄露华为机密 7962
- 812306客服回应崩了 12 6352
- 9顶风作案?金山WPS被指套娃 6280
- 10大数据杀熟往返套票比单程购买 6261