干货目标检测入门,看这篇就够了(上)腾讯云开发者社区

如何从图像中解析出可供计算机理解的信息,是机器视觉的中心问题。深度学习模型由于其强大的表示能力,加之数据量的积累和计算力的进步,成为机器视觉的热点研究方向。

那么,如何理解一张图片?根据后续任务的需要,有三个主要的层次。

图像理解的三个层次

一是分类(Classification),即是将图像结构化为某一类别的信息,用事先确定好的类别(string)或实例ID来描述图片。这一任务是最简单、最基础的图像理解任务,也是深度学习模型最先取得突破和实现大规模应用的任务。其中,ImageNet是最权威的评测集,每年的ILSVRC催生了大量的优秀深度网络结构,为其他任务提供了基础。在应用领域,人脸、场景的识别等都可以归为分类任务。

三是分割(Segmentation)。分割包括语义分割(semanticsegmentation)和实例分割(instancesegmentation),前者是对前背景分离的拓展,要求分离开具有不同语义的图像部分,而后者是检测任务的拓展,要求描述出目标的轮廓(相比检测框更为精细)。分割是对图像的像素级描述,它赋予每个像素类别(实例)意义,适用于理解要求较高的场景,如无人驾驶中对道路和非道路的分割。

两阶段模型因其对图片的两阶段处理得名,也称为基于区域(Region-based)的方法,我们选取R-CNN系列工作作为这一类型的代表。

本文的两大贡献:

1)CNN可用于基于区域的定位和分割物体;

2)监督训练样本数紧缺时,在额外的数据上预训练的模型经过fine-tuning可以取得很好的效果。

第一个贡献影响了之后几乎所有2-stage方法,而第二个贡献中用分类任务(Imagenet)中训练好的模型作为基网络,在检测问题上fine-tuning的做法也在之后的工作中一直沿用。

传统的计算机视觉方法常用精心设计的手工特征(如SIFT,HOG)描述图像,而深度学习的方法则倡导习得特征,从图像分类任务的经验来看,CNN网络自动习得的特征取得的效果已经超出了手工设计的特征。本篇在局部区域应用卷积网络,以发挥卷积网络学习高质量特征的能力。

R-CNN网络结构

R-CNN将检测抽象为两个过程,一是基于图片提出若干可能包含物体的区域(即图片的局部裁剪,被称为RegionProposal),文中使用的是SelectiveSearch算法;二是在提出的这些区域上运行当时表现最好的分类网络(AlexNet),得到每个区域内物体的类别。

IoU的计算

一是数据的准备。输入CNN前,我们需要根据GroundTruth对提出的RegionProposal进行标记,这里使用的指标是IoU(IntersectionoverUnion,交并比)。IoU计算了两个区域之交的面积跟它们之并的比,描述了两个区域的重合程度。

另一点是位置坐标的回归(Bounding-BoxRegression),这一过程是RegionProposal向GroundTruth调整,实现时加入了log/exp变换来使损失保持在合理的量级上,可以看做一种标准化(Normalization)操作。

R-CNN的想法直接明了,即将检测任务转化为区域上的分类任务,是深度学习方法在检测任务上的试水。模型本身存在的问题也很多,如需要训练三个不同的模型(proposal,classification,regression)、重复计算过多导致的性能问题等。尽管如此,这篇论文的很多做法仍然广泛地影响着检测任务上的深度模型革命,后续的很多工作也都是针对改进这一工作而展开,此篇可以称得上"TheFirstPaper"。

FastR-CNN网络结构

上图是FastR-CNN的架构。图片经过featureextractor得到featuremap,同时在原图上运行SelectiveSearch算法并将RoI(RegionofInterset,实为坐标组,可与RegionProposal混用)映射到到featuremap上,再对每个RoI进行RoIPooling操作便得到等长的featurevector,将这些得到的featurevector进行正负样本的整理(保持一定的正负样本比例),分batch传入并行的R-CNN子网络,同时进行分类和回归,并将两者的损失统一起来。

RoIPooling是对输入R-CNN子网络的数据进行准备的关键操作。我们得到的区域常常有不同的大小,在映射到featuremap上之后,会得到不同大小的特征张量。RoIPooling先将RoI等分成目标个数的网格,再在每个网格上进行maxpooling,就得到等长的RoIfeaturevector。

