作者:RayChiu_Labloy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
目录
效果评估->IoU(Intersection over Union)真实框预测框交并比
引言
回顾神经网络和卷积神经网络的技术更新发展经典CNN卷积神经网络发展史_RayChiu757374816的博客-CSDN博客
我们看到深度学习在人工智能领域已经是解决问题的排头兵了,可以说人工智能各个方向出现棘手问题我们大多数情况会优先考虑深度学习。
而深度学习中有一个重要的研究领域-->计算机视觉,其中有一个小分支目标检测,是我们今天要讨论的内容,目标检测也是当下人工智能在社会生产活动中应用最为广发也最为成熟的领域。
深度学习在计算机视觉的图像领域几个任务
图像分类、目标检测、 语义分割、实例分割
参考:深度学习在图像领域的几个任务和目标检测中的正负样本问题_RayChiu757374816的博客-CSDN博客
目标检测技术
定义
目标检测是这样一种任务:在图像或者视频中,找到目标位置(定位)并进行分类。
历史背景:
目标检测对于人类来说,是一项非常简单的任务,就连几个月大的婴儿都能识别出一些常见目标。然而,直到十年之前,让机器学会目标检测仍是一个艰巨的任务。目标检测需要识别并定位视野中某个目标(如:汽车、行人、路标等)的所有实例,其与其他的类似任务,如分类、分割、运动估计、场景理解等,一同构成了计算机视觉领域的基础问题。
现有的目标检测方法有传统检测方法和基于深度学习的检测方法。
早期的传统的、古典的目标检测模型是通过集成一系列手工设计的特征提取器(如:Viola-Jones、HOG、SIFT、DPM等)来构造的,这些模型的特点是:速度慢、精度低、跨域性能差。
重新崛起的CNN和深度学习图像分类改变了视觉领域的格局,在2012 ImageNet大规模视觉识别挑战赛(ILSVRC)上出现的AlexNet,启发了后续关于CNN的一些列研究。近年来,随着新的工具及技术的发展,目标检测的应用呈指数级增长,已在自动驾驶、身份检测到安全及医疗、军事国防、人工智能等领域得到广泛应用。
几个难题
由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题,具体体现在以下几个技术问题点上:
(1)分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。
(2)定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。
(3)检测-Detection:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。
(4)分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。
所以,目标检测是一个分类、回归问题的叠加。
目标检测的应用
1)人脸检测
1.智能门控
2.员工考勤签到
3.智慧超市
4.人脸支付
5.车站、机场实名认证
6.公共安全:逃犯抓捕、走失人员检测
2)行人检测
1.智能辅助驾驶
2.智能监控
3.暴恐检测(根据面相识别暴恐倾向)
4.移动侦测、区域入侵检测、安全帽/安全带检测
3)车辆检测
1.自动驾驶
2.违章查询、关键通道检测
3.广告检测(检测广告中的车辆类型,弹出链接)
4)遥感检测
1.大地遥感,如土地使用、公路、水渠、河流监控
2.农作物监控
3.军事检测
传统的、古典的目标检测方法
传统检测方法一般分三个阶段:
1.首先在给定图像上采用不同大小的滑动窗口对整幅图像进行遍历选择候选区域,或者采用选择搜索算法Selective Search来选择候选区域;
2.然后对这些区域提取特征,使用以下方法之一来定义特征:
- 基于 Haar 功能的 Viola–Jones 目标检测框架
- 尺度不变特征变换(SIFT)
- 定向梯度直方图(HOG)特征
- DPM算法
3.最后基于SVM支持向量机模型、RF 模型等常用分类器进行分类。
虽然这种方法取得了不错的结果,但是采用滑动窗口进行区域选择时没有针对性导致时间复杂度高且窗口冗余;另外手工设计的特征没有很好的鲁棒性。
Region proposal区域提案思路
区域提案、候选区域就是图像中可能是目标的区域。
通过先找到候选区域然后去做目标检测的方式,首先避免了因暴力扫描对无目标区域的分析,占用更少的资源加快训练,其次可以提升检测的准确性。
区别一下Region Proposal和bounding box,Region Proposal是一个区域,bounding box就是这个区域的4条边。
候选框生成的两种常用方案
滑动窗口
图像金字塔思路:
用滑动窗口的方法时,在图片上滑动的矩形框尺寸是固定的,这就导致了如果目标的尺寸相对于矩形框太大或太小都会导致我们无法检测到目标,我们可以使用不同大小的滑动框来解决上述问题。
而使用图像金字塔和滑动窗口相结合的方式可以近似实现这种思路。
图像金字塔就是把图像下采样出不同尺寸大小的图像:
这样使用相同的滑动框就可以找到不同大小的目标了。
滑动窗口流程:
首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动。每次滑动时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率,则认为检测到了物体。对每个不同窗口大小的滑窗都进行检测后,会得到不同窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。最终,经过NMS筛选后获得检测到的物体。
滑窗法简单易于理解,但是不同窗口大小进行图像全局搜索导致效率低下,而且设计窗口大小时候还需要考虑物体的长宽比。所以,对于实时性要求较高的分类器,不推荐使用滑窗法。
选择搜索算法Selective Search
选择搜索方法是最为熟知的图像bouding boxes提取算法,由KoenE.A于2011年提出。
选择搜索算法的主要观点:图像中物体可能存在的区域应该是有某些相似性或者连续性区域的。因此,选择搜索基于上面这一想法采用子区域合并的方法进行提取bounding boxes候选边界框。首先,对输入图像进行分割算法产生许多小的子区域。其次,根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并,不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做bounding boxes(外切矩形),这些子区域外切矩形就是通常所说的候选框。
step0:生成区域集R
step1:计算区域集R里每个相邻区域的相似度S={s1, s2,…}
step2:找出相似度最高的两个区域,将其合并为新集,添加进R
step3:从S中移除所有与step2中有关的子集
step4:计算新集与所有子集的相似度
step5:跳至step2,直至S为空
选择搜索优点:
计算效率优于滑窗法。
由于采用子区域合并策略,所以可以包含各种大小的疑似物体框。
合并区域相似的指标多样性,提高了检测物体的概率。
效果评估->IoU(Intersection over Union)真实框预测框交并比
概念定义:
IoU是一种测量在特定数据集中检测相应物体准确度的一个标准。IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(bounding boxex)的任务都可以用IoU来进行测量。为了可以使IoU用于测量任意大小形状的物体检测,我们需要ground-truth 和 bounding boxes,即真实框、预测框。
这个标准用于测量真实和预测之间的相关度,相关度越高,该值越高。如上图所示。绿色标线是人为标记的正确结果(ground-truth),红色标线是算法预测的结果(predicted)。
IoU计算
IoU是两个区域重叠的部分除以两个区域的集合部分得出的结果,通过设定的阈值,与这个IoU计算结果比较。
举例,绿色是预测框,红色是真实框:
IoU和目标检测中的正负样本生成问题
参考:深度学习在图像领域的几个任务和目标检测中的正负样本问题_RayChiu757374816的博客-CSDN博客
NMS非极大值抑制
预测结果中,可能多个预测结果间存在重叠部分,需要保留交并比最大的、去掉非最大的预测结果,这就是非极大值抑制(Non-Maximum Suppression,简写作NMS)。如下图所示,对同一个物体预测结果包含三个概率0.8/0.9/0.95,经过非极大值抑制后,仅保留概率最大的预测结果。
非极大值抑制使用来根据Iou阈值筛选候选框的,过程是:
- 首先将所有框按照置信度进行排序(bboxs集合);
- 选取bboxs集合中置信度最高的框m,放入集合M中;
- 计算bboxs里所有框和m的IOU,如果IOU大于阈值,则视为重复框,将之除去;
- 重复2、3步。、
放到整个流程中是:
首先原图先生成候选框,然后根据IoU划分正负样本,最后NMS筛选候选框。
基于SS的传统、古典目标检测的流程:
出自论文:
Uijlings, Jasper RR, et al. "Selective search for object recognition." International journal of computer vision, 104(2) (2013): 154-171.
第一步:准备数据集
负样本: 给定一张训练图像 --> 形成原始的过分割区域 --> 使用本文SS方法对区域进行融合,形成一系列最可能的候选区域 --> 计算每个候选区域与真实标记区域GT之间的重合度,如果区域A与GT的重合度在20-50%之间,而且A与其他的任何一个已生成的负样本之间的重合度不大于70%,则A被采纳为负样本,否则丢弃A,继续判别下一个区域;
正样本: 就是那些手工标记的GT区域作为正样本;
这里注意正负样本均衡问题。
第二步提取正负样本的Haar、HOG特征
HOG特征 + bag-of-words特征,同时辅助性地增加了SIFT,two colour SIFT,Extended OpponentSIFT,RGB-SIFT这四种特征,这样特征加起来的维度达到了惊人的360,000
第三步使用SVM等分类器训练:
第四步: 反馈False Positive
将分类器训练好了,训练好了就完了吗? NO! 现在流行一种反馈机制,SVM训练完成了,将得到每个训练图像每个候选区域的软分类结果(每个区域都会得到一个属于正样本的概率),一般如果概率大于0.5将被认为是目标,否则被认为是非目标,如果完全分类正确,所有的正样本的SVM输出概率都大于0.5,所有负样本的SVM输出概率都小于0.5,但是最常见的情况是有一部分的负样本的输入概率也是大于0.5的,我们会错误地将这样样本认为是目标,这些样本就称之为"False Positives".
我们这里就是想把这些"False Positives"收集起来,以刚才训练得到的SVM的权值作为其初始权值,对SVM进行二次训练,经过二次训练的SVM的分类准确度一般会有一定的提升;
第五步测试
测试的过程基本和训练过程相同: 首先用SS方法得到测试图像上候选区域 --> 然后提取每个区域的特征向量 --> 送入已训练好的SVM进行软分类 --> 将这些区域按照概率值进行排序 --> 把概率值小于0.5的区域去除 --> 对那些概率值大于0.5的,计算每个区域与比它分数更高的区域之间的重叠程度,如果重叠程度大于30%,则把这个区域也去除了 --> 最后剩下的区域为目标区域.
【如果对您有帮助,交个朋友给个一键三连吧,您的肯定是我博客高质量维护的动力!!!】