前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【目标检测】YOLOv7理论简介+实践测试

【目标检测】YOLOv7理论简介+实践测试

作者头像
zstar
发布于 2022-09-19 07:38:11
发布于 2022-09-19 07:38:11
1.5K0
举报
文章被收录于专栏:往期博文往期博文

概述

YOLOv7由YOLOv4的作者团队提出,其论文一作也是YOLOR的作者。 论文的风格也和YOLOR一样,比较难懂,因此这里的理论部分也不做仔细研究,仅对论文提出的几个创新点进行翻译概括。

理论创新

扩展的高效层聚合网络

作者提出了一个网络结构E-ELAN使用expand、shuffle、merge cardinality来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。

基于concatenate模型的模型缩放

作者提出了一个模型缩放方法,可以保持模型在初始设计时的特性并保持最佳结构。

计划重参数化卷积

尽管RepConv在VGG基础上取得了优异的性能,但当将它直接应用于ResNet、DenseNet和其他架构时,它的精度将显著降低。作者使用梯度流传播路径来分析重参数化的卷积应该如何与不同的网络相结合。作者还相应地设计了计划中的重参数化的卷积。

标签匹配

过去,在深度网络的训练中,标签分配通常直接指GT,并根据给定的规则生成硬标签。然而,近年来,如果以目标检测为例,研究者经常利用网络预测输出的质量和分布,然后结合GT考虑,使用一些计算和优化方法来生成可靠的软标签。例如,YOLO使用边界框回归预测和GT的IoU作为客观性的软标签。在本文中,作者将网络预测结果与GT一起考虑,然后将软标签分配为“label assigner”的机制。

最后,作者进行了一系列模型比较实验,结果如下表所示:

实验测试

不管前面的理论部分说得多么花里胡哨,最终还是要以实践测试结果来说明。 由于YOLOv7是基于YOLOv5代码进行修改的,因此训过YOLOv5模型的人都可以很容易得跑起来。 这里具体的流程就不再重复了,因为和【目标检测】YOLOv5跑通VisDrone数据集里面的一模一样。

这里我仍是采用VisDrone数据集,使用YOLOv7模型,添加和上篇博文里一样的训练参数,结果训练1个epoch之后,爆显存了。。

我把batch_size改成1,坚持了2个epoch,显存依旧爆炸。

于是我换用了自己的数据集,和YOLOv5-5.0做对比测试,效果如下:

算法

mAP@.5

mAP@.5:.95s

yolov5-5.0

95.6%

67.6%

yolov7

94.8%

67.4%

可以看到,yolov7的效果在我自己的数据集上,效果还不如yolov5,这可能是由于我的数据集目标较大,较稀疏,检测难度不高。另外,输入的图片是640x640的尺寸,yolov7更好的模型推荐的输入尺寸是1280x1280。不过,对我这个6GB的渣显卡来说,无法进行测试验证。等我以后有机会换设备再尝试。。

代码备份