FastR-CNN的这一结构正是检测任务主流2-stage方法所采用的元结构的雏形。

FasterR-CNN是2-stage方法的奠基性工作,提出的RPN网络取代SelectiveSearch算法使得检测任务可以由神经网络端到端地完成。粗略的讲,FasterR-CNN=RPN+FastR-CNN,跟RCNN共享卷积计算的特性使得RPN引入的计算量很小,使得FasterR-CNN可以在单个GPU上以5fps的速度运行,而在精度方面达到SOTA(StateoftheArt,当前最佳)。

本文的主要贡献是提出RegionalProposalNetworks,替代之前的SS算法。RPN网络将Proposal这一任务建模为二分类(是否为物体)的问题。

FasterR-CNN网络结构

第一步是在一个滑动窗口上生成不同大小和长宽比例的anchorbox(如上图右边部分),取定IoU的阈值,按GroundTruth标定这些anchorbox的正负。于是,传入RPN网络的样本数据被整理为anchorbox(坐标)和每个anchorbox是否有物体(二分类标签)。

RPN网络将每个样本映射为一个概率值和四个坐标值,概率值反应这个anchorbox有物体的概率,四个坐标值用于回归定义物体的位置。最后将二分类和坐标回归的损失统一起来,作为RPN网络的目标训练。

由RPN得到RegionProposal在根据概率值筛选后经过类似的标记过程,被传入R-CNN子网络,进行多分类和坐标回归,同样用多任务损失将二者的损失联合。

FasterR-CNN的成功之处在于用RPN网络完成了检测任务的"深度化"。使用滑动窗口生成anchorbox的思想也在后来的工作中越来越多地被采用(YOLOv2等)。这项工作奠定了"RPN+RCNN"的两阶段方法元结构,影响了大部分后续工作。

单阶段模型没有中间的区域检出过程,直接从图片获得预测结果,也被成为Region-free方法。

YOLO是单阶段方法的开山之作。它将检测任务表述成一个统一的、端到端的回归问题,并且以只处理一次图片同时得到位置和分类而得名。

YOLO的主要优点:

YOLO网络结构

YOLO的工作流程如下:

1.准备数据:将图片缩放,划分为等分的网格,每个网格按跟GroundTruth的IoU分配到所要预测的样本。

2.卷积网络:由GoogLeNet更改而来,每个网格对每个类别预测一个条件概率值,并在网格基础上生成B个box,每个box预测五个回归值,四个表征位置,第五个表征这个box含有物体(注意不是某一类物体)的概率和位置的准确程度(由IoU表示)。测试时,分数如下计算:

等式左边第一项由网格预测,后两项由每个box预测,以条件概率的方式得到每个box含有不同类别物体的分数。因而,卷积网络共输出的预测值个数为S×S×(B×5+C),其中S为网格数,B为每个网格生成box个数,C为类别数。

3.后处理:使用NMS(Non-MaximumSuppression,非极大抑制)过滤得到最后的预测框

损失函数被分为三部分:坐标误差、物体误差、类别误差。为了平衡类别不均衡和大小物体等带来的影响,损失函数中添加了权重并将长宽取根号。

YOLO提出了单阶段的新思路,相比两阶段方法,其速度优势明显,实时的特性令人印象深刻。但YOLO本身也存在一些问题,如划分网格较为粗糙,每个网格生成的box个数等限制了对小尺度物体和相近物体的检测。

SSD网络结构

SSD相比YOLO有以下突出的特点:

SSD是单阶段模型早期的集大成者,达到跟接近两阶段模型精度的同时,拥有比两阶段模型快一个数量级的速度。后续的单阶段模型工作大多基于SSD改进展开。

最后,我们对检测模型的基本特征做一个简单的归纳。

检测模型整体上由基础网络(BackboneNetwork)和检测头部(DetectionHead)构成。前者作为特征提取器,给出图像不同大小、不同抽象层次的表示;后者则依据这些表示和监督信息学习类别和位置关联。检测头部负责的类别预测和位置回归两个任务常常是并行进行的,构成多任务的损失进行联合训练。

相比单阶段,两阶段检测模型通常含有一个串行的头部结构,即完成前背景分类和回归后,把中间结果作为RCNN头部的输入再进行一次多分类和位置回归。这种设计带来了一些优点:

