本篇博客都是个人原创,哪里若有出处,还望大家多多包涵。
提起目标检测,不得不提的就是Faster RCNN,很经典,也很好用,网上相应的博客也很多。我的这篇博客呢,则是把我在学习Faster RCNN 时候的一些不懂的点,分享给大家,帮助大家理解,提高,共同进步。
在讲解Faster Rcnn 之前,我们可以先从宏观上理解下目标检测。
在百度百科搜索目标检测,会出现下面这幅图片

其中有几个关键字分别为:分割 、 识别 、 准确性 、 实时性。
分割 、 识别是目的,准确性、实时性是效果。用一句简单话来表示这四个关键字就是:从一幅图像中判断是否含有待检测目标(识别),待检测目标在图片中的哪个位置(分割),检测效果好不好(准确性),检测速度快不快(实时性)。
基于深度学习的目标检测算法大致走的也是这两条路,一条是以准确性为主,一条呢则是以检测速度为主。
今天我们要将的Faster Rcnn 则是以准确性为主,相比以检测速度为主的YOLO、SSD等模型,检测速度相对较慢,但检测精度相对较高。
好了,开始正文,进入我们的Faster RCNN 讲解。
上面我们提到了,Faster RCNN 是以检测准确性为主。大家查阅论文不难发现以检测准确性为主的算法,大多总会看到这么一个词--proposal 百度百科的解释是建议,提议。

建议提议是什么意思呢?当我们要检测一只小猫,可能小猫只占图片的十分之一的区域。图片太大了,要是能把小猫所在的区域圈出来,我们只检测圈出来的区域那该多好。这个proposal就是帮我们建议出来一些区域,我们只对这个区域进行检测。
问题:要是事先能把小猫区域圈出来,你这也不是在大图上进行检测了呀。还有,你怎么就把小猫区域圈出来了呢?
千寻:对的,不是在大图上进行检测,我们是在大图上提取了好多好多个proposal,我们对每一个候选区域进行检测的。
proposal 在目标检测中,就是建议图片中的一块区域。
问题:那是不是只检测proposal,要是目标都不在你所提取的proposal里,那是不是就检测不到了?
千寻:是的,目标检测就是针对提取出来的proposal进行检测,要是所有proposal里没有目标,那么目标是检测不到的,不过放心,我们会生成好多好多的proposal,目标肯定跑不了。
问题:那么在Faster RCNN中proposal是如何生成的呢?
千寻:在Faster RCNN中,关于proposal的生成,提出了一个新的名词--Anchors(锚)
网上有一篇博客是专门对Anchors 进行讲解的 https://blog.youkuaiyun.com/as472780551/article/details/81227408
一幅图像,经过不断地卷积、池化得到特征图。

在上图里面,map 3里1 × 1 的区域对应 map 2 里的红色7 × 7 区域,而map 2 里 7 × 7 的区域对应map 1 的蓝色11 × 11区域
不难发现,虽然经过卷积池化操作得到的特征图尺寸与原始图像尺寸发生了变化,但是特征图与原图间有一个对应关系,特征图上的一个点,对应着原图的某一块区域,我们管这种关系就叫做感受野。在Faster RCNN中,关于锚anchor 我们也可以理解为这样。
干货来啦:一幅图像,经过卷积池化得到特征图,特征图上的每一个点都对应着原始图片的一块区域,我们通过改变这块区域的长宽比例,大小比例,那么就在这块区域上面生成了不同大小,形状不一的proposal,也就是我们所说的锚anchor。

当我们得到合适的proposal后,目标检测任务也就成功了一半了,接下来的任务就是对目标进行分类和位置回归,我们会在目标检测---Faster RCNN---详细解读(下)中进行讲解。
本文深入探讨FasterRCNN在目标检测领域的应用,解析其如何通过Anchor机制生成Proposal,提升检测准确性。适合对深度学习及目标检测算法感兴趣的学习者。

被折叠的 条评论
为什么被折叠?



