目录
前言
本系列文章主要内容从RCNN开始引入,重点介绍RCNN其中的思想,主要包括region proposals,NMS,以及soft-NMS,后续文章会逐渐涉及到Fast-RCNN,Faster-RCNN以及yolo系列等经典目标检测算法
一、传统机器视觉
传统机器视觉中,都是通过复杂的数学方法来人为提取特征的,其中较为重要的方法有SIFT/Fast/Hog/Surf/Orb等,这些方法包含了金字塔,角点等经典方法,一定要掌握到位
在通过上述方法提取完特征后,我们将用RANSAC算法来找出有用特征,并将其送入SVM(支持向量机)中来进行分类或者回归,或者也可以用neural network来进行分类或者回归
在这里额外提一句,在CNN中,FC层(全连接层)就是一个经典的neural network(NN网络)
以上即为传统机器视觉进行目标检测的大体流程
二、RCNN整体流程
RCNN从input开始,获得region proposals,再将得到的proposal放入CNN中提取feature map(特征图),最终将map放入SVM中进行分类
其中,RCNN做出的最大突破便是使用CNN提取特征,不同于传统机器视觉中的人为提取特征
在这里额外提一句,region proposal是two stage算法独有的中间结果,如yolo一类的one stage算法是没有的
现在的CNN算法里面,是不用SVM进行分类或者回归的,因为其违背了CNN的特性,CNN中的FC层是可以进行分类或者回归的,这一点在上面也提到过
目标检测算法即是分类算法(cls),也是回归算法(bbox)
region proposal并不是bbox,这点要注意
三、selective search
selective search是一种非监督方法,目的是用来寻找region proposal的
核心思想是通过pixel(像素)的相似程度,将图像分成块,并将相似块进行合并/细分(类似相似度分割),然后再将其resize成同样大小,最终取大概2000个块,即为region proposal
至于为什么必须resize成相同大小,这是因为我们需要将其放入CNN中,而CNN中的FC层则要求其输入必须是相同大小,否则会导致输出的feature vector长度不相等
至于为什么取2000个,这是因为当初RCNN的作者取的就是2000个,可能他们觉得2000个在ImageNe数据集上效果比较好吧....
至于resize会不会损失图片的特征信息,答案是肯定的,但这样会提升模型的鲁棒性,因此我们是希望其会改变的
四、NMS(非极大值抑制)
上面我们讲到,经过selective search算法后,我们提取了大约2000个proposal,现在假设我们这张图片中有四个真实目标,那么我们最终要得到的结果就是4个bbox,也就是说我们需要将其余的1996个proposal给过滤掉,而这个过滤的方法,就是NMS
首先,第一步,我们需要先设置一个阈值Thre=0.8,其次我们的2000个proposal送入CNN后会变成2000个feature vector,最终会得出2000个bbox,这些bbox都会有一个score,即预测概率,如果bbox的score小于阈值Thre,则被滤掉,反之则进入下一个环节,假设我们进入下一个环节的有200个proposal
那么,第二步,我们将这200个bbox按照score从大到小排序,取出其中最大的bbox(P1),将其分别与别的bbox计算iou,并设置阈值Nt,如果iou大于Nt,则将此bbox滤出,重复此操作将所有proposal遍历一遍后,将除了(P1)的其余bbox重复上述操作,直至将所有bbox遍历完,则完成操作,剩余的框便是我们需要的bbox
soft---NMS
但是上述NMS算法有一个缺点,假如让两个目标重叠度较高的话,那其中一个目标的bbox必定会滤除,所以我们想出了一种新的方法---soft-NMS
soft---NMS的思想很简单,即重新构造bbox的score,具体方法如上图绿框所示,其中函数f()为高斯核,所以当iou大,则f就越小,si就越小,但是如果si如果为真实目标的bbox的score的话,那么si的值必定很大,故可以抵消高斯核的负影响,然后我们再设置一个阈值,当更新后的si小于阈值,则被滤除
以上便为soft---NMS的大体过程,总结下来便是:在原版NMS算法暴力使用iou滤除的基础上引入了bbox的score属性,通过利用正目标的si过大可抵消高斯核的负影响的特性,来滤除别的bbox,同时也避免了多个目标重叠度较高导致的问题
此处也多说几点:
1.NMS算法中,算法轮了几轮,则最终会保留几个框
2.NMS算法是不管类别的,不管你是什么cls的bbox,他都会一起进行过滤
3.iou:顾名思义,iou就是把预测框与真实框的相交的面积除以相并的面积
iou的计算方法为:交集/并集
4.NMS算法后续也有很多种创新,具体分为两个方向发展,分别是精准和快速两个方向
下图为NMS发展的其中几种算法,感兴趣的同学可以去了解一下
总结
本系列文章会以RCC,Fast-RCNN,Faster-RCNN,yolo系列的顺序,尽可能通俗易懂的带大家理解CV方向卷积神经网络的原理,对大家的知识要求储备不是特别高,新入门的小白也是可以享用的,其中一些专业名词我也会专门标注出来,请大家放心