深度学习(26)——YOLO系列(5)

news/2024/11/23 3:42:51/

深度学习(26)——YOLO-v7(5)

文章目录

  • 深度学习(26)——YOLO-v7(5)
    • 絮絮叨叨
    • 1. conv和BN的融合
    • 2. 3*3卷积的替换
      • (1)1*1卷积有什么作用?
      • (2)怎么将1 * 1卷积核转化为3 * 3卷积核
    • 3. 正样本分配策略
      • (1)什么是正样本匹配??
      • (2)为什么要用正样本匹配?
      • (3)lead的三个点
      • (4)aux的五个点
      • (5)最后的loss和哪些正样本有关?
    • 4. AUX辅助头
    • 5. 网络结构

不知不觉YOLO系列已经出了四篇了,原本想着两三篇就差不多了,但是奈何YOLO是个大家,学都学不完,今天是YOLOv7理论,所以熟悉的可以预测到下一个就是v7代码了。

絮絮叨叨

在我们的认知中训练和推理(预测)的网络一定要是一样的,但是YOLO-v7即将颠覆我们的认知,训练和推理的网络可以不同。为了提高推理的效率,YOLO-v7在推理过程中做了两个改进

  • 一般情况一个convolution层(conv层)后加一个batchnormalization(BN层),将两者融合为一个conv层计算
  • VGG在2014年提出一个观点因为英伟达底层的原理,3 * 3的卷积效果和计算速率是所有卷积中效果最好的,所有YOLO-v7在推理过程中将所有卷积都替换为3 * 3卷积

1. conv和BN的融合

  • batchnormalization是将一个channel的数值标准化,使其尽量集中在一个片区
    【BN的计算公式↓】 其中γ和β是两个可学习的变量,γ控制缩放,β控制偏移,尽可能让一个channel都集中在(0,0)
    在这里插入图片描述

  • 怎么融合呢??

    • 卷积的格式无非是y=wx+b,将上式拆开↓,可以发现和卷积有相同的格式:在这里插入图片描述
      在这里插入图片描述
    • 卷积以后BN在这里插入图片描述
    • 整合以后可以得出整合后的w和b是下面这样,就可用这样的卷积实现了在这里插入图片描述

2. 3*3卷积的替换

YOLO-v7中除了3 * 3就是1 * 1 的卷积了,所以这里其实就是怎么将1 * 1的卷积转化成3 * 3卷积:

(1)1*1卷积有什么作用?

这个问题是前段时间ly留给我的问题,当时只想到了升维降维和特征提取,今天查了一下详细记录:具体大家可以参考这篇:blog

  • 降维和升维
  • 跨通道的特征整合
  • 增加非线性特性,在保持特征尺度不变的情况下,将网络做的更deep
  • 减少计算量

(2)怎么将1 * 1卷积核转化为3 * 3卷积核

将11卷积周围加padding就可,需要注意的是原图也要在周围增加padding。计算方式是一样的。
残差连接的方式使用的卷积也不是直接拿来,乘以一个对角元素都为1的3
3卷积即可

3. 正样本分配策略

(1)什么是正样本匹配??

特征图中每个点都会有预测结果,为了提高效率,只有正样本参与loss的计算,那哪些是正样本呢?
距离groundtruth中心点附近的点才是正样本

(2)为什么要用正样本匹配?

甲方可能希望你无论检测的效果如何,都希望你能检测出来,就是希望recall值提高,所以在前期不想YOLOv5等前期版本只有一个正样本,这里给正样本更多选择(lead有三个点,aux有五个点)。

(3)lead的三个点

假设蓝色的点是距离groundtruth最近的点,那么对他进行0.5的偏移就到了他的右侧和下册,所以就又多了两个点,一共三个点。
在这里插入图片描述

(4)aux的五个点

和上面类似,为什么是五个点呢,aux采用的偏移量是1,所以上下左右都是正样本,一共五个

(5)最后的loss和哪些正样本有关?

以lead为例,根据上述得到的三个点对对候选框做选择,怎么选呢?

  • 初筛:0.25<groundtruth与anchor长宽比例<4
  • 计算IOU
  • 计算类别预测损失

