# 1.识别效果展示
![3.png](0e141deaea7ded6d7a52a159445947e5.png)
![4.png](fa86105cfed9b2e0a6332c29d0d40015.png)
# 2.视频演示
[[YOLOv7]基于YOLOv7的抽烟玩手机检测系统(源码&部署教程&智慧校园)_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1za41137r5/?vd_source=bc9aec86d164b67a7004b996143742dc)
# 3.YOLOv7算法简介
## YOLOv7 在 5 FPS 到 160 FPS 范围内,速度和精度都超过了所有已知的目标检测器
并在 V100 上,30 FPS 的情况下达到实时目标检测器的最高精度 56.8% AP。YOLOv7 是在 MS COCO 数据集上从头开始训练的,不使用任何其他数据集或预训练权重。
相对于其他类型的工具,YOLOv7-E6 目标检测器(56 FPS V100,55.9% AP)比基于 transformer 的检测器 SWINL Cascade-Mask R-CNN(9.2 FPS A100,53.9% AP)速度上高出 509%,精度高出 2%,比基于卷积的检测器 ConvNeXt-XL Cascade-Mask R-CNN (8.6 FPS A100, 55.2% AP) 速度高出 551%,精度高出 0.7%。
![5.png](f89c5bdef7a6062947e07fd600eb2409.png)
此外, YOLOv7 的在速度和精度上的表现也优于 YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5、DETR 等多种目标检测器。
# 4.YOLOv7 技术方法
近年来,实时目标检测器仍在针对不同的边缘设备进行开发。例如,MCUNet 和 NanoDet 的开发专注于生产低功耗单芯片并提高边缘 CPU 的推理速度;YOLOX、YOLOR 等方法专注于提高各种 GPU 的推理速度;实时目标检测器的发展集中在高效架构的设计上;在 CPU 上使用的实时目标检测器的设计主要基于 MobileNet、ShuffleNet 或 GhostNet;为 GPU 开发的实时目标检测器则大多使用 ResNet、DarkNet 或 DLA,并使用 CSPNet 策略来优化架构。
YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
对于模型重参数化,该研究使用梯度传播路径的概念分析了适用于不同网络层的模型重参数化策略,并提出了有计划的重参数化模型。此外,研究者发现使用动态标签分配技术时,具有多个输出层的模型在训练时会产生新的问题:「如何为不同分支的输出分配动态目标?」针对这个问题,研究者提出了一种新的标签分配方法,称为从粗粒度到细粒度(coarse-to-fine)的引导式标签分配。
## 该研究的主要贡献包括:
[参考该博客提出的创新点](https://afdian.net/item?plan_id=9ffe639060b911edbc3052540025c377)
(1) 设计了几种可训练的 bag-of-freebies 方法,使得实时目标检测可以在不增加推理成本的情况下大大提高检测精度;
(2) 对于目标检测方法的演进,研究者发现了两个新问题:一是重参数化的模块如何替换原始模块,二是动态标签分配策略如何处理分配给不同输出层的问题,并提出了解决这两个问题的方法;
(3) 提出了实时目标检测器的「扩充(extend)」和「复合扩展(compound scale)」方法,以有效地利用参数和计算;
(4) 该研究提出的方法可以有效减少 SOTA 实时目标检测器约 40% 的参数和 50% 的计算量,并具有更快的推理速度和更高的检测精度。
在大多数关于设计高效架构的文献中,人们主要考虑的因素包括参数的数量、计算量和计算密度。下图 2(b)中 CSPVoVNet 的设计是 VoVNet 的变体。CSPVoVNet 的架构分析了梯度路径,以使不同层的权重能够学习更多不同的特征,使推理更快、更准确。图 2 (c) 中的 ELAN 则考虑了「如何设计一个高效网络」的问题。
YOLOv7 研究团队提出了基于 ELAN 的扩展 E-ELAN,其主要架构如图所示。
![6.png](3a56d1883dde7e7c7b9730bfd109e5b9.png)
新的 E-ELAN 完全没有改变原有架构的梯度传输路径,其中使用组卷积来增加添加特征的基数(cardinality),并以 shuffle 和 merge cardinality 的方式组合不同组的特征。这种操作方式可以增强不同特征图学得的特征,改进参数的使用和计算效率。
无论梯度路径长度和大规模 ELAN 中计算块的堆叠数量如何,它都达到了稳定状态。如果无限堆叠更多的计算块,可能会破坏这种稳定状态,参数利用率会降低。新提出的 E-ELAN 使用 expand、shuffle、merge cardinality 在不破坏原有梯度路径的情况下让网络的学习能力不断增强。
[该博客提出的方案改变了计算块的架构](https://mbd.pub/o/bread/Y5WWkpdy),而过渡层(transition layer)的架构完全没有改变。YOLOv7 的策略是使用组卷积来扩展计算块的通道和基数。研究者将对计算层的所有计算块应用相同的组参数和通道乘数。然后,每个计算块计算出的特征图会根据设置的组参数 g 被打乱成 g 个组,再将它们连接在一起。此时,每组特征图的通道数将与原始架构中的通道数相同。最后,该方法添加 g 组特征图来执行 merge cardinality。除了保持原有的 ELAN 设计架构,E-ELAN 还可以引导不同组的计算块学习更多样化的特征。
因此,对基于串联的模型,我们不能单独分析不同的扩展因子,而必须一起考虑。该研究提出图 (c),即在对基于级联的模型进行扩展时,只需要对计算块中的深度进行扩展,其余传输层进行相应的宽度扩展。这种复合扩展方法可以保持模型在初始设计时的特性和最佳结构。
此外,该研究使用梯度流传播路径来分析如何重参数化卷积,以与不同的网络相结合。下图展示了该研究设计的用于 PlainNet 和 ResNet 的「计划重参数化卷积」。
![7.png](8ff2cd89c7e0ada4f3b25ff43b7b9b8a.png)
# 5.数据集的准备
## 标注收集到的图片制作YOLO格式数据集
![11.png](6dccf568fe521f828de607380ddcacb2.png)
自己创建一个myself.yaml文件用来配置路径,路径格式与之前的V5、V6不同,只需要配置txt路径就可以
![8.png](db3c1a10f56a296ce57359a4fddcf9da.png)
![9.png](1775cc079b59d598a06f97e024c12ecb.png)
train-list.txt和val-list.txt文件里存放的都是图片的绝对路径(也可以放入相对路径)
![12.png](a8855262ea3ba61b73fed35da24d247e.png)
如何获取图像的绝对路径,脚本写在下面了(也可以获取相对路径)
```
# From Mr. Dinosaur
import os
def listdir(path, list_name): # 传入存储的list
for file in os.listdir(path):
file_path = os.path.join(path, file)
if os.path.isdir(file_path):
listdir(file_path, list_name)
else:
list_name.append(file_path)
list_name = []
path = 'D:/PythonProject/data/' # 文件夹路径
listdir(path, list_name)
print(list_name)
with open('./list.txt', 'w') as f: # 要存入的txt
write = ''
for i in list_name:
write = write + str(i) + '\n'
f.write(write)
```
# 6.训练过程
## 运行train.py
train文件还是和V5一样,为了方便,我将需要用到的文件放在了根目录下
![13.png](759a260493012012cca702221d91a14b.png)
路径修改完之后右击运行即可
![14.png](24237bf2f320581fa0b7c6e207dd70f7.png)
## 经过漫长的训练过程,YOLOv7相比YOLOv5训练更吃配置尤其是显存,实测GPU 3080ti训练长达40小时以上,建议电脑显存8G以下的谨慎尝试,可能训练的过程低配置的电脑会出现蓝屏等现象皆为显卡过载,使用本文提供的�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等)的同学或企业员工下载使用,具有较高的学习借鉴价值。 3、不仅适合小白学习实战练习,也可作为大作业、课程设计、毕设项目、初期项目立项演示等,欢迎下载,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于YOLO的抽烟玩手机检测系统(python源码&部署教程).zip (16个子文件)
code_30312
3a56d1883dde7e7c7b9730bfd109e5b9.png 213KB
db3c1a10f56a296ce57359a4fddcf9da.png 50KB
0e141deaea7ded6d7a52a159445947e5.png 1.76MB
1775cc079b59d598a06f97e024c12ecb.png 260KB
759a260493012012cca702221d91a14b.png 766KB
24237bf2f320581fa0b7c6e207dd70f7.png 201KB
8ff2cd89c7e0ada4f3b25ff43b7b9b8a.png 320KB
a8855262ea3ba61b73fed35da24d247e.png 383KB
listdir.py 587B
4780c51d1e4533c00ee17aa5fb06622e.png 97KB
f89c5bdef7a6062947e07fd600eb2409.png 280KB
d50f7814e3e0e56eeac2fdcf761b7b81.jpeg 978KB
fa86105cfed9b2e0a6332c29d0d40015.png 1.25MB
6dccf568fe521f828de607380ddcacb2.png 341KB
README.md 9KB
b869c15276c20172e7bdf61e92aaea71.png 493KB
共 16 条
- 1
资源评论
- xiaoye0110132024-04-09感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。
龙年行大运
- 粉丝: 1002
- 资源: 3854
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功