yolov5(6.1)学习历险记

这篇具有很好参考价值的文章主要介绍了yolov5(6.1)学习历险记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

yolov5整体结构可以分成backbone(骨干网),neck(颈部),head(检测头)三个部分,其中在yolov5.yaml配置文件中neck和head写在了一个部分。

backbone:进行特征提取。常用的骨干网络有VGG,ResNet,DenseNet,MobileNet,EfficientNet,CSPDarknet 53,Swin Transformer等。(其中yolov5s采用CSPDarknet 53作为骨干网)应用到不同场景时,可以对模型进行微调,使其更适用于特定的场景。

neck:neck的设计是为了更好的利用backbone提取的特征,在不同阶段对backbone提取的特征图进行在加工和合理利用。常用的结构有FPN,PANet,NAS-FPN,BiFPN,ASFF,SFAM等。(其中yolov5采用PAN结构)共同点是反复使用各种上下采样,拼接,点和和点积来设计聚合策略。

Head:骨干网作为一个分类网络,无法完成定位任务,Head通过骨干网提取的特征图来检测目标的位置和类别。

再说PANet之前就得说到FPN,这应该也是看文献中反复会提到的一个词语---特征金字塔

(一)特征金字塔(Feature Pyramid Network, FPN)

总所周知,图像中存在不同尺寸的目标,不同的目标具有不用的特征。其中浅层特征更关注细节信息,对目标的定位十分关键。而深层特征更关注语义信息,对目标对象的分类十分重要。大多数通用检测器只采用末层输出进行检测,其中包含丰富的语义信息却忽略其他层的特征。(如SSD) 

yolov5(6.1)学习历险记

 为了利用多层特征信息,有研究者提出图像金字塔,在图像金字塔的每一层所提出的不同特征,分别进行相应的预测。尽管精度上有一定的提升,但计算量大,需要大量的内存,并且这个点经常会成为整个网络模型优化的瓶颈,所以一般不会采用这个方法。

yolov5(6.1)学习历险记

 为了改进图像金字塔,有研究者提出减少预测的特征图,同时利用高层和低层特征进行预测(在不同的层级上)。在一定程度上不同层级对应不同输出,加速了运算,但是!所获得的特征不具有鲁棒性,都是一些弱特征(毕竟没有经过那么多网络的“筛选”)。

为解决上述问题,特征金字塔能够在速度和准确率之间进行权衡,获得更加鲁棒的语义信息!

yolov5(6.1)学习历险记

 首先对输入图像进行深度卷积,然后对2上面的特征进行降维操作(即添加一个1*1的卷积层)然后对4上的特征进行上采样使得其具有相同的尺寸,然后对于处理好的2,4进行加法操作,将获得的结果输入到5中,以此获得更强的语义信息。(其中1-3为bottom-up,4-6为top-down)

FPN可以很好处理小目标的原因:

1.FPN可以利用经过top-down模块后的那些上下文信息(高层语义信息)。

2.对于小目标而言,FPN增加了特征映射的分辨率。(即在更大的Feature map上操作,可以获得更多关于小目标的信息)

 (二)路径聚合网络(Path Aggregation Network,PANet)

相较于FPN的改进点如下:

1.提出一个自顶向下和自顶向上的双向融合骨干网络                                                                          2.在最底层和最高层之间添加了一条“short cut”用于缩短层之间的路径                                              3.为恢复每个建议区域和所有特征层级之间被破坏的关系,提出自适应特征池化(adaptive feature pooling )                                                                                                                                            4.全连接融合层:使用一个小型FC层用于补充mask预测

yolov5(6.1)学习历险记

 在FPN中,依据候选框区域大小分配不同特征层次,小的分配到low-level,大的分配到high-level。所以提出池化来自所有层的特征,然后融合他们做预测。---自适应特征池化

(三)Bidirectional Feature Pyramid Network 加权双向(自顶向下 + 自低向上)特征金字塔网络

yolov5(6.1)学习历险记

与PAN相比改进点:

增加残差链接:通过简单的残差操作,增强特征的表示能力(紫色路线)

移除单输入边的结点:因为但输入边的结点没有进行特征融合,故具有的信息比较少,对于最后的融合没有什么贡献度,相反,移除还能减少计算量。

权值融合:简单来说,就是针对融合的各个尺度特征增加一个权重,调节每个尺度的贡献度,其中,做个提出了Fast-softmax,提高检测速度。其实就是注意力机制与FPN的碰撞。

BiFPN = 加强版的PANet(重复双向跨尺度连接) + 带权重的特征融合机制

yolov5采用PAN作为颈部网络

yolov5(6.1)学习历险记

 其中C3模块换成了不带有残差连接的模块,因为认为在neck部分不需要再一味的加深网络。通过上采样(upsample)来调整特征图的尺寸方便进行拼接操作。针对yolov5neck部分改进也有很多,比如替换PAN为BiFPN,ASFF等。不同应用场景效果不同!