根据上述损失排名后选择topk,但是有时会出现断崖式下降的,所以将topk进行累加后重新定义k(如:如果之前的k为10 ,累加后和为7的k变为7,累加和为5将k更新为5)

4. AUX辅助头

  • YOLO-v5的输入size是640,YOLO-v7中可以取1280,间隔取值,将12801280的特征间隔1转化为4个640640的特征图,在channel维度增加了,进网络的时候还是640,隐性的增大了图片尺寸
  • 原本有四个输出层,现在每个输出层都有一个辅助输出头,相当于增加了一个输出,一共有8个输出层

5. 网络结构

在这里插入图片描述
里面没有很亮眼的地方,就是特征的拼接,和YOLO-v5有很多地方都是异曲同工,SPP思想和PAN思想,可以看上篇。
今天又是充实的一天,先这样,886!


http://www.ppmy.cn/news/570992.html

相关文章

LeetCode 每日一题 2023/6/19-2023/6/25

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 6/19 1262. 可被三整除的最大和6/20 1595. 连通两组点的最小成本6/21 LCP 41. 黑白翻转棋6/22 面试题 16.19. 水域大小6/23 2496. 数组中字符串的最大值6/24 1659. 最大化网…

深入Python网络编程:从基础到实践

Python&#xff0c;作为一种被广泛使用的高级编程语言&#xff0c;拥有许多优势&#xff0c;其中之一就是它的网络编程能力。Python的强大网络库如socket, requests, urllib, asyncio,等等&#xff0c;让它在网络编程中表现优秀。本文将深入探讨Python在网络编程中的应用&#…

汽车行业项目管理面临的5个挑战及解决方案

汽车行业正跨越式地迈向新的未来。其目前的发展主要由四大趋势驱动&#xff1a;连接性、自动驾驶汽车、共享出行和电气化。这给汽车企业带来了诸多挑战&#xff1a;竞争加剧&#xff0c;快速发展带来的频繁变化&#xff0c;与软件公司建立伙伴关系&#xff0c;以及其他相关问题…

Chrome浏览器对应chromedriver版本 最新2019

直接参考下表&#xff0c;根据自己的浏览器版本去下载对应的Chromedriver&#xff1a; ChromeDriver版本 Support Chrome版本 2.46 V71-73 2.45 V70-72 2.44 V69-71 2.43 V69-71 2.42 V68-70 2.41 V67-69 2.40 V66-68 2.39 V66-68 2.38 V65-67 2.37 V64-…

如何让antv x6兼容IE浏览器

如何让antv x6兼容IE浏览器&#xff1a; 可以学习anvt G6的方法去处理&#xff0c;亲测有效。 链接地址&#xff1a;https://antv-g6.gitee.io/zh/docs/manual/FAQ/supportIE解决方法&#xff1a; 1、在main.js中&#xff0c;引入babel-polyfill import babel-polyfill;2、在…

Windows 11如何使用IE浏览器

Windows 11已经彻底移除了我们一直使用的IE浏览器。但是众所周知有一些网站还是一定要通过IE访问&#xff0c;怎么办&#xff1f;很简单&#xff0c;使用Microsoft Edge内置的IE模式就可以了。 在开启任意网页时只要选择右上角的三个点 开启后&#xff0c;网页旁边会有一个IE地…

win11系统怎么使用ie浏览器

平常在使用电脑的时&#xff0c;有些网址必须使用ie浏览器才可以打开&#xff0c;所以电脑系统升级到win11后给使用者带来不便&#xff0c;但也有解决方法。电脑里有ie浏览器的图标&#xff0c;但点击进去却是Microsoft Edge浏览器&#xff0c;并不是ie浏览器。其实电脑里还是有…

Win11如何使用IE浏览器

1.下载ieframe.dll文件。&#xff08;文末有链接。&#xff09; 2.将此文件复制到C:\Windows\System32。 若没有权限右击ieframe.dll文件->属性->安全->编辑 添加->输入对象名称Administrators点击确定。 点击允许&#xff0c;然后将ieframe.dll再复制到C:\Windo…