这种设计的缺点也很明显:中间结果常常带来空间开销,而串行的方式也使得推断速度无法跟单阶段相比;级联的位置回归则会导致RCNN部分的重复计算(如两个RoI有重叠)。

具体地,对于每张图片,检测模型输出多个预测框(常常远超真实框的个数),我们使用IoU(IntersectionOverUnion,交并比)来标记预测框是否为预测正确。标记完成后,随着预测框的增多,召回率总会提升,在不同的召回率水平下对准确率做平均,即得到AP,最后再对所有类别按其所占比例做平均,即得到mAP。

在较早的PascalVOC数据集上,常采用固定的一个IoU阈值(如0.5,0.75)来计算mAP,现阶段较为权威的MSCOCO数据集上,对不同的IoU阈值(0.5-0.95,0.05为步长)分别计算AP,再综合平均,并且给出了不同大小物体分别的AP表现,对定位准确的模型给予奖励并全面地展现不同大小物体上检测算法的性能,更为科学合理。

自2005年起每年举办一次比赛,最开始只有4类,到2007年扩充为20个类,共有两个常用的版本:2007和2012。学术界常用5k的trainval2007和16k的trainval2012作为训练集(07+12),test2007作为测试集,用10k的trainval2007+test2007和和16k的trainval2012作为训练集(07++12),test2012作为测试集,分别汇报结果。

PascalVOC对早期检测工作起到了重要的推动作用,目前提升的空间相对有限,权威评测集的交接棒也逐渐传给了下面要介绍的COCO。

检测任务在COCO数据集上的进展

COCO数据集收集了大量包含常见物体的日常场景图片,并提供像素级的实例标注以更精确地评估检测和分割算法的效果,致力于推动场景理解的研究进展。依托这一数据集,每年举办一次比赛,现已涵盖检测、分割、关键点识别、注释等机器视觉的中心任务,是继ImageNetChanllenge以来最有影响力的学术竞赛之一。

iconic与non-iconic图片对比

相比ImageNet,COCO更加偏好目标与其场景共同出现的图片,即non-iconicimages。这样的图片能够反映视觉上的语义,更符合图像理解的任务要求。而相对的iconicimages则更适合浅语义的图像分类等任务。

COCO的检测任务共含有80个类,在2014年发布的数据规模分train/val/test分别为80k/40k/40k,学术界较为通用的划分是使用train和35k的val子集作为训练集(trainval35k),使用剩余的val作为测试集(minival),同时向官方的evaluationserver提交结果(test-dev)。除此之外,COCO官方也保留一部分test数据作为比赛的评测集。

COCO数据集分布

在分布方面,COCO的每个类含有更多实例,分布也较为均衡(上图a),每张图片包含更多类和更多的实例(上图b和c,均为直方图,每张图片平均分别含3.3个类和7.7个实例),相比PascalVOC,COCO还含有更多的小物体(下图,横轴是物体占图片的比例)。

COCO数据集物体大小分布

Cityscapes数据示例

Cityscapes数据集专注于现代城市道路场景的理解,提供了30个类的像素级标注,是自动驾驶方向较为权威的评测集。

本节介绍常见的提升检测模型性能的技巧,它们常作为trick在比赛中应用。其实,这样的名称有失公允,部分工作反映了作者对检测模型有启发意义的观察,有些具有成为检测模型标准组件的潜力(如果在早期的工作中即被应用则可能成为通用做法)。读者将它们都看作学术界对解决这一问题的努力即可。对研究者,诚实地报告所引用的其他工作并添加有说服力的消融实验(ablationexpriments)以支撑自己工作的原创性和贡献之处,则是值得倡导的行为。

输入图片的尺寸对检测模型的性能影响相当明显,事实上,多尺度是提升精度最明显的技巧之一。在基础网络部分常常会生成比原图小数十倍的特征图,导致小物体的特征描述不容易被检测网络捕捉。通过输入更大、更多尺寸的图片进行训练,能够在一定程度上提高检测模型对物体大小的鲁棒性,仅在测试阶段引入多尺度,也可享受大尺寸和多尺寸带来的增益。

