经典目标检测YOLO系列(一)引言_目标检测架构

news2024/11/25 11:55:29

经典目标检测YOLO系列(一)引言_目标检测架构

一个常见的目标检测网络,其本身往往可以分为一下三大块:

在这里插入图片描述

  • Backbone network,即主干网络,是目标检测网络最为核心的部分,backbone选择的好坏,对检测性能影响是十分巨大的。

  • Neck network,即颈部网络,Neck部分的主要作用就是将由backbone输出的特征进行整合。其整合方式有很多,最为常见的就是FPN(Feature Pyramid Network),SPPF等。

  • Detection head,即检测头,这一部分的作用就没什么特殊的含义了,就是若干卷积层进行预测,head部分就是在由前面网络输出的特征上去进行预测,约等于是从这些信息里解耦出来图像中物体的类别和位置信息。

1.1 Backbone network

  • 通常,为了实现从图像中检测目标的位置和类别,我们会先从图像中提取出些必要的特征信息,比如HOG特征,然后利用这些特征去实现定位和分类。而在深度学习这一块,这一任务就交由backbone网络来完成。深度学习的强大之处就在于其特征提取的能力,在很多任务上都超越了人工特征。

  • 从某种意义上来说,如何设计好的backbone,更好地从图像中提取信息,是至关重要的,因为特征提取不好,自然会影响到后续的定位检测

  • Backbone这一部分通常就是将诸如VGG、ResNet等模型搬过来(去掉最后的global avgpooling和softmax层),这一部分的参数初始化就直接使用在ImageNet上训练好的参数。这一模式也就是后来所说的ImageNet pretrained概念。

  • 常用的backbone模型如下:

    • VGG网络:其中最常用的就是VGG-16。
    • ResNet网络:其中最常用的就是ResNet50ResNet101。当任务需求很小的时候,也可以ResNet18。
    • ResNeXT网络
    • DarkNet网络:常用的包括darknet19darknet53,这两个网络分别来源于YOLOv2和YOLOv3两个工作中。其中darknet19对标的是vgg19,darknet53对标的是resnet101,但由于darknet本身是个很小众的深度学习框架,不受学术界关注,且这两个网络均是由darknet框架实现的,因此也就很少会在其他工作中看到这两个backbone。
    • MobileNet:来自谷歌,一共出了v1,v2,v3三个版本了,相较于上面那些以GPU为主要应用平台的大型网络,MobileNet则着眼于低性能的移动端平台,如手机、嵌入式设备等。
    • ShuffleNet:来自旷视科技,一共出了v1和v2两个版本,同样是针对于低性能的移动端平台。
    • 。。。。。。

1.2 Neck network

backbone部分,其作用归根结底就是一句话:提取图像中有用的信息。

由于backbone网络毕竟是从图像分类(image classification)任务迁移过来的,其提取特征的模式可能不太适合目标检测detection。因此,在我们最终从这些特征中得到图像中若干目标的类别信息(classification)和位置(location)信息之前,有必要对它们做一些处理。

这一部分,因为是在backbone之后,detection head之前,因此,被称为“Neck”。

1.2.1 FPN

Neck部分最有名的,莫过于 FPN(Feature Pyramid Network)

在这里插入图片描述

在SSD之前,不论是Faster R-CNN还是YOLO,他们都只是在backbone输出的最后一层很粗糙的特征图(feature map)上去做检测的。

在CNN中,有一个很关键的概念叫做“感受野”(receptive field),意思就是这一张特征图的pixel能包含原始图像中的少个像素。直观上来看,backbone最后输出的很粗糙的特征图。通常stride=32,即经过了32倍降采样,具有很大的感受野,这对于大物体来说是很友好的,但对于小物体而言,经过多次降采样,小物体的信息很容易就被丢失掉了。

为了解决这么个问题,SSD在三个不同大小的特征图上进行预测,即上图中的(c),但CNN随着网络深度的增加,每一层的特征图所携带的信息量和信息性质也不一样。

浅层包含的细节信息、轮廓信息、位置信息等更多,深层包含的语义信息更多。因此,FPN的工作就是在检测前,先将多个尺度的特征图进行一次bottom-up的融合,也就是上图中的(d),这被证明是极其有效的特征融合方式,几乎成为了后来目标检测的标准模式之一。

1.2.2 SPP及SPPF

当然除了FPN,还有SPP模块及其改进版本SPPF,也是很常用的Neck结构,下图便是SPP的结构示意图。

在这里插入图片描述

