汽车检测与维修主要论文以系统逻辑和故障诊断为方向,希望我的回答对您有所帮助,望采纳,谢谢。
对于目标检测方向并不是特别熟悉,本文记录一下RCNN, fast-RCNN, faster-RCNN, mask-RCNN这4篇有关目标检测的论文笔记和学习心得。
R-CNN的意思就是Region based,主要思路就是根据一张图像,提取多个region,再将每个Region输入CNN来进行特征的提取。因此RCNN就可以分为 Region proposals , Feature extraction 两个主要部分,提取的特征就可以输入任意一个分类器来进行分类。 模型的流程图如下:
在训练的时候,首先使用的是已经训练好的CNN网络作为特征提取器,但是由于预训练是在分类数据集上,因此在应用到检测之前要做finetune。也就是说,为了将用ImageNet数据集训练的网络应用到新的任务(检测),新的数据集(region)上,作者将原来的CNN最后的1000类的fc层,更改为了 层, 代表待检测的物体的类别数。然后,对于所有的region,如果它和ground truth的重叠率大于0.5,就认为是正类。 对于分类器的训练,作者发现选择多大的IoU来区分正类和负类非常关键。并且,对于每一类,都会训练一个分类器。
框的回归非常重要,在对每一个region proposal使用分类器进行打分评价之后,作者使用一个回归器来预测一个新的框作为结果。这个回归器使用的特征是从CNN中提取的特征。回归器的训练中,输入是 region proposal 的 和ground truth的 ,目标是学习一种变换,使得region proposal通过该变换能够接近ground truth。同时,希望这种变换拥有尺度不变性,也就是说尺度变化的话,变换不会改变。 如下图所示,每一个regressor会学习一组参数,特征输入是pool 5的特征输出,拟合的目标是 。
Fast-RCNN 主要解决的问题是在RCNN中对于每一个region proposal都进行特征提取,会产生非常多的冗余计算,因此可以先对一张图像进行特征提取,再根据region proposal在相应的特征上进行划分得到对应region的特征(映射关系)。 这样便可以实现共享计算提高速度,但是与SPPnets不同,SPPnets在一副图像得到对应的特征后,从这张图像的特征上proposal对应的部分,采用空间金字塔池化,如下图:
RoI pooling的方法很简单,类似于空间金字塔pooling,它将proposal部分对应卷积层输出的特征(称之为RoI,因为用于做pooling的特征是 region of interest,也就是我们感兴趣的区域)划分成 块,然后对每一块求最大值,最终得到了一个 的特征图。可以看出,它只是空间金字塔pooling的一部分。 但是SPP-nets的空间金字塔也是可以求导的,那么它到底不好在哪里呢?因为当每一个RoI都可能来源于不同的图像的时候(R-CNN和SPPnets的训练策略是从一个batch的不同图像中,分别挑选一个proposal region),SPPNets的训练非常地低效,这种低效来源于在SPPnets的训练中,每个RoI的感受野都非常地大,很可能对应了原图的整个图像,因此,得到的特征也几乎对应了整张图像,所以输入的图像也就很大。 为了提高效率,Fast-RCNN首先选取 个图像,再从每个图像上选择 个RoI,这样的效率就比从每个图像提取一个RoI提高了 倍。
为了将分类和框回归结合起来,作者采用了多任务的loss,来进行联合的训练。具体来说就是将分类的loss和框回归的loss结合起来。网络的设计上非常直接,就是将RoI得到的特征接几个FC层后,分别接不同的输出层。对应于分类部分,特征会接一个softmax输出,用于分类,对于框回归部分,会接一个输出4维特征的输出层,然后分别计算loss,用于反向传播。loss的公式如下:
回归的target可以参考前面的R-CNN部分。
notes
为什么比fast还fast呢?主要原因是在这篇论文中提出了一个新的层:RPN(region proposal networks)用于替代之前的selective search。这个层还可以在GPU上运算来提高速度。 RPN的目的:
为了能够进行region proposal,作者使用了一个小的网络,在基础的卷积层输出的特征上进行滑动,这个网络输入大小为 ,输入后会映射(用 的卷积)为一个固定长度的特征向量,然后接两个并联的fc层(用 的卷积层代替),这两个fc层,一个为box-regressoin,一个为box-classification。如下图:
在每一个滑动窗口(可以参考 ),为了考虑到尽可能多的框的情况,作者设计了anchors来作为region proposal。anchors就是对于每一个滑动窗口的中心位置,在该位置对应的原图位置的基础上,按照不同的尺度,长宽比例框出 个不同的区域。然后根据这些anchors对应的原始图像位置以及区域,和ground truth,就可以给每一个滑动窗口的每一个anchor进行标记,也就是赋予label,满足一定条件标记为正类(比如和ground truth重叠大于一个值),一定条件为负类。对于正类,就可以根据ground truth和该anchor对应的原图的区域之间的变换关系(参考前面的R-CNN的框回归),得到回归器中的目标,用于训练。也就是论文中的loss function部分:
自然地,也就要求RPN的两个并联的FC层一个输出2k个值用于表示这k个anchor对应的区域的正类,负类的概率,另一个输出4k个值,用于表示框回归的变换的预测值。
对于整个网络的训练,作者采用了一种叫做 4-step Alternating Training 的方法。具体可以参考论文。
与之前的检测任务稍有不同,mask r-cnn的任务是做instance segmentation。因此,它需要对每一个像素点进行分类。 与Faster R-CNN不同,Faster R-CNN对每一个候选框产生两个输出,一个是类别,一个是bounding box的offset。Mask R-CNN新增加了一个输出,作为物体的mask。这个mask类似于ps中的蒙版。
与Faster R-CNN类似的是,Mask R-CNN同样采用RPN来进行Region Proposal。但是在之后,对于每一个RoI,mask r-cnn还输出了一个二值化的mask。
不像类别,框回归,输出都可以是一个向量,mask必须保持一定的空间信息。因此,作者采用FCN来从每个RoI中预测一个 的mask。
由于属于像素级别的预测问题,就需要RoI能够在进行特征提取的时候保持住空间信息,至少在像素级别上能够对应起来。因此,传统的取最大值的方法就显得不合适。 RoI Pooling,经历了两个量化的过程: 第一个:从roi proposal到feature map的映射过程。 第二个:从feature map划分成7*7的bin,每个bin使用max pooling。
为此,作者使用了RoIAlign。如下图
为了避免上面提到的量化过程
可以参考
作者使用ResNet作为基础的特征提取的网络。 对于预测类别,回归框,mask的网络使用如下图结构:
整体看完这几篇大佬的论文,虽说没有弄清楚每一个实现细节,但是大体上了解了算法的思路。可以看出,出发点都源于深度神经网络在特征提取上的卓越能力,因此一众大神试图将这种能力应用在检测问题中。从R-CNN中简单地用于特征提取,到为了提高速度减少计算的Fast R-CNN,再到为了将region proposal集成进入整个模型中,并且利用GPU加速的RPN,也就是Faster R-CNN。再到为了应用于instance segmentation任务中,设计的RoIAlign和mask。包括bounding box regression,pooling层的设计,训练方法的选择,loss的设计等等细节,无一不体现了大师们的思考和创造力。 可能在我们这些“拿来”者的眼中,这些方法都显得“理所应当”和巧妙,好用,但是,它们背后隐藏的选择和这些选择的思考却更值得我们学习。 以及,对待每一个问题,如何设计出合理的解决方案,以及方案的效率,通用性,更是应该我们努力的方向。
入侵检测技术在网络安全的应用论文
摘要: 入侵检测技术是现代网络安全技术的一个分支,入侵检测技术是能更加迅速及稳定地捕捉到网络安全的弊端,并通过相关算法对网络安全加以保证。
关键词: 入侵检测技术;网络安全;应用
1引言
自21世纪以来,计算机技术和电子信息快速发展,而后又随着互联网的更新换代,以及网络进入千家万户,标志着人类进入了信息化社会,网络也作为一种和人类生活息息相关的生活资料所存在,我们日常生活和工作都是网络资源的获取以及利用过程,高效的资源获取会给我们创造更高的价值,也会使我们在工作和生活中获得更大的竞争优势。入侵检测技术可以很好的帮助用户实现网络安全以及管理者对入侵者管理,使网络安全工作更加的入侵检测技术化和科学化。与以往的人工记录不同,入侵检测技术有着以下优点:高效的数据处理速度和精准的准确性。通过从入侵者的名称、分类、安全量进行查找,不仅快速,而且准确率高。人们不在局限于必须去网络馆分门别类的寻找入侵者,只需要在入侵检测技术中输入自己需要的网络或根据类别查询相关详细信息即可实现,便于安全,减少了人工劳动量,大大节约了成本。入侵检测技术的目的就是帮助人们通过快速查找入侵者然后保护网络安全,查询自己的安全信息状态,管理者能更方便的管理入侵者的状态,对用户的安全行为进行高效的管理。节约了时间,带给人们更大的便捷。
2可行性分析
对入侵检测技术进行可行性分析的目的在于:确定入侵检测技术是否能在现有的技术、经济以及人员等各方面条件下,使问题得到解决,并分析是否值得解决。通过对用户的应用进行分析和调研,提出可行性方案并进行论证。接下来从以下三个方面对入侵检测技术进行可行性分析。
2.1技术可行性
技术可行性是考虑以现有的技术能否使入侵检测技术的开发工作顺利完成,并且满足开发的应用。入侵检测技术采用的是入侵检测算法,它们具有容易开发、操作简单、稳定等优点,使用的入侵检测技术发展比较成熟,都属于当前流行的开发技术,所以入侵检测技术在技术开发方面是完全可行的。
2.2运行可行性
入侵检测技术在数据收集,处理方面都是基于入侵检测技术,属于比较稳定的状态,而且这种模式以及入侵检测技术都属于比较常见的软件技术,在操作方面应该可以很快学习和上手,在用户的操作方面都使用了简单明了的方式,最大程度的提高了用户的使用体验,完全符合用户快捷方便安全的应用,所以入侵检测技术在运行方面是完全可行的。
2.3经济可行性
经济可行性研究是估计项目的开发成本是否合理,判断此项目能否符合用户的切身利益。入侵检测技术的建立比较简单,所需要的应用硬件和软件都容易获取,因此开发成本低。而在后台入侵检测技术的运行以及维护等方面,由于入侵检测技术由管理人员操作,完全可以由管理者在入侵检测技术上进行管理,减少了传统的人工作业,省出了一笔费用并且可以用于更好的建设入侵者安放及保护,明显的提高了工作效率,所以在此方面是完全可行的。
3入侵检测技术应用分析
3.1应用概述
3.1.1总体目标入侵检测技术能解决当前一些网络仍然靠人工作业带来的效率低、检索速度慢、病毒的统计工作量大、没有算法除去等问题。该入侵检测技术可以实现两种用户类型的使用:1.用户在入侵检测技术中可以根据算法进行查找和详细查找,对入侵者进行算法除去,修改自己的信息,能够查询安全信息情况,查看入侵者的详细信息。2.管理者能够方便的对安全保护模块进行增加、修改、删除等操作,对安全保护模块进行删除或者添加操作,对病毒进行除去,并根据安全情况进行管理,以及对入侵检测技术的算法信息进行相关的添加或者修改。3.1.2用户类型入侵检测技术的控制用户主要有两种:网络管理员和普通用户,不同的身份就有不同的权限。用户通过算法结构进入到入侵检测技术后,查找自己所需要安全的级别,然后进行算法除去和保护询,也可查看自己的安全情况。管理者以管理员的身份进入到管理界面后,对入侵者和用户进行相应的管理。
3.2应用模型
3.2.1功能应用入侵检测技术的'目的是为了实现用户的高效安全算法,方便查询相关入侵者,管理者能方便有效的对用户和入侵者进行相应的管理。入侵检测技术主要需要完成以下功能:1.登录。登录分为两种:普通用户的登录和管理员身份的登录,经过入侵检测技术的验证之后,用户和管理员才能进入入侵检测技术。2.查询功能:有两种身份的查询功能,用户可以通过类别找到相关的入侵者,也可通过输入具体的入侵者名称和类型找到,还有查询自己的安全情况;管理者可以查询用户的安全情况和入侵者情况。3.管理功能:管理者主要是对入侵者进行增删和更换等操作,对用户的算法除去请求进行审核和管理用户状态。4.算法除去功能:用户登陆后选择要算法除去的网络,由管理员审核通过之后方可隔离此病毒。3.2.2安全功能应用用户通过算法结构进入到入侵检测技术后,可通过入侵检测算法来找到安全的网络,用户的信用良好且此病毒在病毒库还有剩余的情况下才能算法除去,在设定隔离病毒的时间之后即可完成病毒除去操作。通过入侵检测算法的实现,用户的安全情况可由管理员操作。3.2.3管理员功能应用入侵检测技术的管理员主要是对入侵检测技术的用户和入侵者进行管理。入侵者管理包括对相关信息进行增删和更换等操作,对入侵者的具体详细信息进行修改;用户管理包括对用户的算法除去入侵者请求进行审核,对用户的正常或冻结状态进行管理,查看用户的安全情况。同时管理员还可以对算法结构进行修改和添加操作,也可以修改自己的登录密码。
参考文献:
[1]胡天骐,单剑锋,宋晓涛.基于改进PSO-LSSVM的模拟电路诊断方法[J].计算机技术与发展.2015(06)
[2]李仕琼.数据挖掘中关联规则挖掘算法的分析研究[J].电子技术与软件工程.2015(04)
[3]胡秀.基于Web的数据挖掘技术研究[J].软件导刊.2015(01)
《科技传播》杂志国家级科技学术期刊中英文目录知网 万方全文收录随着对网络安全问题的理解日益深入,入侵检测技术得到了迅速的发展,应用防护的概念逐渐被人们所接受,并应用到入侵检测产品中。而在千兆环境中,如何解决应用防护和千兆高速网络环境中数据包线速处理之间的矛盾,成为网络安全技术发展一个新的挑战。 入侵检测技术的演进。 入侵检测系统(IDS, Intrusion Detection System)是近十多年发展起来的新一代安全防范技术,它通过对计算机网络或系统中的若干关键点收集信息并对其进行分析,从中发现是否有违反安全策略的行为和被攻击的迹象。IDS产品被认为是在防火墙之后的第二道安全防线在攻击检测、安全审计和监控等方面都发挥了重要的作用。 但在入侵检测产品的使用过程中,暴露出了诸多的问题。特别是误报、漏报和对攻击行为缺乏实时响应等问题比较突出,并且严重影响了产品发挥实际的作用。Gartner在2003年一份研究报告中称入侵检测系统已经“死”了。Gartner认为IDS不能给网络带来附加的安全,反而会增加管理员的困扰,建议用户使用入侵防御系统(IPS, Intrusion Prevention System)来代替IDS。Gartner公司认为只有在线的或基于主机的攻击阻止(实时拦截)才是最有效的入侵防御系统。 从功能上来看,IDS是一种并联在网络上的设备,它只能被动地检测网络遭到了何种攻击,它的阻断攻击能力非常有限,一般只能通过发送TCP reset包或联动防火墙来阻止攻击。而IPS则是一种主动的、积极的入侵防范、阻止系统,它部署在网络的进出口处,当它检测到攻击企图后,它会自动地将攻击包丢掉或采取措施将攻击源阻断。因此,从实用效果上来看,和IDS相比入侵防御系统IPS向前发展了一步,能够对网络起到较好的实时防护作用。 近年来,网络攻击的发展趋势是逐渐转向高层应用。根据Gartner的分析,目前对网络的攻击有70%以上是集中在应用层,并且这一数字呈上升趋势。应用层的攻击有可能会造成非常严重的后果,比如用户帐号丢失和公司机密泄漏等。因此,对具体应用的有效保护就显得越发重要。从检测方法上看,IPS与IDS都是基于模式匹配、协议分析以及异常流量统计等技术。这些检测技术的特点是主要针对已知的攻击类型,进行基于攻击特征串的匹配。但对于应用层的攻击,通常是利用特定的应用程序的漏洞,无论是IDS还是IPS都无法通过现有的检测技术进行防范。 为了解决日益突出的应用层防护问题,继入侵防御系统IPS之后,应用入侵防护系统(AIP,Application Intrusion Prevention)逐渐成为一个新的热点,并且正得到日益广泛的应用。 应用入侵防护 对应用层的防范通常比内网防范难度要更大,因为这些应用要允许外部的访问。防火墙的访问控制策略中必须开放应用服务对应的端口,如web的80端口。这样,黑客通过这些端口发起攻击时防火墙无法进行识别控制。入侵检测和入侵防御系统并不是针对应用协议进行设计,所以同样无法检测对相应协议漏洞的攻击。而应用入侵防护系统则能够弥补防火墙和入侵检测系统的不足,对特定应用进行有效保护。 所谓应用入侵防护系统AIP,是用来保护特定应用服务(如web和数据库等应用)的网络设备,通常部署在应用服务器之前,通过AIP系统安全策略的控制来防止基于应用协议漏洞和设计缺陷的恶意攻击。 在对应用层的攻击中,大部分时通过HTTP协议(80端口)进行。在国外权威机构的一次网络安全评估过程中发现,97%的web站点存在一定应用协议问题。虽然这些站点通过部署防火墙在网络层以下进行了很好的防范,但其应用层的漏洞仍可被利用进而受到入侵和攻击。因此对于web等应用协议,应用入侵防护系统AIP应用比较广泛。通过制订合理的安全策略,AIP能够对以下类型的web攻击进行有效防范: 恶意脚本 Cookie投毒 隐藏域修改 缓存溢出 参数篡改 强制浏览 Sql插入 已知漏洞攻击 应用入侵防护技术近两年刚刚出现,但发展迅速。Yankee Group预测在未来的五年里, AIP将和防火墙,入侵检测和反病毒等安全技术一起,成为网络安全整体解决方案的一个重要组成部分。 千兆解决方案 应用入侵防护产品在保护企业业务流程和相关数据方面发挥着日益重要的作用,同时随着网络带宽的不断增加,只有在适合千兆环境应用的高性能产品才能够满足大型网络的需要。 传统的软件形式的应用入侵防护产品受性能的限制,只能应用在中小型网络中;基于x86架构的硬件产品无法达到千兆流量的要求;近年来,网络处理器(NP)在千兆环境中得到了日益广泛的应用,但NP的优势主要在于网络层以下的包处理上,若进行内容处理则会导致性能的下降。 通过高性能内容处理芯片和网络处理芯片相结合形式,为千兆应用入侵防护产品提供了由于的解决方案。其设计特点是采用不同的处理器实现各自独立的功能,由网络处理芯片实现网络层和传输层以下的协议栈处理,通过高速内容处理芯片进行应用层的协议分析和内容检查。从而实现了千兆流量线速转发和高速内容处理的完美结合,真正能够为用户提供千兆高性能的应用防护解决方案。 在上面系统框架中,包处理引擎收到数据包后,首先由网络处理器进行传输层以下的协议栈处理,并将数据包还原成数据流。接下来由内容处理器对数据流进行应用协议处理,根据控制器设定的安全策略对各种应用攻击进行检测和过滤。只有符合安全策略要求的数据流才会被发送到服务器,攻击包则被丢弃。 在高性能的千兆解决方案中,能够实现网络层到应用层的多层次立体防护体系。对于面向大型web应用,产品通过多种功能的集成实现有效的应用防护: Web应用入侵防护。通过系统内置的网络内容处理芯片,对web请求和回应流量进行细致的分析。根据内置的规则及启发式的安全策略,有效防范各种针对web应用的攻击行为。 DOS攻击的防护。系统通过网络处理芯片,对Synflood、Icmpflood、Upflood、PinfOfDeath、Smurf、Ping Sweep等网络层的拒绝服务攻击进行过滤的防范,有效保护服务器。 访问控制。通过硬件的ACL匹配算法,系统能够在实现线速转发的同时对数据包进行实时的访问控制。 中科网威在新一代千兆应用入侵防护产品设计中采用了上述解决方案,实现了千兆流量下的线速处理。系统以透明模式接入网络,在增强安全性的同时,网络性能不会受到任何影响,真正实现了应用层内容处理和千兆高性能的完美结合。
论文原文:
YOLO(you only look once)是继RCNN、faster-RCNN之后,又一里程碑式的目标检测算法。yolo在保持不错的准确度的情况下,解决了当时基于深度学习的检测中的痛点---速度问题。下图是各目标检测系统的检测性能对比:
如果说faster-RCNN是真正实现了完全基于深度学习的端到端的检测,那么yolo则是更进一步,将 目标区域预测 与 目标类别判断 整合到单个神经网络模型中。各检测算法结构见下图:
每个网格要预测B个bounding box,每个bounding box除了要回归自身的位置之外,还要附带预测一个confidence值。这个confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息,其值是这样计算的:
其中如果有object落在一个grid cell里,第一项取1,否则取0。第二项是预测的bounding box和实际的groundtruth之间的IoU值。
每个bounding box要预测(x, y, w, h)和confidence共5个值,每个网格还要预测一个类别信息,记为C类。即SxS个网格,每个网格除了要预测B个bounding box外,还要预测C个categories。输出就是S x S x (5*B+C)的一个tensor。(注意:class信息是针对每个网格的,即一个网格只预测一组类别而不管里面有多少个bounding box,而confidence信息是针对每个bounding box的。)
举例说明: 在PASCAL VOC中,图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。整个网络结构如下图所示:
在test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score:
等式左边第一项就是每个网格预测的类别信息,第二三项就是每个bounding box预测的confidence。这个乘积即encode了预测的box属于某一类的概率,也有该box准确度的信息。
得到每个box的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS(非极大值抑制non-maximum suppresssion)处理,就得到最终的检测结果。
1、每个grid因为预测两个bounding box有30维(30=2*5+20),这30维中,8维是回归box的坐标,2维是box的confidence,还有20维是类别。其中坐标的x,y用bounding box相对grid的offset归一化到0-1之间,w,h除以图像的width和height也归一化到0-1之间。
2、对不同大小的box预测中,相比于大box预测偏一点,小box预测偏一点肯定更不能被忍受的。而sum-square error loss中对同样的偏移loss是一样。为了缓和这个问题,作者用了一个比较取巧的办法,就是将box的width和height取平方根代替原本的height和width。这个参考下面的图很容易理解,小box的横轴值较小,发生偏移时,反应到y轴上相比大box要大。其实就是让算法对小box预测的偏移更加敏感。
3、一个网格预测多个box,希望的是每个box predictor专门负责预测某个object。具体做法就是看当前预测的box与ground truth box中哪个IoU大,就负责哪个。这种做法称作box predictor的specialization。
4、损失函数公式见下图:
在实现中,最主要的就是怎么设计损失函数,坐标(x,y,w,h),confidence,classification 让这个三个方面得到很好的平衡。简单的全部采用sum-squared error loss来做这件事会有以下不足:
解决方法:
只有当某个网格中有object的时候才对classification error进行惩罚。只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。
作者采用ImageNet 1000-class 数据集来预训练卷积层。预训练阶段,采用网络中的前20卷积层,外加average-pooling层和全连接层。模型训练了一周,获得了top-5 accuracy为0.88(ImageNet2012 validation set),与GoogleNet模型准确率相当。
然后,将模型转换为检测模型。作者向预训练模型中加入了4个卷积层和两层全连接层,提高了模型输入分辨率(224×224->448×448)。顶层预测类别概率和bounding box协调值。bounding box的宽和高通过输入图像宽和高归一化到0-1区间。顶层采用linear activation,其它层使用 leaky rectified linear。
作者采用sum-squared error为目标函数来优化,增加bounding box loss权重,减少置信度权重,实验中,设定为\lambda _{coord} =5 and\lambda _{noobj}=0.5 。
作者在PASCAL VOC2007和PASCAL VOC2012数据集上进行了训练和测试。训练135轮,batch size为64,动量为0.9,学习速率延迟为0.0005。Learning schedule为:第一轮,学习速率从0.001缓慢增加到0.01(因为如果初始为高学习速率,会导致模型发散);保持0.01速率到75轮;然后在后30轮中,下降到0.001;最后30轮,学习速率为0.0001。
作者还采用了dropout和 data augmentation来预防过拟合。dropout值为0.5;data augmentation包括:random scaling,translation,adjust exposure和saturation。
YOLO模型相对于之前的物体检测方法有多个优点:
1、 YOLO检测物体非常快
因为没有复杂的检测流程,只需要将图像输入到神经网络就可以得到检测结果,YOLO可以非常快的完成物体检测任务。标准版本的YOLO在Titan X 的 GPU 上能达到45 FPS。更快的Fast YOLO检测速度可以达到155 FPS。而且,YOLO的mAP是之前其他实时物体检测系统的两倍以上。
2、 YOLO可以很好的避免背景错误,产生false positives
不像其他物体检测系统使用了滑窗或region proposal,分类器只能得到图像的局部信息。YOLO在训练和测试时都能够看到一整张图像的信息,因此YOLO在检测物体时能很好的利用上下文信息,从而不容易在背景上预测出错误的物体信息。和Fast-R-CNN相比,YOLO的背景错误不到Fast-R-CNN的一半。
3、 YOLO可以学到物体的泛化特征
当YOLO在自然图像上做训练,在艺术作品上做测试时,YOLO表现的性能比DPM、R-CNN等之前的物体检测系统要好很多。因为YOLO可以学习到高度泛化的特征,从而迁移到其他领域。
尽管YOLO有这些优点,它也有一些缺点:
1、YOLO的物体检测精度低于其他state-of-the-art的物体检测系统。
2、YOLO容易产生物体的定位错误。
3、YOLO对小物体的检测效果不好(尤其是密集的小物体,因为一个栅格只能预测2个物体)。
论文名称:Rich feature hierarchies for accurate object detection and semantic segmentation 提出时间:2014年 论文地址: 针对问题: 从Alexnet提出后,作者等人思考如何利用卷积网络来完成检测任务,即输入一张图,实现图上目标的定位(目标在哪)和分类(目标是什么)两个目标,并最终完成了RCNN网络模型。 创新点: RCNN提出时,检测网络的执行思路还是脱胎于分类网络。也就是深度学习部分仅完成输入图像块的分类工作。那么对检测任务来说如何完成目标的定位呢,作者采用的是Selective Search候选区域提取算法,来获得当前输入图上可能包含目标的不同图像块,再将图像块裁剪到固定的尺寸输入CNN网络来进行当前图像块类别的判断。 参考博客: 。 论文题目:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 提出时间:2014年 论文地址: 针对问题: 该论文讨论了,CNN提取到的特征能够同时用于定位和分类两个任务。也就是在CNN提取到特征以后,在网络后端组织两组卷积或全连接层,一组用于实现定位,输出当前图像上目标的最小外接矩形框坐标,一组用于分类,输出当前图像上目标的类别信息。也是以此为起点,检测网络出现基础主干网络(backbone)+分类头或回归头(定位头)的网络设计模式雏形。 创新点: 在这篇论文中还有两个比较有意思的点,一是作者认为全连接层其实质实现的操作和1x1的卷积是类似的,而且用1x1的卷积核还可以避免FC对输入特征尺寸的限制,那用1x1卷积来替换FC层,是否可行呢?作者在测试时通过将全连接层替换为1x1卷积核证明是可行的;二是提出了offset max-pooling,也就是对池化层输入特征不能整除的情况,通过进行滑动池化并将不同的池化层传递给后续网络层来提高效果。另外作者在论文里提到他的用法是先基于主干网络+分类头训练,然后切换分类头为回归头,再训练回归头的参数,最终完成整个网络的训练。图像的输入作者采用的是直接在输入图上利用卷积核划窗。然后在指定的每个网络层上回归目标的尺度和空间位置。 参考博客: 论文题目:Scalable Object Detection using Deep Neural Networks 提出时间:2014年 论文地址: 针对问题: 既然CNN网络提取的特征可以直接用于检测任务(定位+分类),作者就尝试将目标框(可能包含目标的最小外包矩形框)提取任务放到CNN中进行。也就是直接通过网络完成输入图像上目标的定位工作。 创新点: 本文作者通过将物体检测问题定义为输出多个bounding box的回归问题. 同时每个bounding box会输出关于是否包含目标物体的置信度, 使得模型更加紧凑和高效。先通过聚类获得图像中可能有目标的位置聚类中心,(800个anchor box)然后学习预测不考虑目标类别的二分类网络,背景or前景。用到了多尺度下的检测。 参考博客: 论文题目:DeepBox: Learning Objectness with Convolutional Networks 提出时间:2015年ICCV 论文地址: 主要针对的问题: 本文完成的工作与第三篇类似,都是对目标框提取算法的优化方案,区别是本文首先采用自底而上的方案来提取图像上的疑似目标框,然后再利用CNN网络提取特征对目标框进行是否为前景区域的排序;而第三篇为直接利用CNN网络来回归图像上可能的目标位置。创新点: 本文作者想通过CNN学习输入图像的特征,从而实现对输入网络目标框是否为真实目标的情况进行计算,量化每个输入框的包含目标的可能性值。 参考博客: 论文题目:AttentionNet: AggregatingWeak Directions for Accurate Object Detection 提出时间:2015年ICCV 论文地址: 主要针对的问题: 对检测网络的实现方案进行思考,之前的执行策略是,先确定输入图像中可能包含目标位置的矩形框,再对每个矩形框进行分类和回归从而确定目标的准确位置,参考RCNN。那么能否直接利用回归的思路从图像的四个角点,逐渐得到目标的最小外接矩形框和类别呢? 创新点: 通过从图像的四个角点,逐步迭代的方式,每次计算一个缩小的方向,并缩小指定的距离来使得逐渐逼近目标。作者还提出了针对多目标情况的处理方式。 参考博客: 论文题目:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 提出时间:2014年 论文地址: 针对问题: 如RCNN会将输入的目标图像块处理到同一尺寸再输入进CNN网络,在处理过程中就造成了图像块信息的损失。在实际的场景中,输入网络的目标尺寸很难统一,而网络最后的全连接层又要求输入的特征信息为统一维度的向量。作者就尝试进行不同尺寸CNN网络提取到的特征维度进行统一。创新点: 作者提出的SPPnet中,通过使用特征金字塔池化来使得最后的卷积层输出结果可以统一到全连接层需要的尺寸,在训练的时候,池化的操作还是通过滑动窗口完成的,池化的核宽高及步长通过当前层的特征图的宽高计算得到。原论文中的特征金字塔池化操作图示如下。 参考博客 : 论文题目:Object detection via a multi-region & semantic segmentation-aware CNN model 提出时间:2015年 论文地址: 针对问题: 既然第三篇论文multibox算法提出了可以用CNN来实现输入图像中待检测目标的定位,本文作者就尝试增加一些训练时的方法技巧来提高CNN网络最终的定位精度。创新点: 作者通过对输入网络的region进行一定的处理(通过数据增强,使得网络利用目标周围的上下文信息得到更精准的目标框)来增加网络对目标回归框的精度。具体的处理方式包括:扩大输入目标的标签包围框、取输入目标的标签中包围框的一部分等并对不同区域分别回归位置,使得网络对目标的边界更加敏感。这种操作丰富了输入目标的多样性,从而提高了回归框的精度。 参考博客 : 论文题目:Fast-RCNN 提出时间:2015年 论文地址: 针对问题: RCNN中的CNN每输入一个图像块就要执行一次前向计算,这显然是非常耗时的,那么如何优化这部分呢? 创新点: 作者参考了SPPNet(第六篇论文),在网络中实现了ROIpooling来使得输入的图像块不用裁剪到统一尺寸,从而避免了输入的信息丢失。其次是将整张图输入网络得到特征图,再将原图上用Selective Search算法得到的目标框映射到特征图上,避免了特征的重复提取。 参考博客 : 论文题目:DeepProposal: Hunting Objects by Cascading Deep Convolutional Layers 提出时间:2015年 论文地址: 主要针对的问题: 本文的作者观察到CNN可以提取到很棒的对输入图像进行表征的论文,作者尝试通过实验来对CNN网络不同层所产生的特征的作用和情况进行讨论和解析。 创新点: 作者在不同的激活层上以滑动窗口的方式生成了假设,并表明最终的卷积层可以以较高的查全率找到感兴趣的对象,但是由于特征图的粗糙性,定位性很差。相反,网络的第一层可以更好地定位感兴趣的对象,但召回率降低。 论文题目:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 提出时间:2015年NIPS 论文地址: 主要针对的问题: 由multibox(第三篇)和DeepBox(第四篇)等论文,我们知道,用CNN可以生成目标待检测框,并判定当前框为目标的概率,那能否将该模型整合到目标检测的模型中,从而实现真正输入端为图像,输出为最终检测结果的,全部依赖CNN完成的检测系统呢? 创新点: 将当前输入图目标框提取整合到了检测网络中,依赖一个小的目标框提取网络RPN来替代Selective Search算法,从而实现真正的端到端检测算法。 参考博客 :
能不能给我发一份呢?
运动目标检测与跟踪算法研究 视觉是人类感知自身周围复杂环境最直接有效的手段之一, 而在现实生活中 大量有意义的视觉信息都包含在运动中,人眼对运动的物体和目标也更敏感,能 够快速的发现运动目标, 并对目标的运动轨迹进行预测和描绘。 随着计算机技术、 通信技术、图像处理技术的不断发展,计算机视觉己成为目前的热点研究问题之 一。 而运动目标检测与跟踪是计算机视觉研究的核心课题之一, 融合了图像处理、 模式识别、人工智能、自动控制、计算机等众多领域的先进技术,在军事制导、 视觉导航、视频监控、智能交通、医疗诊断、工业产品检测等方面有着重要的实 用价值和广阔的发展前景。 1、国内外研究现状 1.1 运动目标检测 运动目标检测是指从序列图像中将运动的前景目标从背景图像中提取出来。 根据运动目标与摄像机之间的关系, 运动目标检测分为静态背景下的运动目标检 测和动态背景下的运动目标检测。 静态背景下的运动目标检测是指摄像机在整个 监视过程中不发生移动; 动态背景下的运动目标检测是指摄像机在监视过程中发 生了移动,如平动、旋转或多自由度运动等。 静态背景 静态背景下的运动目标检测方法主要有以下几种: (1)背景差分法 背景差分法是目前最常用的一种目标检测方法, 其基本思想就是首先获得一个 背景模型,然后将当前帧与背景模型相减,如果像素差值大于某一阈值,则判断 此像素属于运动目标,否则属于背景图像。利用当前图像与背景图像的差分来检 测运动区域,一般能够提供比较完整的特征数据,但对于动态场景的变化,如光 照和外来无关事件的干扰等特别敏感。 很多研究人员目前都致力于开发不同的背 景模型,以减少动态场景变化对运动目标检测的影响。背景模型的建立与更新、 阴影的去除等对跟踪结果的好坏至关重要。 背景差分法的实现简单,在固定背景下能够完整地精确、快速地分割出运动 对象。不足之处是易受环境光线变化的影响,需要加入背景图像更新机制,且只 对背景已知的运动对象检测比较有效, 不适用于摄像头运动或者背景灰度变化很 大的情况。 (2)帧间差分法 帧间差分法是在连续的图像序列中两个或三个相邻帧间, 采用基于像素的时 间差分并阈值化来提取图像中的运动区域。 帧间差分法对动态环境具有较强的自 适应性,但一般不能完全提取出所有相关的特征像素点,在运动实体内部容易产 生空洞现象。因此在相邻帧间差分法的基础上提出了对称差分法,它是对图像序 列中每连续三帧图像进行对称差分,检测出目标的运动范围,同时利用上一帧分 割出来的模板对检测出来的目标运动范围进行修正, 从而能较好地检测出中间帧 运动目标的形状轮廓。 帧间差分法非常适合于动态变化的环境,因为它只对运动物体敏感。实际上 它只检测相对运动的物体,而且因两幅图像的时间间隔较短,差分图像受光线 变化影响小,检测有效而稳定。该算法简单、速度快,已得到广泛应用。虽然该 方法不能够完整地分割运动对象,只能检测出物体运动变化的区域,但所检测出 的物体运动信息仍可用于进一步的目标分割。 (3)光流法 光流法就充分的利用了图像自身所携带的信息。在空间中,运动可以用运动 场描述,而在一个图像平面上,物体的运动往往是通过图像序列中图像灰度分布 的不同来体现,从而使空间中的运动场转移到图像上就表示为光流场。所谓光流 是指空间中物体被观测面上的像素点运动产生的瞬时速度场, 包含了物体表面结 构和动态行为等重要信息。 基于光流法的运动目标检测采用了运动目标随时间变 化的光流特性,由于光流不仅包含了被观测物体的运动信息,还携带了物体运动 和景物三位结构的丰富信息。 在比较理想的情况下,它能够检测独立运动的对象, 不需要预先知道场景的任何信息,可以很精确地计算出运动物体的速度,并且可 用于动态场景的情况。 但是大多数光流方法的计算相当复杂,对硬件要求比较高, 不适于实时处理,而且对噪声比较敏感,抗噪性差。并且由于遮挡、多光源、透明 性及噪声等原因,使得光流场基本方程——灰度守恒的假设条件无法满足,不能 正确求出光流场,计算方也相当复杂,计算量巨大,不能满足实时的要求。 动态背景 动态背景下的运动目标检测由于存在着目标与摄像机之间复杂的相对运动, 检测方法要比静态背景下的运动目标检测方法复杂。常用的检测方法有匹配法、 光流法以及全局运动估计法等。 2、运动目标跟踪 运动目标跟踪是确定同一物体在图像序列的不同帧中的位置的过程。 近年来 出现了大批运动目标跟踪方法,许多文献对这些方法进行了分类介绍,可将目标 跟踪方法分为四类:基于区域的跟踪、基于特征的跟踪、基于活动轮廓的跟踪、 基于模型的跟踪,这种分类方法概括了目前大多数跟踪方法,下面用这种分类方 法对目前的跟踪方法进行概括介绍。 (1)基于区域的跟踪 基于区域的跟踪方法基本思想是: 首先通过图像分割或预先人为确定提取包 含目标区域的模板,并设定一个相似性度量,然后在序列图像中搜索目标,把度 量取极值时对应的区域作为对应帧中的目标区域。 由于提取的目标模板包含了较 完整的目标信息,该方法在目标未被遮挡时,跟踪精度非常高,跟踪非常稳定, 但通常比较耗时,特别是当目标区域较大时,因此一般应用于跟踪较小的目标或 对比度较差的目标。该方法还可以和多种预测算法结合使用,如卡尔曼预测、粒 子预测等,以估计每帧图像中目标的位置。近年来,对基于区域的跟踪方法关注 较多的是如何处理运动目标姿态变化引起的模板变化时的情况以及目标被严重 遮挡时的情况。 (2)基于特征的跟踪 基于特征的跟踪方法基本思想是:首先提取目标的某个或某些局部特征,然 后利用某种匹配算法在图像序列中进行特征匹配,从而实现对目标的跟踪。该方 法的优点是即使目标部分被遮挡,只要还有一部分特征可以被看到,就可以完成 跟踪任务,另外,该方法还可与卡尔曼滤波器结合使用,实时性较好,因此常用 于复杂场景下对运动目标的实时、 鲁棒跟踪。 用于跟踪的特征很多, 如角点边缘、 形状、纹理、颜色等,如何从众多的特征中选取最具区分性、最稳定的特征是基 于特征的跟踪方法的关键和难点所在。 (3)基于活动轮廓的跟踪 基于活动轮廓的跟踪方法基本思想是:利用封闭的曲线轮廓表达运动目标, 结合图像特征、曲线轮廓构造能量函数,通过求解极小化能量实现曲线轮廓的自 动连续更新,从而实现对目标的跟踪。自Kass在1987年提出Snake模型以来,基 于活动轮廓的方法就开始广泛应用于目标跟踪领域。相对于基于区域的跟踪方 法,轮廓表达有减少复杂度的优点,而且在目标被部分遮挡的情况下也能连续的 进行跟踪,但是该方法的跟踪结果受初始化影响较大,对噪声也较为敏感。 (4)基于模型的跟踪 基于模型的跟踪方法基本思想是: 首先通过一定的先验知识对所跟踪目标建 立模型,然后通过匹配跟踪目标,并进行模型的实时更新。通常利用测量、CAD 工具和计算机视觉技术建立模型。主要有三种形式的模型,即线图模型、二维轮 廓模型和三维立体模型口61,应用较多的是运动目标的三维立体模型,尤其是对 刚体目标如汽车的跟踪。该方法的优点是可以精确分析目标的运动轨迹,即使在 目标姿态变化和部分遮挡的情况下也能够可靠的跟踪, 但跟踪精度取决于模型的 精度,而在现实生活中要获得所有运动目标的精确模型是非常困难的。 目标检测算法,至今已提出了数千种各种类型的算法,而且每年都有上百篇相 关的研究论文或报告发表。尽管人们在目标检测或图像分割等方面做了许多研 究,现己提出的分割算法大都是针对具体问题的,并没有一种适合于所有情况的 通用算法。 目前, 比较经典的运动目标检测算法有: 双帧差分法、 三帧差分法(对 称差分法)、背景差法、光流法等方法,这些方法之间并不是完全独立,而是可 以相互交融的。 目标跟踪的主要目的就是要建立目标运动的时域模型, 其算法的优劣直接影响 着运动目标跟踪的稳定性和精确度, 虽然对运动目标跟踪理论的研究已经进行了 很多年,但至今它仍然是计算机视觉等领域的研究热点问题之一。研究一种鲁棒 性好、精确、高性能的运动目标跟踪方法依然是该研究领域所面临的一个巨大挑 战。基于此目的,系统必须对每个独立的目标进行持续的跟踪。为了实现对复杂 环境中运动目标快速、稳定的跟踪,人们提出了众多算法,但先前的许多算法都 是针对刚体目标,或是将形变较小的非刚体近似为刚体目标进行跟踪,因而这些 算法难以实现对形状变化较大的非刚体目标的正确跟踪。 根据跟踪算法所用的预 测技术来划分,目前主要的跟踪算法有:基于均值漂移的方法、基于遗传算法的 方法、基于Kalman滤波器的方法、基于Monto Carlo的方法以及多假设跟踪的方 法等。 运动检测与目标跟踪算法模块 运动检测与目标跟踪算法模块 与目标跟踪 一、运动检测算法 1.算法效果 算法效果总体来说,对比度高的视频检测效果要优于对比度低的视频。 算法可以比较好地去除目标周围的浅影子,浅影的去除率在 80%以上。去影后目标的 完整性可以得到较好的保持,在 80%以上。在对比度比较高的环境中可以准确地识别较大 的滞留物或盗移物。 从对目标的检测率上来说,对小目标较难进行检测。一般目标小于 40 个像素就会被漏 掉。对于对比度不高的目标会检测不完整。总体上来说,算法在对比度较高的环境中漏检率 都较低,在 0.1%以下,在对比度不高或有小目标的场景下漏检率在 6%以下。 精细运动检测的目的是在较理想的环境下尽量精确地提取目标的轮廓和区域, 以供高层 进行应用。同时在分离距离较近目标和进行其它信息的进一步判断也具有一定的优势。 反映算法优缺点的详细效果如下所示: 去影子和完整性 效果好 公司内视频 左边的为去影前,右边的 为去影后的结果,可以看出在 完整 性和去影率上 都有所 突 出。 这两个视频的共周特点 城市交通 是,影子都是浅影子,视频噪 声不太明显。目标与背景的对 比度比较高。 效果差 这两个视频的特点是影子 都是深影子。虽然影子没有去 掉,但是物体的完整性是比较 高的。主要原因就是场景的对 路口,上午 十点 比度比较高。 滞留物检测和稳定性 效果好 会议室盗移 效果好的原因,一是盗移或 滞留目标与背景对比度较大,二 是目标本身尺寸较大。 另外盗移物或滞留物在保持 各自的状态期间不能受到光照变 化或其它明显运动目标的干扰, 要不然有可能会造成判断的不稳 定。 效果差 会议室 遗留 物 大部分时间内,滞留的判断 都是较稳定的,但是在后期出现 了不稳定。主要原因是目标太小 的原故。 因此在进行滞留物判断时, 大目标,对比度较高的环境有利 于判断的稳定性和准确性。 漏检率 效果好 城市交通 在对比度高的环境下, 目标相对都较大的情况下 (大于 40 个像素) 可以很 , 稳定的检测出目标。 在这种 条件下的漏检率通常都是 非常低的,在 0.1%以下。 效果差 行人-傍晚 和“行人”目录下 的 其 它 昏 暗 条件 下的视频 在对 比度较低的 情况 下,会造成检测结果不稳 定。漏检率较高。主要原因 是由于去影子造成的。 这种 对比度下的漏检率一般在 6%以下。 除了 对比度低是 造成 漏检的原因外, 过小的目标 也会造成漏检,一般是 40 个像素以下的目标都会被 忽略掉。 1.2 算法效率内存消耗(单位:b) .MD_ISRAM_data .MD_ISRAM_bss .MD_SDRAM_data 0x470 0x24 0x348 .MD_SDRAM_bss .MD_text 0x1a8480 0x6d40 速度 ms 运动区域占 2/3 左右时 CPU 占用率 一帧耗时 Max:57% Min:2.8% Avg:37.5% Max:23 Min:1.14 Avg:15 运动区域占 1/3 左右时 Max:45% Min:2.8% Avg:20% Max:18 Min:1.14 Avg:8 1.3 检测参数说明 检测参数说明 检测到的滞留物或盗走物的消失时间目前分别设定在 200 帧和 100 帧, 可以通过参数来 自行调整。 目前目标与背景的差异是根据局部光照强度所决定的, 范围在 4 个像素值以上。 目前参 数设置要求目标大小要在 20 个像素以上才能被检测到,可以通过参数来自行调整。 目标阴影的去除能力是可以调整的, 目前的参数设置可以去除大部分的浅影子和较小的 光照变化。 1.4 适用环境推荐光照条件较好(具有一定的对比度)的室内环境或室外环境。不易用它去检测过小的目 标,比如小于 40 个像素的目标。室外环境不易太复杂。输出目标为精细轮廓目标,可以为 后面高层应用提供良好的信息。 二、目标跟踪 2.1 稳定运行环境要求此版本跟踪算法与运动检测算法紧密结合, 对相机的架设和视频的背景环境和运动目标 数量运动方式有一定要求: 背景要求: 由于运动跟踪是基于运动检测的结果进行的, 所以对背景的要求和运动检测一样, 背景要求: 运动目标相对于背景要有一定反差。 运动目标:由于运动检测中,对较小的目标可能过滤掉。所以运动目标的大小要符合运动检 运动目标: 测的要求。运动目标的速度不能太大,要保证前后帧运动目标的重合面积大于 10 个像素。此阈值可修改(建议不要随意修改,过小,可能把碎片当成原目标分 裂出来的小目标,过大,可能失去跟踪。当然可试着调节以适应不同场景)。该 算法对由于运动检测在地面上产生的碎片抗干扰性比较差, 运动目标和碎片相遇 时,容易发生融合又分离的现象,造成轨迹混乱。消失目标和新生目标很容易当 成同一目标处理,所以可能出现一个新目标继承新生目标的轨迹。 运动方式: 运动目标的最大数量由外部设定。 但运动跟踪对运动目标比较稀疏的场景效果比 运动方式: 较好。 算法对由于运动检测在运动目标上产生的碎片有一定的抗干扰。 算法没对 物体的遮挡进行处理。对于两运动目标之间的遮挡按融合来处理。 拍摄角度: 拍摄角度:拍摄视野比较大,且最好是俯视拍摄。
能不能给我发一份呢?
对于目标检测方向并不是特别熟悉,本文记录一下RCNN, fast-RCNN, faster-RCNN, mask-RCNN这4篇有关目标检测的论文笔记和学习心得。
R-CNN的意思就是Region based,主要思路就是根据一张图像,提取多个region,再将每个Region输入CNN来进行特征的提取。因此RCNN就可以分为 Region proposals , Feature extraction 两个主要部分,提取的特征就可以输入任意一个分类器来进行分类。 模型的流程图如下:
在训练的时候,首先使用的是已经训练好的CNN网络作为特征提取器,但是由于预训练是在分类数据集上,因此在应用到检测之前要做finetune。也就是说,为了将用ImageNet数据集训练的网络应用到新的任务(检测),新的数据集(region)上,作者将原来的CNN最后的1000类的fc层,更改为了 层, 代表待检测的物体的类别数。然后,对于所有的region,如果它和ground truth的重叠率大于0.5,就认为是正类。 对于分类器的训练,作者发现选择多大的IoU来区分正类和负类非常关键。并且,对于每一类,都会训练一个分类器。
框的回归非常重要,在对每一个region proposal使用分类器进行打分评价之后,作者使用一个回归器来预测一个新的框作为结果。这个回归器使用的特征是从CNN中提取的特征。回归器的训练中,输入是 region proposal 的 和ground truth的 ,目标是学习一种变换,使得region proposal通过该变换能够接近ground truth。同时,希望这种变换拥有尺度不变性,也就是说尺度变化的话,变换不会改变。 如下图所示,每一个regressor会学习一组参数,特征输入是pool 5的特征输出,拟合的目标是 。
Fast-RCNN 主要解决的问题是在RCNN中对于每一个region proposal都进行特征提取,会产生非常多的冗余计算,因此可以先对一张图像进行特征提取,再根据region proposal在相应的特征上进行划分得到对应region的特征(映射关系)。 这样便可以实现共享计算提高速度,但是与SPPnets不同,SPPnets在一副图像得到对应的特征后,从这张图像的特征上proposal对应的部分,采用空间金字塔池化,如下图:
RoI pooling的方法很简单,类似于空间金字塔pooling,它将proposal部分对应卷积层输出的特征(称之为RoI,因为用于做pooling的特征是 region of interest,也就是我们感兴趣的区域)划分成 块,然后对每一块求最大值,最终得到了一个 的特征图。可以看出,它只是空间金字塔pooling的一部分。 但是SPP-nets的空间金字塔也是可以求导的,那么它到底不好在哪里呢?因为当每一个RoI都可能来源于不同的图像的时候(R-CNN和SPPnets的训练策略是从一个batch的不同图像中,分别挑选一个proposal region),SPPNets的训练非常地低效,这种低效来源于在SPPnets的训练中,每个RoI的感受野都非常地大,很可能对应了原图的整个图像,因此,得到的特征也几乎对应了整张图像,所以输入的图像也就很大。 为了提高效率,Fast-RCNN首先选取 个图像,再从每个图像上选择 个RoI,这样的效率就比从每个图像提取一个RoI提高了 倍。
为了将分类和框回归结合起来,作者采用了多任务的loss,来进行联合的训练。具体来说就是将分类的loss和框回归的loss结合起来。网络的设计上非常直接,就是将RoI得到的特征接几个FC层后,分别接不同的输出层。对应于分类部分,特征会接一个softmax输出,用于分类,对于框回归部分,会接一个输出4维特征的输出层,然后分别计算loss,用于反向传播。loss的公式如下:
回归的target可以参考前面的R-CNN部分。
notes
为什么比fast还fast呢?主要原因是在这篇论文中提出了一个新的层:RPN(region proposal networks)用于替代之前的selective search。这个层还可以在GPU上运算来提高速度。 RPN的目的:
为了能够进行region proposal,作者使用了一个小的网络,在基础的卷积层输出的特征上进行滑动,这个网络输入大小为 ,输入后会映射(用 的卷积)为一个固定长度的特征向量,然后接两个并联的fc层(用 的卷积层代替),这两个fc层,一个为box-regressoin,一个为box-classification。如下图:
在每一个滑动窗口(可以参考 ),为了考虑到尽可能多的框的情况,作者设计了anchors来作为region proposal。anchors就是对于每一个滑动窗口的中心位置,在该位置对应的原图位置的基础上,按照不同的尺度,长宽比例框出 个不同的区域。然后根据这些anchors对应的原始图像位置以及区域,和ground truth,就可以给每一个滑动窗口的每一个anchor进行标记,也就是赋予label,满足一定条件标记为正类(比如和ground truth重叠大于一个值),一定条件为负类。对于正类,就可以根据ground truth和该anchor对应的原图的区域之间的变换关系(参考前面的R-CNN的框回归),得到回归器中的目标,用于训练。也就是论文中的loss function部分:
自然地,也就要求RPN的两个并联的FC层一个输出2k个值用于表示这k个anchor对应的区域的正类,负类的概率,另一个输出4k个值,用于表示框回归的变换的预测值。
对于整个网络的训练,作者采用了一种叫做 4-step Alternating Training 的方法。具体可以参考论文。
与之前的检测任务稍有不同,mask r-cnn的任务是做instance segmentation。因此,它需要对每一个像素点进行分类。 与Faster R-CNN不同,Faster R-CNN对每一个候选框产生两个输出,一个是类别,一个是bounding box的offset。Mask R-CNN新增加了一个输出,作为物体的mask。这个mask类似于ps中的蒙版。
与Faster R-CNN类似的是,Mask R-CNN同样采用RPN来进行Region Proposal。但是在之后,对于每一个RoI,mask r-cnn还输出了一个二值化的mask。
不像类别,框回归,输出都可以是一个向量,mask必须保持一定的空间信息。因此,作者采用FCN来从每个RoI中预测一个 的mask。
由于属于像素级别的预测问题,就需要RoI能够在进行特征提取的时候保持住空间信息,至少在像素级别上能够对应起来。因此,传统的取最大值的方法就显得不合适。 RoI Pooling,经历了两个量化的过程: 第一个:从roi proposal到feature map的映射过程。 第二个:从feature map划分成7*7的bin,每个bin使用max pooling。
为此,作者使用了RoIAlign。如下图
为了避免上面提到的量化过程
可以参考
作者使用ResNet作为基础的特征提取的网络。 对于预测类别,回归框,mask的网络使用如下图结构:
整体看完这几篇大佬的论文,虽说没有弄清楚每一个实现细节,但是大体上了解了算法的思路。可以看出,出发点都源于深度神经网络在特征提取上的卓越能力,因此一众大神试图将这种能力应用在检测问题中。从R-CNN中简单地用于特征提取,到为了提高速度减少计算的Fast R-CNN,再到为了将region proposal集成进入整个模型中,并且利用GPU加速的RPN,也就是Faster R-CNN。再到为了应用于instance segmentation任务中,设计的RoIAlign和mask。包括bounding box regression,pooling层的设计,训练方法的选择,loss的设计等等细节,无一不体现了大师们的思考和创造力。 可能在我们这些“拿来”者的眼中,这些方法都显得“理所应当”和巧妙,好用,但是,它们背后隐藏的选择和这些选择的思考却更值得我们学习。 以及,对待每一个问题,如何设计出合理的解决方案,以及方案的效率,通用性,更是应该我们努力的方向。
1 从日常生活中发掘题材2 从实践中挖掘创造题材3 从医学、营养学科研成果、新成就中挖掘创造题材4 从疾病流行信息中挖掘创作题材5 从疾病流行规律中挖掘创作题材6 从营养相慢性疾病变化中挖掘创作题材7 从信息来访中挖掘创作题材9 给你点提示,总之一句话靠自己
食品工程毕业论文题目
引导语:关于食品工程这一专业,有哪些论文题目可以选择呢?以下是我为大家整理的食品工程毕业论文题目,供各位阅读与借鉴。
一、《微生物学》研究小课题
1、灵芝的生产与加工技术的观察研究
2、天麻的生产与加工技术的观察研究
3、不同消毒剂的抑菌试验
4、苏云金杆菌的药效试验
5、紫外线杀菌试验
6、紫木耳的高产生产试验
7、平菇的高产生产试验
8、木本植物的扦插试验
9、无根豆芽菜的生产试验
10、食用菌病虫害防治试验
二、食品安全、食品营养方向
1、综述转基因食品的安全性
2、保健品的发展前景
3、有关某一具体食品的营养素的分析和检测(比如,鱼,肉或红富士苹果等)
4、有关某一类人群的营养调查报告及营养监测
5、有关某一类食品的营养强化(比如,赖氨酸,锌等)
6、某一类人群的营养和健康现状及分析(比如,婴幼儿,女性,老年人,青少年等)
7、冠心病患者的饮食及防治
8、糖尿病患者的膳食原则及防治
9、如何科学饮食
10、如何正确的摄入某一类营养素(比如,钙,维生素A等)
11、改进生产某一食品的工艺流程(比如,浅谈改进啤酒泡沫质量的措施)
12、综述绿色食品
13、综述无公害食品
14、分析各国的膳食结构
15、综述膳食结构跟体质、性格等关系
三、分子生物学、现代生物技术方向
1、微生物制剂的.生产与应用
2、基因工程技术的应用与发展
3、生物菌肥对植物的影响与作用分析
4、质粒的构建和扩增
5、现代生物技术在作物品种改良上的应用
6、生物信息学的发展和应用
7、魔芋的生长特性及功用
8、植物DNA提取方法的探讨与改进
9、红曲霉的液体培养方法优化
10、大肠杆菌质粒DNA提取方法的优化
四、生物技术方向
1、生物技术经济学分析
2、生物技术在医药领域的应用
3、我国的生物多样性及其保护
4、农业生物技术的发展与展望
5、基因重组技术研究现状
6、转基因食品的安全性评价
7、如何免费利用网上资源--生物技术网络资源的利用
8、浅谈生物技术领域的知识产权保护
9、生物技术与环境治理
10、现代生物技术与食品工业