multi-scaletraining/testing最早见于[1],训练时,预先定义几个固定的尺度,每个epoch随机选择一个尺度进行训练。测试时,生成几个不同尺度的featuremap,对每个RegionProposal,在不同的featuremap上也有不同的尺度,我们选择最接近某一固定尺寸(即检测头部的输入尺寸)的RegionProposal作为后续的输入。在[2]中,选择单一尺度的方式被Maxout(element-wisemax,逐元素取最大)取代:随机选两个相邻尺度,经过Pooling后使用Maxout进行合并,如下图所示。

使用Maxout合并featurevector

近期的工作如FPN等已经尝试在不同尺度的特征图上进行检测,但多尺度训练/测试仍作为一种提升性能的有效技巧被应用在MSCOCO等比赛中。

这一技巧在ResNet的工作[3]中提出,做法是把整张图片作为一个RoI,对其进行RoIPooling并将得到的featurevector拼接于每个RoI的featurevector上,作为一种辅助信息传入之后的R-CNN子网络。目前,也有把相邻尺度上的RoI互相作为context共同传入的做法。

微调法和投票法由工作[4]提出,前者也被称为IterativeLocalization。微调法最初是在SS算法得到的RegionProposal基础上用检测头部进行多次迭代得到一系列box,在ResNet的工作中,作者将输入R-CNN子网络的RegionProposal和R-CNN子网络得到的预测框共同进行NMS(见下面小节)后处理,最后,把跟NMS筛选所得预测框的IoU超过一定阈值的预测框进行按其分数加权的平均,得到最后的预测结果。投票法可以理解为以顶尖筛选出一流,再用一流的结果进行加权投票决策。

OHEM(OnlineHardnegativeExampleMining,在线难例挖掘)见于[5]。两阶段检测模型中,提出的RoIProposal在输入R-CNN子网络前,我们有机会对正负样本(背景类和前景类)的比例进行调整。通常,背景类的RoIProposal个数要远远多于前景类,FastR-CNN的处理方式是随机对两种样本进行上采样和下采样,以使每一batch的正负样本比例保持在1:3,这一做法缓解了类别比例不均衡的问题,是两阶段方法相比单阶段方法具有优势的地方,也被后来的大多数工作沿用。

OHEM图解

但在OHEM的工作中,作者提出用R-CNN子网络对RoIProposal预测的分数来决定每个batch选用的样本,这样,输入R-CNN子网络的RoIProposal总为其表现不好的样本,提高了监督学习的效率。实际操作中,维护两个完全相同的R-CNN子网络,其中一个只进行前向传播来为RoIProposal的选择提供指导,另一个则为正常的R-CNN,参与损失的计算并更新权重,并且将权重复制到前者以使两个分支权重同步。

OHEM以额外的R-CNN子网络的开销来改善RoIProposal的质量,更有效地利用数据的监督信息,成为两阶段模型提升性能的常用部件之一。

NMS后处理图示

Soft-NMS算法改进

上图中的f即为软化函数,通常取线性或高斯函数,后者效果稍好一些。当然,在享受这一增益的同时,Soft-NMS也引入了一些超参,对不同的数据集需要试探以确定最佳配置。

除去上面所列的技巧外,还有一些做法也值得注意:

最后,集成(Ensemble)作为通用的手段也被应用在比赛中。