YOLOv3通过添加这一模块有效提升了模型的性能,而模型的计算量的增加几乎可以忽略不记。SPP的思想很简单,通过不同大小的maxpooling核来丰富特征图的感受野。

在YOLOV5中,使用了改进版本的SPPF,如下所示,后面我们自己实现YOLOV1版本中,会使用到SPPF。

在这里插入图片描述

1.2.3 其他Neck

RFB:出自《Receptive Field Block Net for Accurate and Fast Object Detection

在这里插入图片描述

ASPP:ASPP是通过并联不同空洞率 3 * 3的卷积核组成的,通过多支路后进行concate,再进行1x1卷积(降维)。

在这里插入图片描述

PAN:PAN是一个非常好用的特征融合方式,在FPN的bottom-up基础上又引入了top-down二次融合(如下图),有效地提升了模型性能。

在这里插入图片描述

当然,还有很多出色的Neck模块,这里就不展开细说了。

1.3 Detection head

一张图像,在经过了backbone和neck两部分的处理后,就得到了最终的特征图。

随后,在这样的特征图上,通过添加几层卷积即可进行识别和定位。

Detection head并不像前两部分那样,有那么多的说道和自由发挥的空间,这一部分通常就是普通的卷积。如下图的RetinaNet,最后的detection head部分就是三条并行的分支,每个分支右4层普通卷积堆叠而成。

在这里插入图片描述

结语:

我们可以为以上任意部分【主干网络、Neck以及检测头】单独去设计一个模块,然后“插进去”即可。

很多目标检测的优化工作就是这么来的,比如2018年的ECCV上的RFBNet,就是在SSD基础上,设计了RFB模块插进Neck部分,从而显著提升了模型性能。

在这里插入图片描述

本文参考自《YOLO目标检测》ISBN编号:9787115627094

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1301453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jol-分析Java对象的内存布局

Jol-分析Java对象的内存布局 Open JDK提供的JOL(Java Object Layout)工具为我们方便分析、了解一个Java对象在内存当中的具体布局情况。本文实验环境为64位HotSpot虚拟机。 Java对象的内存布局 Java的实例对象、数组对象在内存中的组成包括:对象头、实例数据和内存…

一键优化工具,十分不错的win7、win10系统优化的工具,可以帮助用户轻松快速优化系统,供大家学习研究参考~

主要功能 01、禁用索引服务 02、禁止window发送错误报告 03、禁用"最近使用的项目” 04、关闭Windows Defender 05、关闭防火墙 06、检查更新而不自动下载更新 07、启动电源计划“高性能” 08、调整电源选项 09、禁用休眠(删除休眠文件) 10、开启快速启动 11、…

【lesson3】数据库表的操作

文章目录 创建修改修改表名增加表类型修改表的某一类型的类型修改表某一类型的类型名 删除删除表的某一列删除表 查看查看表信息查看表内容 创建 建表指令: 查看是否建表成功: 查看表的具体信息: 修改 修改表名 法一:修改…

yolov5目标检测

一、安装 1.源码下载 git clone git://github.com/ultralytics/yolov5.git cd yolov5 2.环境配置 conda create -n yolov5 python3.8 conda activate yolov5 nvcc -V查看cuda版本 pytorch官网下载对应版本,例如当cuda版本为11.6 pip install torch1.13.1cu…

阿里云服务器租用价格分享,阿里云服务器热门配置最新活动价格汇总

在我们购买阿里云服务器的时候,1核2G、2核2G、2核4G、2核8G、4核8G、8核16G、8核32G等配置属于用户购买最多的热门配置,1核2G、2核2G、2核4G这些配置低一点的云服务器基本上能够满足绝大部分个人建站和普通企业用户建站需求,而4核8G、8核16G、…

Vue之模板语法

模板语法有两大类&#xff1a; 1.插值语法 2.指令语法 让我为大家介绍一下吧&#xff01; 一、插值语法 功能:用于解析标签体内容。 写法: {{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性。 举个例子&#xff1a; <!DOCTYPE html> &l…

六级高频词汇3

目录 单词 参考链接 单词 400. nonsense n. 胡说&#xff0c;冒失的行动 401. nuclear a. 核子的&#xff0c;核能的 402. nucleus n. 核 403. retail n. /v. /ad. 零售 404. retain vt. 保留&#xff0c;保持 405. restrict vt. 限制&#xff0c;约束 406. sponsor n. …

LinuxBasicsForHackers笔记 -- BASH 脚本