总之还有好多好多要学习的....慢慢来吧!加油!

 文章来源地址https://www.toymoban.com/news/detail-475280.html

到了这里,关于yolov5(6.1)学习历险记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++历险记】国庆专辑---探索多态迷宫的代码之旅

    🎉博客主页:.小智 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:C++终极篇 🎉代码仓库:小智的代码仓库 多态多态顾名思义就是多种形态,比如我们要完成某一件事情,不同的对象去完成,我们产生的结果是不一样的。 举个栗子我们平时的买火车票,就有这几种分

    2024年02月08日
    浏览(26)
  • 图灵日记之java奇妙历险记--抽象类和接口

    在面向对象的概念中,所有对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息描绘一个具体的对象,这样的类就是抽象类 使用abstract修饰的方法称为抽象方法 使用abstract修饰的类称为抽象类 抽象类是不可以进行实例化的

    2024年02月03日
    浏览(32)
  • 振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(9)

    注解目录 1、znFAT 的起源 1.1 源于论坛 (那是一个论坛文化兴盛的年代。网友 DIY SDMP3 播放器激起了我的兴趣。) 1.2 硬盘 MP3 推了我一把 (“坤哥”的硬盘 MP3 播放器,让我深陷 FAT 文件系统不能自拔。) 1.3 我的导师-- 顾国昌教授 (哈军工时期的老教授,德高望重的人生导师

    2024年02月03日
    浏览(33)
  • 图灵日记之java奇妙历险记--数据类型与变量&&运算符

    看下面这个栗子,宝子们 输出的\\\"cheer up!!!\\\"就是字面变量 字面常量的值在程序的整个生命周期中是不变的 字面常量的分类: 字符串常量 整形常量 浮点数常量 字符常量 布尔常量:只有两种true和false 空常量 注意:字符串,整形,浮点型,字符型以及布尔型,在java中都被叫作数据类型

    2024年02月04日
    浏览(33)
  • Hadoop历险记(七 Hive配置和启动hiveservice2服务)

    之前讲了hive的元数据,它存储着hiveSQL映射和hdfs具体文件数据的对应关系。 但是元数据存在单独的mysql中 直接将它暴露给外部是不安全的,所以hive特别增加了一个元数据服务。 它作为元数据和外部客户端之间的一个中间人。 metastore有三种服务配置模式 同时也可以说这是h

    2024年02月03日
    浏览(34)
  • 林浩然与杨凌芸的Java时光魔法:格式化历险记

    林浩然与杨凌芸的Java时光魔法:格式化历险记 The Java Time Odyssey of Lin Haoran and Yang Lingyun: A Formatting Adventure 在编程世界的一隅,有一个名叫林浩然的程序员。他是个Java大侠,对代码世界的法则了如指掌,尤其擅长驾驭时间这个变幻莫测的维度。而他的生活伴侣、同样是码界巾

    2024年02月20日
    浏览(26)
  • 前台测试转后台优化历险记,应届生薪资8K逆袭,从此扶摇直上九万里!

    优橙教育每一期都会有不少从前台测试转到后台的小伙伴应邀而来,其实每个人的经历都是大致相同的,这时候肯定会有很多小伙伴问,为什么出来花钱出来参加培训而不是在项目上转呢? 或许是因为在项目上摸爬滚打太久了,吃不下领导画的大饼了;也或许是因为确实整天

    2024年02月13日
    浏览(40)
  • 数通王国历险记之TCP协议的三次握手和四次挥手

    目录 前言  一、TCP我们称之为可靠的传输层协议,为什么称它为可靠呢? 二、TCP的建立——三次握手 1,提前知道TCP协议报文中都有些啥? 2.第一次握手 总的来说:就是PC1向PC2发出一个同步报文说,我想和你建立连接 3,第二次握手 总的来说:就是PC2同意和PC1建立连接,同时确

    2024年02月11日
    浏览(30)
  • K8S历险记-从零开始kubeadm单机安装部署k8s保姆级教程

    1.查看系统版本信息以及修改配置信息 1.1 查看cpu信息 k8s安装至少需要2核2G的环境,否则会安装失败 1.2 安装k8s时,临时关闭swap ,如果不关闭在执行kubeadm部分命令会报错 1.3 安装k8s时,可以临时关闭selinux,减少额外配置 1.4 关闭防火墙 1.5 设置网桥参数 1.6 修改hosts文件

    2024年02月08日
    浏览(38)
  • 【BUG历险记】vivado报错:binding vhdl entity ‘ xxxxx ‘does not have port ‘ xxxxx ‘解决方案

    🏔【BUG历险记】 vivado报错:binding vhdl entity xxxxx \\\' does not have port \\\' xxxxx \\\'解决方案 我在编写雷达的脉冲压缩仿真时,先例化了FFT和复数乘法器,并仿真验证通过了;再例化IFFT,结果仿真时出现错误,前面仿真通过的复数乘法器报错。说是没有aclk引脚,实际上是有的。 更改代

    2024年02月12日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包