2023年7月26日发(作者:)
⼲货|深度学习⽬标检测的主要问题和挑战!从简单的图像分类到3D姿势识别,计算机视觉领域从来不缺乏有趣的问题。其中,我们最感兴趣的,也投⼊精⼒去研究的领域之⼀就是⽬标检测。就像许多其他计算机视觉问题,该领域还缺乏⼀个显⽽易见或者“做好的”⽅法,这意味着⽬标检测仍然有很⼤的进步空间。在进⼊⽬标检测领域之前,让我们快速的过⼀遍计算机视觉领域最常见的问题。⼀、⽬标检测 vs. 其他计算机视觉问题1、分类:这⼤概是计算机视觉领域最知名的问题了,它是把⼀张图像分类正确分类到很多种类中去。学术界最流⾏的数据集是ImageNet,它由百万张分类好的图⽚构成。它的⼀部门数据被拿来⽤作每年的ImageNet⼤规模图像识别竞赛(ILSVRC)。近些年图像分类模型已经超过了⼈类的表现,因此该问题算是⼀个已经解决的问题。然后,还有很多其他图像分类竞赛,有很多⽂章记录下了这些已经解决的问题以及悬⽽未决的挑战。图像分类的例⼦2.定位:与图像分类类似,定位就是找到⼀张图⽚中的⼀个单⼀物体的位置。定位的例⼦定位在⽣活中是很实⽤的。例如,智能裁剪(根据⽬标的位置来裁剪图像),或者进⾏⽬标提取,以供其他技术做进⼀步的处理。它可以与分类结合起来--不仅定位到物体,还能把物体进⾏分类。3、实例分割:从这种仅发现图像中的物体的⽬标定位技术更进⼀步,我们想对检测到的⽬标进⾏每个像素进⾏精细的分类,我们把这个问题称之为实例或者⽬标分割。 4、⽬标检测:把定位和分类任务结合起来,我们就需要同时进⾏⼀张图⽚中的多个⽬标的检测和分类。⽬标检测问题就是定位和分类⼀张图像中的多个物体。与定位最重要的差别就是“变量”部分。与分类任务只输出⼀个类别信息不同的是,⽬标检测的输出的个数是不定的,因为⼀张图⽚中检测到的⽬标数量是不定的。在本⽂中我们会深⼊介绍⽬标检测的实际应⽤的细节,以及⽬标检测,作为⼀个机器学习问题,存在的主要问题是什么,过去⼏年使⽤深度学习⽅法来解决它的⽅法有什么变化。⽬标检测例⼦5、实际应⽤:在我们的Tryolabs实验室,我们专门从事应⽤最好的机器学习⽅法来解决商业问题,所以,我们喜欢所有疯狂的机器学习研究问题,但是最后我们会在应⽤阶段考虑更多实际问题。 虽然⽬标检测还算是⼯业界的⼀个新的⼯具,但已经有很多使⽤⽬标检测技术的实⽤⽽有趣的应⽤了。 6、⾯部检测:20世纪第⼀个⼗年的中期,⼀些傻⽠相机已经使⽤检测⾯部技术来做⾼效⾃动对焦了。它是微型版的⽬标检测,其他类型⽬标的检测⽅法我们会稍后介绍。 7、已经使⽤检测⾯部技术来做⾼效⾃动对焦了。它是微型版的⽬标检测,其他类型⽬标的检测⽅法我们会稍后介绍。 7、数⼈头:⽬标检测的⼀个最简单也最容易忽视的应⽤就是数数。统计⼈、车、花朵或者微⽣物的数量是现实⽣活中各种不同类型的使⽤图形信息的系统最⼴泛的需求。最近澎湃发展的监控设备中,⾥⾯蕴藏着前所未有的使⽤计算机视觉⽅法将原始像素信息转换为结构化信息的巨⼤机会。 8、图像搜索引擎:最后,我们喜爱的⼀个应⽤实例是Pinterest的图形搜索引擎.他们使⽤⽬标检测技术作为索引图像中不同部位的⼯具。这样的话,当你搜索⼀个特定的⼿提袋,你可以找到你想要的⼿提袋在不同场景下的实例图。这⽐⾕歌图像反搜索引擎仅仅找到相似的图像更有⽤。相似图像:我们应⽤⽬标检测技术来定位包或者鞋⼦这种产品。在这个例⼦中,⽤户点击⾃动标注好的物体去查看相似的产品。(Pinterest论⽂中的例⼦)8、卫星图像分析:在拥有廉价⽆⼈机和可⽀付的起的卫星服务之前,我们从没有这么多地球的俯视图。可是那时候就已经有公司开始使⽤⽬标检测技术来计算卫星图中的车,树和轮船了,就像Planet和Descartes LabS。以前可不可能(它们极为昂贵)获取这些⾼清晰度的数据,现在很多⼈已经可以使⽤它了。(译者:真是“旧时王谢堂前燕,飞⼊寻常百姓家”!) ⼀些公司使⽤⽆⼈机来拍摄那些⼈类难以进⼊的区域的视频来做⾃动化检测(就像BetterView公司这样),或者使⽤⽬标检测技术来做通⽤分析(就像TensorFligh)。基于⽬标检测⽅法,⼀些公司在没有⼈类⼲预的情况下来做⾃动检测和定位问题。TensorFlight⼆、⽬标检测技术的问题和挑战让我们开始深⼊⽬标检测的主要问题吧。1、⽬标的数⽬问题:我们前⾯已经提到了图⽚中多⽬标的问题,但是我们忽视了为什么⽬标数据是⼀个问题。当训练⼀个机器学习模型的时候,你经常需要将数据弄成固定⼤⼩的向量。因为我们事先不知道图⽚中有多少个⽬标,我们不知道正确的输出数量。因为这个问题,我们需要⼀些后处理,不过这增加了模型的复杂度。以前,这种输出不定数量问题都是使⽤基于滑动窗⼝的⽅法解决的,⽣成图⽚中不同位置的所有固定⼤⼩的特征。然后丢弃⼀些不包含⽬标的窗⼝,合并⼀些窗⼝,从⽽得到最终输出。滑动窗⼝的例⼦2、⼤⼩问题:另外⼀个⼤挑战是⽬标的⼤⼩不⼀致问题。当做图像分类问题的时候,我们只需要将图⽚中占篇幅最⼤的⽬标分类就⾏了。另⼀⽅⾯,⽬标检测的时候,可能⼀些⽬标仅仅有⼗来个像素⼤⼩(或者说是原始图像中很⼩的⽐例)。传统⽅法⼀般使⽤不同⼤⼩的滑动窗⼝来解决它,这很简单但是特别低效。 3、建模:第三个问题是怎么同时解决定位和分类这两个问题。我们如何组合这两种不同种类的问题:将定位和分类合到⼀个模型来解决。在介绍深度学习图像检测⽅法之前,我们先对传统⽅法做⼀个快速回顾。4、传统⽅法:尽管有很多不同类型的传统⽬标检测⽅法,但是我们只关注两个最流⾏的⽅法(这两个现在还在⼴泛应⽤)。第⼀个是2001年Paul Viola和Micahel Jones在论⽂“鲁棒实时⽬标检测"提出的Viola-Jones 框架.这个⽅法速度快,相对简单,因此傻⽠相机的实时脸部检测就是使⽤的这个算法,它的运算量很⼩。我们不会详细介绍这个框架是怎么⼯作、怎么训练的,但是概括来说,它使⽤Harr 特征来⽣成不同的(可能上千个)简单的⼆分类.这些分类被级联的多尺度滑动窗⼝来处理,并且会及时丢弃错误分类。另外⼀个与之相似的传统⽅法是梯度⽅向直⽅图(HOG)特征和⽀持向量机(SVM)来分类。它仍然依赖多尺度多尺度滑动窗⼝,虽然它优于Viola-Jones⽅法,但它仍旧⽐较慢。5、深度学习⽅法:深度学习作为机器学习领域的变⾰者已经众⼈皆知了,尤其是计算机视觉领域。与深度学习在图形分类领域碾压传统模型类似,深度学习模型现在也是⽬标检测领域最好的⽅法。现在你已经对⽬标检测有了⼀个更加直观的了解,也知道了其中的难点在哪⾥以及传统⽅法是怎么解决它的,现在我们对过去⼏年深度学习⽬标检测⽅法做⼀个综述介绍。6、OverFeat:第⼀个使⽤深度学习做⽬标检测并取得很⼤进展的⽅法是纽约⼤学在2013年提出的OverFeat。他们提出了⼀个使⽤卷积神经⽹络(CNN)的多尺度滑动窗⼝算法。 7、R-CNN:在OverFeat提出不就,伯克利⼤学的RossGirshick等⼈就提出了RCNN(基于区域的卷积特征)[9],它在⽬标检测⽐赛上相⽐其他⽅法取得了50%的性能提升。他们提出了⼀个三阶的⽅法:•使⽤区域提议⽅法(最流⾏的⽅法是选择性搜索Selective Search)提取可能的⽬标;•使⽤CNN在区域上提取特征;•使⽤⽀持向量机(SVM)对区域进⾏分类Ross Girshick等⼈在2014年提出的RCNN虽然RCNN取得了了不起的成绩,但是训练过程中有很多的问题。训练它,你⾸先需要⽣成训练集的提议区域,然后在每个区域使⽤CNN特征提取器来提取特征(在Pascal2012的训练集上,需要⽣成⼤于200GB的中间⽂件),然后训练SVM分类器。8、Fast R-CNN:⼀年以后,Ross Girshick发表了Fast RCNN,这个⽅法迅速进化成了⼀个纯深度学习的⽅法。与R-CNN相似,它也使⽤Selective Search来⽣成区域提议,但与R-CNN独⽴的提取不同区域然后使⽤SVM分类器不同的是,Fast RCNN在整张图上使⽤CNN来提取特征,然后在特征图上使⽤区域兴趣池化(Region of Interest,ROI),最后是⼀个反向传播⽹络来做分类和边框回归。这个⽅法不仅快,⽽且因为RoI池化层和全连接层,该模型可以进⾏端到端的差分,并且训练也更容易。最⼤的不⾜是该模型仍旧依赖于Selective Search(或者其他的区域提议算法),这也成为了模型推理阶段的⼀个瓶颈。Fast R-CNN架构9、YOLO:很快,Joseph Redmon(Girshick也作为共同作者或出现)发表了⼀篇名为You Only Look Once: Unified,Real-Time Object Detection(YOLO)的论⽂。YOLO提出了⼀个简单的卷积神经⽹络⽅法,它取的了很好的结果,速度也⾮常快,第⼀次让⽬标检测达到了实时性。YOLO架构10、Faster RCNN:随后,任少卿(Girshick也作为共同作者,现在Facebook研究院)发表了Faster R-CNN,这是R-CNN系列的第三个迭代。Faster R-CNN增加了⼀个所谓的“区域提议⽹络(Regio Proosal Network,RPN)”,试图摆出SelectiveSearch算法从⽽让模型实现完全端到端的训练。我们不会详细介绍RPNs是怎么做的,但是概括来说,它的作⽤是根据“物体”的分数来输出可能⽬标。这些⽬标区域被后⾯的RoI池化和全连接层来做分类(译者注:其实还有回归呢)。我们会在后续的博客中详细介绍该结构的细节。Faster R-CNN 架构11、SSD和R-FCN:最后两篇著名的论⽂,SSD在YOLO的基础上改进了⼀些,它使⽤多个尺度的卷积特征图以达到更好的结果和速度,R-FCN(Region-based Fully Convolutional Networks )使⽤了Faster RCNN的卷积架构。 12、数据集的重要性:在研究中,数据集起到了⼀个直观重要的作⽤(有时候他们的作⽤甚⾄被低估了)。每当⼀个新的数据集发布以后,新的论⽂接踵⽽⾄,新的模型被各种⽐较,不断进步,⼀切可能的想法都被提出来了。不幸的是,⽬标检测的数据集不是太多。数据⽐较难(也很昂贵)获取,公司可能不愿意免费发布他们投资的产品,⼤学⼜缺乏资源。现在有⼀些弥⾜珍贵的数据集,下⾯是⼀些公开的数据集:三、结论总⽽⾔之,⽬标检测领域现在有很多机会,不管是在未知的应⽤还是在提出新的最优的⽅法上。即使这只是⼀个⽬标检测的概述,我希望它抛砖引⽟,引导你们更深⼊的了解知识。后⾯⼏周,我们会做⼀个⽬标检测框架实现的细节的⽂章,以及评估标准和训练模型的⽅法。我们也会尝试将过去的⽬标检测算法应⽤到其他问题上。(翻译:元峰)
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690331999a333904.html
评论列表(0条)