你的第一个脚本&#xff1a;“你好&#xff0c;黑客崛起&#xff01;” 首先&#xff0c;您需要告诉操作系统您要为脚本使用哪个解释器。 为此&#xff0c;请输入 shebang&#xff0c;它是井号和感叹号的组合&#xff0c;如下所示&#xff1a;#! 然后&#xff0c;在 shebang …

“我“的测试之路,从初级测试到测试开发,往后前景...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、测试工程师的现…

C++ //习题2.5 请写出下列表达式的值。

C程序设计 &#xff08;第三版&#xff09; 谭浩强 习题2.5 习题2.5 请写出下列表达式的值。 (1) 3.5 * 3 2 * 7 - ‘a’ (2) 26 / 3 34 % 3 2.5 (3) 45 / 2 (int)3.14159 / 2 (4) a b (c a 6) 设a的初值为3 (5) a 3 * 5, a b 3 * 2 (6) (int)(a 6.5) % 2 …

DevEco Studio 3.1IDE环境配置(HarmonyOS 3.1)

DevEco Studio 3.1IDE环境配置&#xff08;HarmonyOS 3.1&#xff09; 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、环境安装 IDE下载地址&#xff1a;HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 IDE的安装就是…

家具制造ERP软件包含哪些功能?家具制造业ERP系统哪个好

不同的家具有不同的用料、品质、制造工时、营销渠道等&#xff0c;而有些家具制造企业采用传统的管理方式在处理物料BOM、生产实际成本核算、库存盘点、供应商选择、班组计件核对、生产领用以及物料追溯等方面存在不少提升空间。 与此同时也有很多的皮具制造企业借助ERP软件优…

探索HarmonyOS_开发软件安装

随着华为推出HarmonyOS NEXT 宣布将要全面启用鸿蒙原声应用&#xff0c;不在兼容安卓应用&#xff0c; 现在开始探索鸿蒙原生应用的开发。 HarmonyOS应用开发官网 - 华为HarmonyOS打造全场景新服务 鸿蒙官网 开发软件肯定要从这里下载 第一个为微软系统(windows)&#xff0c;第…

GLAB | CCNA+HCIA=融合课-最新开课通知

敲重点! 12月17日 CCNAHCIA 周日开课啦&#xff01; CCNA&#xff08;Cisco Certified Network Associate&#xff09;认证是Cisco售后工程师认证体系的入门认证&#xff0c;也是Cisco各项认证中级别最低的技术认证通过CCNA认证可证明你已掌握网络的基本知识&#xff0c;并能…

docker 一键寻找容器在服务器存储位置

docker ps -a找到容器id/容器名称 docker inspect 容器id/容器名称 | grep UpperDir找出该容器在物理机的位置 inspect作用:查看docker详细信息 cd到UpperDir所指向的地址&#xff0c;找到配置文件并修改,到这后,这个位置和你用exec命令进入容器内看到文件是一致的

盛域宏数合伙人张天:AI时代,数字化要以AI重构

大数据产业创新服务媒体 ——聚焦数据 改变商业 在这个飞速发展的科技时代&#xff0c;数字化已经深刻地改变了我们的生活和商业方式。信息技术的迅猛发展使得数据成为现代社会最宝贵的资源之一。数字化已经不再是可选项&#xff0c;而是企业持续发展的必由之路。背靠着数据的…

【LeetCode:1631. 最小体力消耗路径 | BFS + 二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

高仿B站视频网站系统源码 附带完整的搭建教程

现如今&#xff0c;视频分享网站逐渐成为人们休闲娱乐和学习知识的重要平台。B站作为中国最大的弹幕视频网站之一&#xff0c;以其独特的弹幕系统、丰富的内容和良好的用户体验赢得了广大用户的喜爱。然而&#xff0c;对于一些想要搭建自己的视频分享网站的用户来说&#xff0c…

【ScienceAI Weekly】IBM新AI芯片提效25倍;清华大学发AI辅助框架;DeepMind新工具预测220万新晶体

「ScienceAI Weekly」是 HyperAI 超神经新创建的半月更栏目&#xff0c;主要从科研成果、企业动态、工具资源、近期活动 4 个维度&#xff0c;收集呈现 ScienceAI 领域近期值得关注的最新动态&#xff0c;以期为长期关注该领域的从业者、爱好者&#xff0c;提供更有价值的圈内资…

Docker中的常见命令

Docker开机自启 systemctl enable dockerDocker容器开机自启 docker update --restartalways [容器名/容器id]案例&#xff1a;docker操作nginx 拉取Nginx镜像 docker pull nginx查看镜像 docker images创建并运行Nginx容器 docker run -d --name nginx -p 80:80 nginx查…