首页 > 编程语言 >深入研究与优化目标检测算法,以提高其性能与适用性的探索性研究

深入研究与优化目标检测算法,以提高其性能与适用性的探索性研究

时间:2023-12-08 20:32:43浏览次数:33  
标签:RP 探索性 检测 适用性 深入研究 卷积 算法 滑动 Stage

基于深度学习的目标检测算法分为2类:Two Stage和One Stage。 Two Stage:先预设一个区域,改区域称为region proposal,即一个可能包含待检测物体的预选框(简称RP),再通过卷积神经网络进行样本分类计算。流程是:特征提取 -> 生成RP -> 分类/回归定位。常见的Two Stage算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN等。

One Stage:不用生成RP,直接在网络中提取特征值来分类目标和定位 。流程是:特征提取 -> 分类/回归定位。常见的One Stage算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、YOLOv5、SSD、RetinaNet等。

利用滑动窗口生成RP

对于Two Stage的算法,RP的产生是一个很耗时的过程:通过一个窗口从左到右,从上到下的在整张图片上以一定的步长进行滑动扫描,每次滑动的时候对当前窗口执行分类计算,如果当前窗口得到较高的概率,则认为检测到了物体。过程如下图所示,这个方法也叫滑动窗口。

深入研究与优化目标检测算法,以提高其性能与适用性的探索性研究_全连接

滑动窗口其实就是个穷举的过程,由于事先不知道要检测的目标大小,所以要设置不同大小比例的窗口去滑动,而且要选取合适的步长。这样做就会非常耗时。R-CNN就是针对此的一个改进策略,利用一种启发式的方法只扫描可能包含目标的子区域。

利用非极大值抑制算法来挑出最优解

不管是哪个目标检测的算法,一个目标都会被多次检测到,我们会有很多结果,但是大多数的结果置信度都不高,我们利用非极大值抑制算法(NMS)就能挑出那个置信度最好的结果。

算法选择

那么我们该选择哪个算法来完成我们的任务呢?

我们需要根据前文确定的性能衡量指标,对所有的算法做横向对比,这样才能挑出来最好的那个方法。这个过程会比较耗时,对于我们完成任务将会是一个障碍,庆幸的是这个比较已经有牛人帮我们做了,我们此时先使用结果,然后在将来有时间自己再尝试做这个横向的性能比较。

根据mAP和识别时间对各种目标检测算法做的结果统计图,如果单从mAP的角度看,最好的选择是FPN FRCN,但是交互时间却能达到172ms;如果看YOLOv3,mAP是57.9,交互时间只有51ms。所以我们的识别算法选用YOLOv3。

YOLO网络设计

YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。网络结构参考GooLeNet模型,包含24个卷积层和2个全连接层。对于卷积层,主要使用1x1卷积来做channle reduction,然后紧跟3x3卷积。对于卷积层和全连接层,采用Leaky ReLU激活函数,但是最后一层却采用线性激活函数。如图所示:

深入研究与优化目标检测算法,以提高其性能与适用性的探索性研究_卷积_02

标签:RP,探索性,检测,适用性,深入研究,卷积,算法,滑动,Stage
From: https://blog.51cto.com/u_16123336/8741630

相关文章

  • 探索性因子分析流程
    探索性因子分析的步骤:接下来,通过一个案例演示因子分析(探索性因子分析)的各个步骤应该如何进行。案例:欲探究我国不同省份铁路运输能力情况,收集到部分相关数据如下:上传数据至SPSSAU系统,在【进阶方法】模块,选择【探索性因子分析】,将变量拖拽到右侧分析框,勾选“因子得分”与“综合......
  • Laravel模型关系 一对一深入研究
    一,主表book classBookextendsModel{//protected$fillable=['title','price','num'];publicfunctionbookCard(){return$this->hasOne(BookCard::class);}}二,关联表bookcardclassBookCardextendsModel{//protecte......
  • 深入研究synchronized:解锁高效多线程编程的秘诀
    大家好,我是老七,点个关注吧,将持续更新更多精彩内容!在Java的多线程编程里,让多个线程能够安全、高效地协同工作是非常重要的。而synchronized这个关键字,就是一个很重要的工具,可以帮助我们实现多线程同步。本文会深入讨论synchronized的作用、使用方法、工作原理,以及它和其他锁机制的比......
  • 深入研究:Go语言文件写入的性能差异 原创 Go先锋 Go先锋
    深入研究:Go语言文件写入的性能差异原创 Go先锋 Go先锋 2023-10-2811:03 发表于广东收录于合集#Go语言包22个#性能效率1个Go先锋读完需要7分钟速读仅需3分钟  概述在Go语言开发中,文件操作是一个非常常见的任务。在不同的应用场景下,可能会面临选......
  • [转]setTimeout 和 setInterval 的定时时间深入研究
    原文地址:setTimeout和setInterval的定时时间深入研究-知乎setInterval() -间隔指定的毫秒数不停地执行指定的代码(一直执行)。setTimeout() -在指定的毫秒数后执行指定代码(只执行一次)。使用setInterVal:functiondoStuff(){//此处为需要执行一段时间T......
  • Kafka消息过期与清理策略深入研究
    背景Kafka是一个高性能、高可靠、分布式的消息队列系统,被广泛应用于大数据领域。在Kafka中,消息的过期与清理是一个非常重要的问题,本文将深入探讨Kafka中的消息过期与清理策略。Kafka消息过期在Kafka中,消息的过期是通过消息的时间戳(timestamp)来实现的。Kafka支持两种时间戳:消息创......
  • 深入研究消息队列07 架构升级
    36云原生:业界MQ的计算存储分离存算分离架构存算一体架构如下存算分离架构则是目前实现弹性消息队列集群的主要技术方案存算分离架构的优点是计算层为无状态,因此计算层的扩缩容就很方便。缺点是架构变复杂,代码实现难度也提升很多,日常的运维、研发的学习成本也会相应提高。另外计算......
  • 如何评价低代码平台在企业复杂应用场景中的适用性?
    随着编程语言的不断迭代、抽象、简化和整合,低代码技术正不断精进,形成更为简单清晰的图形化界面与高级语言结合的开发模式。在数字化转型方案的实施过程中,低代码开发广泛适用于各种应用场景,能够减少繁琐的重复性代码编写工作,提高开发效率。但在低代码广泛应用的同时,也有很多人认为低......
  • 深入研究消息队列06 高级功能
    27Topic分区订阅如何实现动态配置在消息队列里面,因为需要保持架构的简洁度,基于本地文件也是一种常用的方案。比如Kafka和Pulsar就是基于ZooKeeper来实现的动态配置,因为架构中已经集成了ZooKeeper。RocketMQ的Nameserver是一个缓存组件,没有实际的存储和Watch机制,无法......
  • 深入研究消息队列05 各消息队列集群架构对比
    23RabbitMQ的集群架构集群构建数据可靠性身份认证资源鉴权可观测性......