# 1.识别效果展示
![2.png](8a8aed69c2964dce8c7139f53674951e.png)
![3.png](6e06c024dc41805c4c87022a929db49c.png)
# 2.视频演示
[[YOLOv7]基于YOLOv7的柑橘损伤检测系统(源码&部署教程&数据集)_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1cG4y1z7eC/?vd_source=bc9aec86d164b67a7004b996143742dc)
# 3.YOLOv7算法简介
## YOLOv7 在 5 FPS 到 160 FPS 范围内,速度和精度都超过了所有已知的目标检测器
并在 [GPU](https://cloud.tencent.com/product/gpu?from=10680) 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](8037b41a274016f612083bd3ba1751f5.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)的引导式标签分配。
## 该研究的主要贡献包括:
(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](8f058752a4c50262d69ac3d97464717a.png)
[参考该博客提出的新的 E-ELAN](https://mbd.pub/o/bread/Y5WYkp1p) ,改变原有架构的梯度传输路径,其中使用组卷积来增加添加特征的基数(cardinality),并以 shuffle 和 merge cardinality 的方式组合不同组的特征。这种操作方式可以增强不同特征图学得的特征,改进参数的使用和计算效率。
无论梯度路径长度和大规模 ELAN 中计算块的堆叠数量如何,它都达到了稳定状态。如果无限堆叠更多的计算块,可能会破坏这种稳定状态,参数利用率会降低。新提出的 E-ELAN 使用 expand、shuffle、merge cardinality 在不破坏原有梯度路径的情况下让网络的学习能力不断增强。
在架构方面,E-ELAN 只改变了计算块的架构,而过渡层(transition layer)的架构完全没有改变。YOLOv7 的策略是使用组卷积来扩展计算块的通道和基数。研究者将对计算层的所有计算块应用相同的组参数和通道乘数。然后,每个计算块计算出的特征图会根据设置的组参数 g 被打乱成 g 个组,再将它们连接在一起。此时,每组特征图的通道数将与原始架构中的通道数相同。最后,该方法添加 g 组特征图来执行 merge cardinality。除了保持原有的 ELAN 设计架构,E-ELAN 还可以引导不同组的计算块学习更多样化的特征。
因此,对基于串联的模型,我们不能单独分析不同的扩展因子,而必须一起考虑。该研究提出图 (c),即在对基于级联的模型进行扩展时,只需要对计算块中的深度进行扩展,其余传输层进行相应的宽度扩展。这种复合扩展方法可以保持模型在初始设计时的特性和最佳结构。
此外,该研究使用梯度流传播路径来分析如何重参数化卷积,以与不同的网络相结合。下图展示了该研究设计的用于 PlainNet 和 ResNet 的「计划重参数化卷积」。
![7.png](9e0d7b763f3a5616be9ead1da0515ed4.png)
# 5.数据集的准备
## [参考该博客提供的数据集](https://afdian.net/item?plan_id=ecd4b36c5f1111ed887652540025c377)
![5.png](d800270e099d04fa8d63af7877bc5fa3.png)
![6.png](d0209de7b64447d3a44acc48df24280e.png)
自己创建一个myself.yaml文件用来配置路径,路径格式与之前的V5、V6不同,只需要配置txt路径就可以
![8.png](8f90fc83fe9858cdcf4d42888efdf8a5.png)
![9.png](aa8176dc56d69a17945ec98c0dd07d18.png)
train-list.txt和val-list.txt文件里存放的都是图片的绝对路径(也可以放入相对路径)
![12.png](cd14de3d6404194d50e7ac32308a19c0.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](8938f21dd793dea45d829ace3f5c6398.png)
路径修改完之后右击运行即可
![14.png](6348a9e1ac996bbb83b1338762b46031.png)
## 经过漫长的训练过程,YOLOv7相比YOLOv5训练更吃配置尤其是显存,实测GPU 3080ti训练长达40小时以上,建议电脑显存8G以下的谨慎尝试,可能训练的过程低配置的电脑
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
柑橘损伤检测系统(源代码&部署教程&数据集)_Citrus检测系统源代码教程数据集.zip (18个子文件)
citrus-injury-detection-system-source-tutorial-dataset-main
6348a9e1ac996bbb83b1338762b46031.png 200KB
aa8176dc56d69a17945ec98c0dd07d18.png 267KB
9e0d7b763f3a5616be9ead1da0515ed4.png 318KB
d800270e099d04fa8d63af7877bc5fa3.png 3.5MB
8f90fc83fe9858cdcf4d42888efdf8a5.png 50KB
15900d621ee2efa74b6b08e110e35b52.jpeg 1000KB
8037b41a274016f612083bd3ba1751f5.png 276KB
d0209de7b64447d3a44acc48df24280e.png 152KB
listdir.py 591B
cd14de3d6404194d50e7ac32308a19c0.png 387KB
1abb904aa8c3b64f7a837014eed5e566.png 486KB
8a8aed69c2964dce8c7139f53674951e.png 835KB
8ae94f342c6a519dfb53f865ec70bc70.png 117KB
6e06c024dc41805c4c87022a929db49c.png 823KB
8938f21dd793dea45d829ace3f5c6398.png 778KB
8f058752a4c50262d69ac3d97464717a.png 213KB
README.md 9KB
柑橘损伤检测系统(源码&部署教程&数据集)_citrus-injury-detection-system-source-tutorial-dataset
项目内附说明
如果解压失败请用ara软件解压.txt 42B
共 18 条
- 1
资源评论
好家伙VCC
- 粉丝: 1958
- 资源: 9137
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功