学习的过程中发现一个问题,如果不能大概的了解一下一个算法的思想直接去看他的论文,或者去看他算法的讲解就很痛苦,看不懂,学的效率也非常低,类似我之前发的RCNN论文精度的博客。RCNN目标检测算法内容详解(依托论文讲解)_小馨馨的小翟的博客-CSDN博客_rcnn论文下载
我想我们在学习一个算法之前,还是得整体大概的了解一下这个算法的流程,是如何工作的,然后再去完成细节的学习这个算法,这样效果应该会好一点。好了,废话少说,我们讲一个RCNN的大致思想和流程,方便大家去细致的学习RCNN,当然也是为大家细致的学习RCNN做个铺垫。
RCNN——Region-CNN(区域卷积神经网络)
在讲述RCNN之前,我们要简单讲解一下目标检测的刚开始发展情况。最开始的只有图像分类算法,后来人们发现当一个图片上存在多个目标的时候,我们单纯对图片进行分类已经没有意义,我们更需要先对目标进行定位,即获得目标的位置,然后再进行分类(即识别目标的种类)。由此,人满开始了对目标检测算法的研究。
刚开始设计的目标检测算法是滑动窗口法如下图:
滑动窗口从最上角到右下角进行移动,然后对每个窗口截取的图像打入到CNN里面进行分类,从而确定目标的位置。(这是最开始的目标检测算法)当然这是非常低效的,因为我们需要把图像经过滑动窗口截取成好多块,然后都打入CNN进行训练,非常浪费时间和算力。
特别是这一块地,上面啥目标都没有,我却还需要把他打入到CNN上进行训练,这显示是低效且无用的。
就在这个时候,R-CNN出现了,横空出世,提出了候选区域的思想,解决了无用区域被打入CNN进行训练导致算法太慢,算力浪费等问题。
那么到底什么是候选区域呢? 简单来说就是我们的算法在进行滑动窗口处理图像之前,先对图像进行图像分割,获取可能出现目标的区域,然后再进行滑动窗口处理,这样可以尽可能的减少滑动窗口对无用的区域进行识别分类,大大的提高了算法的速度。
具体的候选区域选择,图像分割的流程如下:
我们在对象图像进行滑动窗口处理之前,先使用传统的图像处理方法对图像进行图像分割,这样我们就能确定图像中大块的颜色不一样的连通区域即是我们可能存在的目标对象。即,图像存在的蓝色的绿色的等等就是可能存在目标的区域,即所谓的候选区域,然后我们只对这些区域进行滑动窗口处理,这样就大大的提升了算法的效率!
这样看来总结一下RCNN的流程:
首先我们对图像进行传统图像分割,
然后将图像中的连通区域作为我们滑动窗口的候选区域region
对于这些候选区域region进行滑动窗口处理,然后打入CNN进行分类识别
输出目标的坐标和种类,即达到目标检测的目的。
后续的对于R-CNN的优化算法,例如Fast R-CNN 或者 Raster R-CNN也大部分集中在对使用更好的图像分割算法而不是传统的图像算法,或者使用的卷积代替滑动窗口等等。但是总体R-CNN系列算法的流程是没有变的。虽然说对于R-CNN的一系列优化大大加快了R-CNN系列算法的速度,但是跟yolo系列比起来,它还是太慢了,太慢了!下期我们将会讲述yolo系列的算法,冲冲冲!下期肝yolo!
好了,我想我已经说的很明白了,有问题的可以在评论里指出来,大家一起学习!真理越辩越明!