Faster-RCNN ゝ一纸荒年。 2022-10-06 09:57 229阅读 0赞 #### Faster-RCNN #### ### 文章目录 ### * * * * Faster-RCNN * * 参考 * Introduction * Related Work * Faster RCNN ##### 参考 ##### * [一文读懂Faster RCNN][Faster RCNN] * [从编程实现角度学习Faster R-CNN(附极简实现][Faster R-CNN] * [simple-faster-rcnn-pytorch][] * [Faster R-CNN细节详解][Faster R-CNN 1] * [深度学习: translation invariant (平移不变性)][translation invariant] ##### Introduction ##### * 指出proposals(候选去)的方式(如SS选2k区域)是当前检测速度的瓶颈。 * 提出RPN思想,指出用deep conv network来进行候选区域的预测工作,这会大大提升检测效率。 * 作者还提到将RPN和Fast RCNN融合成一个networks,于是提出了一套training的方式(end2end)替代原有的多步训练。 * 整体模型架构如下: * ![image-20210612165832050][] ##### Related Work ##### * ![image-20210612121857628][] * Object proposal method (候选框选取方法): * SS(Fast RCNN中的方法Selective Search)、CPMC、MCG * sliding window * Deep Networks for Object Detection * 作者在这里提到OverFeat中采用了类似方式,这就是Faster RCNN中RPN层的原型。 * ![image-20210612122616797][] * 上图中可以清晰看到,image 首先进过conv的到feature maps,然后分支,一部分进入RPN,一部分进入ROI pooling * 其中进入RPN的部分会经历以下过程: * generate anchor,从caffe代码中看,是先调整ratio(3种),然后再缩放scale(3种),对于一个点共9个(论文中是9个,实际上可以自行调整,如R2CNN就用了4x7=28个) * 接下来用SoftMax判断positive/negative anchor,同时另外分出一个分支做BBOX Regression(用于修正anchor) * 然后对分类结果做NMS,最后将从中选出的proposals送入ROI pooling(检测来到这里,目标定位就已经完成,接下来的部分就是分类了) ##### Faster RCNN ##### * 上文中有提到RPN的流程,下面是它的具体实现 * ![image-20210612165804772][] * 我们可以看到,从feature map中出来之后,先来个3x3卷积,进一步提取特征,然后使用1x1卷积进行变channel(大概是减少了计算量吧) * 接下来可以看到分了两路: * 上侧是先Reshape,将前两维(w、h)拉直成一维,总体feature是两维,进行softmax分类,而softmax只需要输出positive/negative的概率即可,即判断样本是否是目标 * 下侧则是做了Bounding Box Regression,调整proposal的精度 * 关于anchor的生成 * ![image-20210612170809102][] * 在caffe的源码中,会指定一个base\_size,然后根据这个base\_size进行ratio(长宽比)的变换(这个在原文中的指定是0.5,1,2,但是按我的理解应该统计dataset各个GT的比例再做选择可能会得到比较好的结果),然后做scale(尺度放大)变化。 * 故此,对每个点有9个anchor需要判断 * 但很显然,这种直接指定的anchor的精度肯定不够,需要BBOX Regression调整 * Translation-Invariant Anchors * 对于平移不变性,我目前的理解是,目标位置的变化不会改变网络的分类结果 * 然后作者说他的anchor具有平移不变性,因此我的猜想是:anchor数量覆盖了feature map,因此无论目标出现在feature map中的哪个位置(这叫平移),都有anchor能框到(这叫不变) * Loss Function * 在讲loss之前,首先定义一下positive/negative的标准, * positive=IOU>0.7且对同一个gt IOU最大者 * negative=IOU<0.3者 * 对于IOU属于(0.3,0.7)之间的anchor论文中直接舍弃了 * L ( \{ p i \} , \{ t i \} ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) L(\\\{p\_i\\\},\\\{t\_i\\\}) = \\frac\{1\}\{N\_\{cls\}\}\\sum\_iL\_\{cls\}(p\_i,p\_i^\*)+\\lambda \\frac\{1\}\{N\_\{reg\}\}\\sum\_ip\_i^\*L\_\{reg\}(t\_i,t\_i^\*) L(\{ pi\},\{ ti\})=Ncls1i∑Lcls(pi,pi∗)\+λNreg1i∑pi∗Lreg(ti,ti∗) * i是 mini-batch中的anchor的index * pi是预测的分数,pi\*是gt(如果有目标就是1) * ti是预测的bbox,ti\*是gt的bbox * bbox是xywh四个值,然后log或者除以w、h基本上都是为了归一化,公式如下: * ![image-20210612181452014][] * L\_cls是log loss,用于区分是否是object * L\_reg=R(ti,ti\*)用于bbox回归,R为smooth L1 * N\_cls=256、N\_reg~2400,*λ*=10用于平衡两者的权重 * Training RPNs * 这个之前有提到,就是选取256个anchor,positive和negative各128个(如果positive不够就拿negative凑),尽量保证正负样本平衡 * Sharing Convolutional Feaetures for Region Proposal and Object Detection([参考][Faster R-CNN 1]) * 即RPN和Fast R-CNN共享同一个backbone的feature map,然后两者依次交叉训练,但后来实验表明,直接对两者联合训练的效果也非常好。 * 当RPN与Fast R-CNN结合时,其作用是为Fast R-CNN提供Region Proposals,也就是取代了Selective Search的作用。因此其输出有3个:cls\_loss,reg\_loss,region proposals。 * 由于这些region proposals有很大的重叠,会造成冗余,因此我们根据其cls\_score进行NMS(threshold=0.7),选取大约2000k region proposals。然后我们再选出top-N个regions用于检测。 * 4-Step Alternating Training * 1、Train RPN * 2、用RPN的proposal train Fast RCNN * 3、固定卷积(特征提取的backbone),finetune RPN * 4、固定卷积,finetune Fast RCNN [Faster RCNN]: https://zhuanlan.zhihu.com/p/31426458 [Faster R-CNN]: https://zhuanlan.zhihu.com/p/32404424 [simple-faster-rcnn-pytorch]: https://github.com/chenyuntc/simple-faster-rcnn-pytorch [Faster R-CNN 1]: https://zhuanlan.zhihu.com/p/95429001 [translation invariant]: https://blog.csdn.net/JNingWei/article/details/78834173 [image-20210612165832050]: /images/20221005/aa0a1a486b9e4737ae0401368ab9ccb3.png [image-20210612121857628]: /images/20221005/e53c7d39ac5845c581b46f5fc3704d72.png [image-20210612122616797]: /images/20221005/0f1ea4699a924b28b4379690041b246c.png [image-20210612165804772]: /images/20221005/a4f0b79d63884777b2bc6279fbb19d63.png [image-20210612170809102]: /images/20221005/b53cb8b73948432983b49ccc772133c3.png [image-20210612181452014]: /images/20221005/cf821ca3ad0e40fc8abf8e427cc82e24.png
相关 目标检测算法:FasterRCNN 目标检测任务是计算机视觉领域最基础的任务之一,目前深度学习方法已经在该领域全面领先于其他技术方案。目标检测任务需要对图像中的物体进行检测,输出有两个,框的位置,以及框的类别,这 偏执的太偏执、/ 2023年09月28日 10:39/ 0 赞/ 140 阅读
相关 fasterRCNN ![20191009191333910.png][] [日萌社][Link 1] [人工智能AI:Keras PyTorch MXNet TensorFlow Pa 以你之姓@/ 2023年07月02日 05:26/ 0 赞/ 43 阅读
相关 定位、识别;目标检测,FasterRCNN 定位: ![1603578-20190709162515206-1450056921.png][] 针对分类利用softmax损失函数,针对定位利用L2损失函数(或L1、回 男娘i/ 2023年06月04日 02:53/ 0 赞/ 31 阅读
相关 一个很好的讲解FasterRCNN的视频 卷积神经网络里的卷积核到底是怎么提取图像特征,然后交给 SVM 或者 全连接层去训练一个分类或者边框回归器的 [https://www.sohu.com/a/27752649 古城微笑少年丶/ 2023年01月05日 05:21/ 0 赞/ 180 阅读
相关 Detection物体检测及分类方法总结(RFCN/SSD/RCNN/FastRCNN/FasterRCNN/SPPNet/DPM/OverFeat/YOLO) 这里搜集了一些关于物体检测的方法分析和介绍,看好哪个可以去详细研究一下,基本都有论文或代码的链接。 这里是简述各种方法,下面有详细叙述 方法选择: ======= 素颜马尾好姑娘i/ 2022年07月12日 20:49/ 0 赞/ 242 阅读
相关 目标检测之Loss:FasterRCNN中的SmoothL1Loss 多任务损失(来自Fast R-CNN) ![Center][] multi-task[数据结构][Link 1] Fast R-CNN网络有两个同级输出层(cls scor 悠悠/ 2022年05月16日 04:23/ 0 赞/ 338 阅读
还没有评论,来说两句吧...