THE END
1.上海锐测取得一种架空线路双端定位系统专利快报上海锐测取得一种架空线路双端定位系统专利 快报金融界灵通君 北京 0 打开网易新闻 体验效果更佳男人伪装保安潜入女孩家中,想对女孩图谋不轨 白话电影院 1906跟贴 打开APP 小伙只是轻轻发功就治好了瘫痪在床的女人 亦橙说电影 390跟贴 打开APP 伙计对我不错,他结婚了,也给我安排了一个对象 恋上小乐 585https://m.163.com/v/video/VPHJ1F441.html
2.上一篇:测量仪器的特性(一)有的仪器从测量方法上提高其抗偏移性,如千分尺、指示仪器的零位调整,要求仪器水平位置安放,甚至有的仪器带有水准泡,要求正确地安放被测件,有的选择适当的测量方法,使系统误差相互抵消,如采用交换法、替代法、补偿法、对称法等。当然还有一项十分重要的方法,就是让测量仪器定期开展检定、校准,确定测量仪器示值系统误差http://www.chinajl.com.cn/buquedingdu/56630.html
3.测绘科普2.地形测图过去测地形图时一般首先要在测区建立图根控制点,然后在图根控制点上架上全站仪或经纬仪配合小平板测图,现在发展到外业用全站仪和电子手簿配合地物编码,利用大比例尺测图软件来进行测图,甚至于发展到最近的外业电子平板测图等等,都要求在测站上测四周的地形地貌等碎部点,这些碎部点都与测站通视,而且一般要http://www.shandongcehui.cn/wsfw/chkp/201912/t20191203_2466480.html
4.车内空气汽车材料中的VOC测试标准解析行业知识VDA 277和VDA 278的区别:VDA 277主要测试总的挥发物的量TVOC,使用的仪器为顶空GC-FID,用丙酮作标准物质。VDA 278是测VOC value和Fog value(半定量)。 VOC测试方法主要包括了整车测试、总成测试、零部件测试、材料测试。通过逐级控制的方法达到车内有机挥发物的控制。整车测试采样方式各厂不同,下面的采样流程主要https://www.ntek.org.cn/474.html
5.2022年自主招生线上考试考生使用手册各考生需提前准备1个安静整洁和网络条件良好的考试环境,考生周围不允许出现书籍、纸张、闲杂人等,准备2套电量充足的设备(如有需要可提前准备充电器和充电宝),并带上本人身份证: 1、现场设备:1部智能手机(或带摄像头的电脑,运行内存不低于8G,摄像头像素不低于1000万,确保现场画面清晰),并安装好腾讯会议,手机(或https://zsxx.gdfs.edu.cn/info/1017/1505.htm
6.全千兆网络光纤宽带好搭档腾达AC9评测客户端:我们在客户端安装所测无线路由器的管理软件和Performance Endpoint,并设置无线网卡的IP地址为:192.168.0.176。 服务器:在服务器端安装Performance Endpoint和Chariot Console(控制台)。通过百兆网口与网件腾达AC9相连接,组成一个小型局域网,并设置服务端IP地址为:192.168.0.100。 http://www.xa189.net/news/88-cn.html
7.国外太赫兹无损检测技术已趋成熟这种太赫兹传感器体系目前已经被一些制造厂商用于塑料管材的生产监测,这些传感器能够直接在生产线上检测塑料管壁的厚度;这项检测在生产过程中也是非常重要的,管壁太薄,塑料管就会变得非常不稳定;管壁太厚,无疑会浪费许多宝贵的原材料。 直到现在,塑料管生产线上一般都是采用超声检测体系。但超声检测不能准确的在空气http://jxcpjc.jvtc.jx.cn/h-nd-19.html
8.OpenCV学习(二)树莓派上安装opencv树莓派opencvOpenCV学习(二)---树莓派上安装opencv 缘由 找到了之前的树莓派,买了一个摄像头,看看能不能也像ubuntu下那样进行人脸识别这种操作,毕竟考虑到使用的便捷性。总不能用电脑来做个产品吧。 前面用单片机做的人脸识别,还是挺简单的,不过准确性来说,可能还是比较差,用个照片都能糊弄过去,可能还需要加一些红外什么的https://blog.csdn.net/baidu_19348579/article/details/125178129
9.来看!心理测评的正确打开方式另一方面是缺乏统计学检验,一套严格的测评量表大体上需要经过以下流程:阅读并梳理相关理论文献→与相关专家访谈确定量表框架→编制量表题目→前期施测(进行项目分析和因素分析)→正式施测(信、效度分析)→建立常模→量表编制完成。 所以,有一些网上的心理测试答案不要随便相信哦! https://www.cd-psychologist.com/4120/zhuanti/xinlijiankangkepuzhuanlan/2024/0318/27688.html
10.《可能是史上最红的小红鞋——SalomonS第一次跑步测试,竟没有不适的感觉,上脚后很快就习惯了,这是一个好现象,大概是我平时竞速鞋穿得比较多的缘故。 穿着单只215克的鞋子跑步,第一个感觉是轻,有一种多威的感觉。这15公里,我采取先慢后快的策略,前半程五分以外的配速慢跑,主要当热身和适应新鞋。后半程逐渐加速,配速在四分以内鞋子状态依旧稳定,https://iranshao.com/diaries/195507