YOLOv7代码备份:https://pan.baidu.com/s/1gj5TAOH-z8_kLJDDQxlKfg?pwd=8888 包含yolov7.pt,yolov7-e6e.pt两个预训练模型

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Sass-学习笔记【进阶篇】
特别说明: 没有sass基础请移步:【Sass-学习笔记【基础篇】】http://www.cnblogs.com/padding1015/articles/7056323.html 最底部附结构图(实
xing.org1^
2018/05/17
4.6K0
Sass 基础(六)
join() 函数    join()函数是将两个列表连接合并成一个列表。    >>join(10px 20px, 30px 40px)       (10px 20px 20px 40px)    >>join((blue,red),(#abc,#def))       (#0000ff,#ff0000,#aabbcc,#ddeeff)    不过join()只能将两个列表连接成一个列表,如果直接连接两个以上的列表将会报错    将多个join()函数合并在一起使用    >>join(
用户1197315
2018/01/19
8130
SASS用法指南
SASS是ruby写的,所以要想将sass编译成css文件,就给配上ruby环境。
书童小二
2018/09/03
1.3K0
SASS用法指南
CSS预处理器之SCSS
变量支持块级作用域,嵌套规则内定义的变量只能在嵌套规则内使用(局部变量),不在嵌套规则内定义的变量则可在任何地方使用(全局变量)。将局部变量转换为全局变量可以添加 !global 声明
小小杰啊
2022/12/21
4K0
Sass入门使用指南
&标识符: 在需要避免sass默认解套后空格连接父子选择器导致样式不生效的的情况下使用&处理,如遇到伪类选择器:hover等。
前端小鑫同学
2022/12/24
3.3K0
Sass入门使用指南
SASS相关
版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/article/details/53309416
空空云
2018/09/27
8520
SASS相关
09-移动端开发教程-Sass入门
CSS3之前的CSS都大都是枚举属性样式,而编程语言强大的变量、函数、循环、分支等功能基本都不能在CSS中使用,让CSS的编程黯淡无光,Sass就是一种增强CSS编程的扩展语言(CSS4也可以期待),有了像Sass这种预处理语言后,CSS的编程不再局限在枚举属性了,可以有更广阔的舞台。
老马
2018/02/18
2.3K0
09-移动端开发教程-Sass入门
Sass速通(一):变量与运算
如果要使用多个单词命名,最好使用中横线或下划线连接的方式,这两种命名方式虽然不同,如 danger-color 和 danger_color,但是却指向同一个变量。
lonelydawn
2021/09/26
1.8K0
CSS预处理器之Sass
"liveSassCompile.settings.autoprefix": 自动添加 CSS 前缀的配置。设置为使用最新的两个版本和全球使用率超过 1% 的浏览器。
HelloWorldZ
2024/03/20
2070
CSS预处理器之Sass
Sass 教程
Sass: (Syntactically Awesome StyleSheets)
零式的天空
2022/03/22
5.8K0
Sass 基础(七)
Sass Maps 的函数-map-remove($map,$key),keywords($args)     map-remove($map,$key)     map-remove($map,$key)函数是用来删除当前$map中的某一个$key,从而得到一个新的     map,其返回的值是一个map.他并不能直接从一个map 中删除另一个map,仅能通过删除     map中的某个key 得到新的map     $map:map-remove($social - colors,drib
用户1197315
2018/01/19
8850
SASS详解@mixins/@include/@extend/@at-root
Sass 支持所有CSS3的 @规则,以及一些已知的其他特定的Sass "指令"。这些在 Sass 都有对应的效果,更多资料请查看 控制指令 (control directives) 。今天重点讲mixins/include/extend
周陆军博客
2023/05/14
1.1K0
SCSS 迷你书 (上)
支持常规的两种注释方法; 1. //双斜杠的单行注释, eg : //这是一个圆角按钮 2. /**/范围注释, eg:
CRPER
2024/02/25
1500
【Sass学习笔记】004-Sass 的基本特性-基础(重要)
在有些编程语言中(如,JavaScript)声明变量都是使用关键词“var”开头,但是在 Sass 不使用这个关键词,而是使用大家都喜欢的美元符号“$”开头。我想用一张图来解释,我一直坚信,一图胜千言万语:
訾博ZiBo
2025/01/06
1320
sass 基础——回顾
1.webstorm 自动编译SASS   下载安装包 http://rubyinstaller.org/downloads/   然后点击安装,路径为默认路径就行, 勾选以下两项     add Ruby executables to your PATH     Associate .rb and rbw files with this Ruby information   安装完,打开命令行 输入 gem install sass   webstorm 配置 点击setting选择tool下的f
用户1197315
2018/01/22
1.1K0
sass 基础——回顾
# Sass速通(四):继承、混合与函数
实际上,Sass 是将使用 @extend 的 .seriousError 和 .error 编译为了组合选择器 .error, .seriousError。以往我们在 CSS 中复用一段样式时,也会使用 组合选择器 这种形式。
lonelydawn
2021/10/13
9770
Sass-学习笔记【基础篇】
最下边附结构图 在线编辑器网址如下:http://sassmeister.com/  注意编写的时候,符号千万别用了中文的:、;、。...之类的,会报错,Sass也转换不成css。 less和sass的区别: 博客园文章—http://www.cnblogs.com/wangpenghui522/p/5467560.html 本章主要内容:变量 、混合宏 、继承 、占位 、插值 、运算 、数据类型 1:定义 Sass是css预处理器的一种,也是最早的css预处理语言。Sass采用Ruby语言编写,为css增
xing.org1^
2018/05/17
5K0
Sass 基础(四)
当你想设置属性值的时候你可以使用字符串插入进来,另一个使用的用法是构建一个选择器。       @mixin generate-sizes($class,$small,$medium,$big){                   .#{$class}-small {font-size:$small;}                   .#{$class}-medium{ font-size:$medium}                   .#{$class}-big{ fo
用户1197315
2018/01/22
1K0
Sass 基础(五)
@if   @if 指令是一个SassScript,它可以根据条件处理样式块,如果条件为true返回一个样式块,反之   false 返回另一个样式块,在Sass 中除了@if之,还可以配合@else if和eles 一起。   例如:      //SCSS       @mixin blockOrHidden($boolean:true){             @if $boolean {               @debug "$boolean is
用户1197315
2018/01/19
7790
Sass中你不清楚的小细节-持续更新
随着css工程化的普及,sass在前端工程中越来越举足轻重。当然sass并不局限于管理css全局变量、mixin之类的"脏活累活"。
19组清风
2021/11/15
2.7K0
相关推荐
Sass-学习笔记【进阶篇】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档