【毕设记录日记】深度学习|铝型材表面缺陷视觉检测算法:YOLOv5环境搭建、基础知识、问题解决、优化方法

目录

1 YOLOv5环境搭建

1.1 视频版教程

1.2 文字版教程

1.2.1 专栏链接

1.2.2 详细页面

2 YOLO基础知识(2022.5.12 update)

 2.1 YOLO核心基础知识

 2.2 BottleneckCSP和C3

3 问题解决

3.1 PyCharm详细安装及配置教程

3.2 镜像源配置

 3.3 更新显卡驱动

3.4 pip install -r requirements.txt安装失败

 3.5 Packages Not Found

3.6 AttributeError: Can‘t get attribute ‘SPPF‘ 

3.7 Image Not Found

3.8 批量修改文件名

3.9 显存不足:报错CUDA out of memory.

3.10 Tensorboard查看曲线

4 优化部分(官方建议)

4.1 数据集

4.2 预训练权重类型选择

4.3 训练设置

4.4 Further Reading

5 优化部分(其他)

5.1 数据集

5.1.1 基础调整

5.1.2 图像预处理

5.1.2.1 数据增强

5.2 算法优化

5.2.1 小目标检测:增加小目标检测层

5.2.2 提升置信度

5.2.2.1 hyp参数调优

5.2.2.2 提高样本数据量然后重新训练

注:优化重点在数据优化,对模型进行优化的提升相比数据来说较小,两者都可以试一试,但重点还是在数据上,参数要是微调<>测试这样修改。

6 总结

6.1 论文查重


1 YOLOv5环境搭建

1.1 视频版教程

手把手教你搭建自己的yolov5目标检测平台_哔哩哔哩_bilibili

1.2 文字版教程

1.2.1 专栏链接

 https://blog.csdn.net/didiaopao/category_11321656.html 

1.2.2 详细页面

注:以下教程中pytorch和paddle只需要配置一个即可,多用pytorch,飞桨用的比较少,可以按需配置。

利用Anaconda安装pytorch和paddle深度学习环境+pycharm安装---免额外安装CUDA和cudnn(适合小白的保姆级教学)_炮哥带你学的博客-CSDN博客_anaconda安装cuda 目标检测---利用labelimg制作自己的深度学习目标检测数据集_炮哥带你学的博客-CSDN博客_目标检测label

目标检测---数据集格式转化及训练集和验证集划分_炮哥带你学的博客-CSDN博客_目标检测验证集

目标检测---教你利用yolov5训练自己的目标检测模型_炮哥带你学的博客-CSDN博客_yolov5训练自己的模型 yolov5检测框显示中文标签_炮哥带你学的博客-CSDN博客_yolov5中文标签

2 YOLO基础知识(2022.5.12 update)

 2.1 YOLO核心基础知识

这部分真的写的非常好,如果时间够的话强推看一看先!!!

深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解_江大白*的博客-CSDN博客_yolo系列网络

深入浅出Yolo系列之Yolov5核心基础知识完整讲解_江大白*的博客-CSDN博客_yolov5

 2.2 BottleneckCSP和C3

在YOLOv5对backbone的讲解中我发现博主的代码用的是BottleneckCSP模块,而我的是C3模块,所以我去查了一下这两个的区别:

BottleneckCSP
BottlenneckCSP分为两部分,Bottlenneck以及CSP。Bottlenneck其实就是经典的残差结构,先是1x1的卷积层(conv+batch_norm+leaky relu),然后再是3x3的卷积层,最后通过残差结构与初始输入相加。
也就是说将原输入分成两个分支,分别进行卷积操作使得通道数减半,然后分支一进行Bottlenneck x N操作,随后concat分支一和分支二,从而使得BottlenneckCSP的输入与输出是一样的大小,目的是为了让模型学习到更多的特征。
很多人都对yaml文件中[[-1, 3, BottleneckCSP, [1024, False]]False的作用不太理解,其实这就是关闭了shortcut的选项。

CSP瓶颈层结构在Bottleneck部分存在一个可修改的参数n,标识使用的Bottleneck结构个数!
左侧(Bottleneck * n)这一条也是我们的主分支,是对残差进行学习的主要结构,
右侧分支nn.Conv2d实际上是shortcut分支实现不同stage的连接(CSP的思想实现)。

C3
C3模块,其结构作用基本相同均为CSP架构,只是在修正单元的选择上有所不同,其包含了3个标准卷积层以及多个Bottleneck模块(数量由配置文件.yaml的n和depth_multiple参数乘积决定)
C3相对于BottleneckCSP模块不同的是,经历过残差输出后的Conv模块被去掉了,concat后的标准卷积模块中的激活函数也由LeakyRelu变为了SiLU(同上)。
该模块是对残差特征进行学习的主要模块,其结构分为两支,一支使用了上述指定多个Bottleneck堆叠和3个标准卷积层,另一支仅经过一个基本卷积模块,最后将两支进行concat操作。

 这是其他博主的笔记,原文参考:YOLOv5 网络组件与激活函数 代码理解笔记_一颗小树x的博客-CSDN博客_yolo的激活函数

看完我觉得我没太理解,所以又找了一篇有图片的笔记:

YOLOv5中的CSP结构_tt丫的博客-CSDN博客_csp结构 

这个博主的笔记用结构图比较直观的对比出了两个模块类型的区别。

BottleneckCSP和C3用哪个可以参考:YOLOV5网络结构设计的思考_奔跑的阿诺的博客-CSDN博客_yolov5骨干网络

C3

YOLOv5 2020年5月出来后不断更新,不断实践,设计出C3模块用来替换BottleneckCSP模块。当然这是作者在COCO等特定数据集上进行实验得出的,如果大家要进行迁移,也可以考虑不替换。

可以看出C3相对于BottleneckCSP模块,少了一个1x1 conv,同时撤掉了一个BN层和激活函数。
思考:作者在yolov5项目的updated result说:这样操作在YOLOV5X上模型参数量可以从89M下降到87.7M,推理时间从6.9ms下降到6.0ms,mAP从49.2提升到50.1—精简网络结构,减少计算量,降低模型推理时间,同时模型的性能没有下降。

看完这么多笔记我个人感觉其实换Bottleneck和C3没有太大的区别,对于体量比较大的模型可能有速度上的提升,但我这种5s的小白菜应该没太大影响,性能都差不多的话这部分作为基础知识的了解即可

3 问题解决

3.1 PyCharm详细安装及配置教程

pycharm从安装到全副武装,学起来才嗖嗖的快,图片超多,因为过度详细!_川川菜鸟的博客-CSDN博客

3.2 镜像源配置

镜像源用于加快下载外网资源,复制粘贴配置即可。

清华源:https://mirrors.tuna.tsinghua.edu.cn/
腾讯源:https://mirrors.cloud.tencent.com/
阿里源:https://developer.aliyun.com/mirror/
华为源:https://mirrors.huaweicloud.com/home
网易源:http://mirrors.163.com/
淘宝 NPM 镜像:https://developer.aliyun.com/mirror/NPM
豆瓣 Python PyPI 镜像:http://pypi.doubanio.com/simple/

常用清华源即可,详细内容见该博主博客:镜像源是什么_乌11111的博客-CSDN博客_镜像源

 3.3 更新显卡驱动

在后期安装PyTorch的时候要求驱动和CUDA的版本,所以显卡驱动版本较低的需要更新版本驱动。

有独显的教程:

更新显卡驱动_风吹我亦散的博客-CSDN博客

无独显计算机,仅有集显的教程:

集成显卡安装pytorch_lakomi的博客-CSDN博客_集成显卡能用pytorch吗

(我的电脑有独显,这个教程我没有实地考察过效果,可以试一试。)

3.4 pip install -r requirements.txt安装失败

(1)把pip换成pip3 install -r requirements.txt

(2)检查路径。要在requirements.txt所在的文件夹下安装。

(3)缺少C++编译工具,解决方法如下:

三步解决error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“_苦茶_ch066613的博客-CSDN博客

 3.5 Packages Not Found

(1)我自己的问题是根据PyCharm的提醒了两个插件,结果下载了以后每次打开都给我报不同的Packages Not Found,但我在编辑器、Anaconda终端都能检查到我已经安装了这些包。所以我将PyCharm推荐的两个插件关闭试了一下,这个问题就解决了。

(2)如果不是上面的问题,可以看看以下博主的解决办法:

python numpy安装失败,Numpy已安装,但仍然出现错误_Yiqin Fu的博客-CSDN博客

使用pycharm编辑器编写python出现找不到numpy等包的问题_菜坯子的博客-CSDN博客_pycharm没有numpy python3中导入pillow时显示没有名为“pillow”的包(ModuleNotFoundError: No module named 'pillow')_JJJasmine的H君的博客-CSDN博客_import pillow

Pycharm:第三方库安装、包无法找到_Heiiyoo的博客-CSDN博客

pycharm找不到已安装的包/无法找到新包解决办法_MWHLS的博客-CSDN博客_pycharm安装了包找不到 Pycharm 安装第三方包,显示安装成功,但是没有包显示,瞬间解决_比卡丘不皮的博客-CSDN博客_pycharm没有包

解决pycharm中无法安装包,或者安装了仍然无法使用的问题_李略肖的博客-CSDN博客_pycharm无法安装包

pip里面已经下载好的库,但是conda list里面找不到/pip安装了包但pycharm里找不到(pip如何安装到conda下)_落雪wink的博客-CSDN博客_pip安装的包conda没有 因为这部分我最后是自己歪打正着解决掉了,跟以上博主遇到的问题不一样,所以没有验证是否有用,可以按照需求自己试一试。

3.6 AttributeError: Can‘t get attribute ‘SPPF‘ 

YOLOv5-5.0没有SPPF这个类,所以需要去YOLOv5-6.0 copy下SPPF这个类进5.0

在model/common.py中添加如下代码即可:

最上方添加引用:

import warnings

 在类SPP下方添加如下代码:

class SPPF(nn.Module):
    # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
    def __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * 4, c2, 1, 1)
        self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
 
    def forward(self, x):
        x = self.cv1(x)
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning
            y1 = self.m(x)
            y2 = self.m(y1)
            return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

参考博客: 

AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘yolov5-5.0\\models\\comm_诺顿与苏菲的博客-CSDN博客

AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘H:\\yolov5-5.0\\models\\_啥也不是的py人的博客-CSDN博客

3.7 Image Not Found

 (1)确保训练集的路径正确。

深度机器学习:报错AssertionError: Image Not Found D:\PycharmProjects\yolov5-hat\VOCdevkit\images\train\000000_学习中.....臭丫头的博客-CSDN博客

(2)在云服务器上已经跑过的代码放进PyCharm中出现该问题:

解决YOLOv5训练报错之AssertionError: Image Not Found YOLOv5-5.0/VOCdevkit/images/train/0.jpg_Mr_LanGX的博客-CSDN博客

(3) 路径本身不能出现中文名称。

YOLOv5测试时出现AssertionError: Image Not Found-Python-CSDN问答

(4)绝对路径和相对路径的修改 :

yolov5 AssertionError: Image Not Found_ITLCFgoing的博客-CSDN博客

3.8 批量修改文件名

 在CSDN上找了一下,都是中文改成首字母或者拼音,没有改成英文版名称那种,然后找了一些源码也不大会用,可以整理给大家看一下:

python批量修改文件名_用余生去守护的博客-CSDN博客_python批量修改文件名

Python 批量修改文件名_sereasuesue的博客-CSDN博客

计算机名改为名字的拼音,批量转换中文文件名为拼音_慢潜空间站的博客-CSDN博客

python批量修改文件名(将中文改为英文首字母)和xml文件_冰激凌啊的博客-CSDN博客_python批量修改xml文件名

怎么简单快速的将多个中文文件转换成英文的名称_SHkingA的博客-CSDN博客_批量中文文件名转英文

python版-批量中文文件名转英文_MartinHan01的博客-CSDN博客_python 中文转英文

3.9 显存不足:报错CUDA out of memory.

RuntimeError: CUDA out of memory. Tried to allocate 14.00 MiB (GPU 0; 6.00 G)的解决【实测成功】_captain飞虎大队的博客-CSDN博客

在修改batch_size为4以后我害怕有很大影响,所以找了一下这个会造成什么影响看看:

深入剖析深度学习中Batch Size大小对训练过程的影响_flyfor2013的博客-CSDN博客

3.10 Tensorboard查看曲线

这个其实不一定非要使用Tensorboard看,但怎么用在最上面的教程里有很详细的做法。

如果Tensorboard报错的话,

你就是很想用Tensorboard,可以参考如下博客:

关于解决Tensorboard出现No dashboards are active for the current data set.问题_我会像蜗牛一样努力的博客-CSDN博客

但如果你对曲线图的要求没有那么高,可以直接打开你的yolov5文件夹yolov5-5.0\runs\train,随便点开一个exp就可以看到这次训练的具体曲线参数了,还可以看到一些图片(可以用来做中期答辩。)

4 优化部分(官方建议)

先po一下参考链接:Tips for Best Training Results - YOLOv5 Documentation

在优化前最好先不要动任何参数,使用默认设置进行训练,这有助于建立性能基准并找到需要改进的地方。

训练完成后可以在yolov5-5.0/runs/train/exp中找到结果图(训练损失、val损失、P、R、mAP)、PR曲线、混淆矩阵、训练马赛克,测试结果和数据集统计图像。

4.1 数据集

根据官网的建议,针对数据集我们首先要检查如下方面的内容:

(1)数据集足够大且标记良好。大多数情况下,只要满足这一条就可以在不更改模型或训练设置的情况下获得良好的结果。

(2)每类图像≥1500张(毕设的数据集不需要这么多,这个是官网给的数据,本科生毕业设计具体可以询问导师大约需要多少张。)

(3)每类总数≥10000个实例(标记对象)

(4)图像具有多样性,代表部署的环境。针对现实世界的用例,推荐来自一天中不同时间、不同季节、不同天气、不同照明、不同角度、不同来源(在线抓取、本地收集、不同相机)等图像。

(5)标签准确性。标签必须紧紧包围每个对象,对象与边界框之间不应存在空间,任何对象都不应该缺少标签。

(6)背景图像。背景图像是没有添加到数据集以减少误报(FP)的对象的图像。官网建议使用大约0-10%的背景图片来帮助减少FP(COCO中含有1000张背景图片供参考,占总数的1%)

本科生毕业设计重点关注(1)、(4)、(5)即可,(2)可以适当扩充,最少500张左右,少了数据会不太好。(6)的背景图像我没有试过,如果是单纯学习可以试一试。

4.2 预训练权重类型选择

这里我使用的是yolov5s,我的电脑是办公本,用m就跑不起来了。

(1)移动部署:yolov5s、yolov5m(普通的就用s就好,毕设什么的,够用了)

(2)云部署:yolov5l、yolov5x

(3)大模型:yolov5x、yolov5x6

具体的模型选择可以在GitHub中yolov5的界面下拉看到表格,不过一般来说yolov5s就可以了。

4.3 训练设置

在修改任何内容前,首先使用默认设置进行训练以建立性能基线。train.py设置的完整列表可以在train.py argparser中找到。

 (1)epoch:默认设置为300轮。

如果过早拟合(例如mPA没什么提升了,比如跑了几十轮都差别不大)可以减少轮数,例如100轮;如果在300轮后还没有出现过拟合,可以增加轮数到600、1200等。

(2)图片大小:默认设置为--img 640。

如果数据集中有很多小对象,那么自定义数据集将受益于本机或更高分辨率的训练,例如-img 1280。

(3)批量大小:默认设置为16。

尽可能用硬件允许的最大容量,小批量会产生较差的批量标准统计数据。

(4)超参数:hyp.scratch.yaml。

这个不建议新手修改,如果要修改,修改前应该先用默认超参数进行训练。

一般来说,增加增强超参数将减少和延迟过度拟合,从而允许更长训练时间和更高的mPA。

4.4 Further Reading

有更多学习需求的可以看看这个:A Recipe for Training Neural Networks

5 优化部分(其他)

5.1 数据集

5.1.1 基础调整

我第一次代码跑完100轮以后发现mPA非常低,所以我就做了一些基础的调整。

建议先检查代码,在代码参数设置无误的情况下建议先把数据集的标签和对应的图片数目列一个表格。

(1)针对图片数目过少的标签可以进行扩充图片、删减该标签的数目处理。

(仅仅针对本科生毕设可以适当删除标签,因为我一共13个标签,只有500多张数据集,有些瑕疵的张数太少了,而且13个标签对应需要的数据集我的电脑是带不起来的,本科生毕设也不需要过大的数据集和过多的标签,所以我适当的删除了部分标签)

(2)针对图片数目适量但mPA精度较低的标签,可以先检查数据集的标注(对数据集进行更详细的标注)

5.1.2 图像预处理

如果上面的基础调整下来以后mPA精度还是一般般,可以尝试学习图像增强。

(最好能在表格里记录一下每次调整后的标签、图片数量、对应个体mPA、整体mPA)

目前我正在这一优化阶段,还没完全实施,所以过两天等我尝试过了再写。

5.1.2.1 数据增强

YOLOv4及YOLOv5都对输入端进行了改进,添加了mosaic数据增强,在超参数里面也可以进行更改。

mosaic:0.0的时候就会关闭mosaic数据增强。

具体参考:

YOLOv4:【YOLOv4探讨 之三】mosaic数据增强_北溟客的博客-CSDN博客_mosaic数据增强 

YOLOv5:目标检测 YOLOv5 - 数据增强_TheOldManAndTheSea的博客-CSDN博客_yolov5数据增强 

这篇还另外介绍了其他几个数据增强的超参数,不止mosaic,在hyp.scratch.yaml中的12个数据增强超参数。

#数据增强参数
#颜色
hsv_h: 0.015  # image HSV-Hue augmentation (fraction) 饱和度
hsv_s: 0.7  # image HSV-Saturation augmentation (fraction) 色调
hsv_v: 0.4  # image HSV-Value augmentation (fraction) 亮度 明度

#编辑裁剪
degrees: 0.0  # image rotation (+/- deg) 旋转度数
translate: 0.1  # image translation (+/- fraction) 图像平移
scale: 0.5  # image scale (+/- gain) 缩放比例
shear: 0.0  # image shear (+/- deg) 剪切
perspective: 0.0  # image perspective (+/- fraction), range 0-0.001 透视

#单张翻转及多张mosaic拼接
flipud: 0.0  # image flip up-down (probability) 图片上下翻转
fliplr: 0.5  # image flip left-right (probability) 图片左右翻转
mosaic: 1.0  # image mosaic (probability) mosaic数据增强:将四张图像拼成一张图像

#混合(使用前提是开了mosaic)
mixup: 0.0  # image mixup (probability) 几张图片调整透明度以后混合重叠在一起

 还没看,没实验的教程:Deep Learning的案例-YoloV5中的数据增强_卡列宁在睡觉的博客-CSDN博客

目标检测 YOLOv5 - 数据增强_TheOldManAndTheSea的博客-CSDN博客_yolov5 数据增强

YOLOv5 数据增强data augmentation (七)_@BangBang的博客-CSDN博客_yolov5数据增强方法

5.2 算法优化

此处我只详细列举我认为自己可以用到的,其他的方法我会放在参考链接里大家可以自己详细去阅读和尝试。

5.2.1 小目标检测:增加小目标检测层

YOLOv5的采样倍数较大,但小目标样本的尺寸较小,较深的特征图很难学习到小目标的特征信息,增加小目标检测层将较浅特征图和较深特征图拼接后进行检测。

缺点:计算量增加,推理检测速度降低。

优点:对于检测小目标的精准度有所改善。

具体做法:

在模型文件yaml中增加小目标检测层。

(1)修改Anchor:增加一组较小的anchor。

# anchors 

anchors:

- [5,6, 8,14, 15,11] #4

- [10,13, 16,30, 33,23] # P3/8

- [30,61, 62,45, 59,119] # P4/16

- [116,90, 156,198, 373,326] # P5/32

(2)修改Head部分:

在第17层后,继续对特征图进行上采样等处理,使得特征图继续扩大,同时在第20层时,将获取到的大小为160X160的特征图与骨干网络中第2层特征图进行concat融合,以此获取更大的特征图进行小目标检测。

# YOLOv5 head

[-1, 1, Conv, [256, 1, 1]], #18 80*80

[-1, 1, nn.Upsample, [None, 2, 'nearest']], #19 160*160

[[-1, 2], 1, Concat, [1]], #20 cat backbone p2 160*160

[-1, 3, BottleneckCSP, [256, False]], #21 160*160

# 篇幅限制中间省略一些代码,原代码关注公众后后台回复:YOLO小目标

[[21, 24, 27, 30], 1, Detect, [nc, anchors]], # Detect(p2, P3, P4, P5)

]

其他方法参考:YOLOV5 的小目标检测网络结构优化方法汇总(附代码)_3D视觉工坊的博客-CSDN博客 

5.2.2 提升置信度

5.2.2.1 hyp参数调优

注:我看了一些其他博主对hyp参数调整的博客,评论区一些人反应调整后并不一定有优化,但代码运行速度会变慢,所以这部分谨慎调整。置信度识别能到0.6左右就是不错的了,如果真的太低例如0.2、0.3这样的建议可以尝试调整,稳妥一点的办法就是对数据集调整。

①train.py会默认使用源码自带的模型超参数(HyperParameter),这些参数针对GitHub上的源码在训练时的数据集或许最优,但不一定在自定义的数据集上是最有效的。

②GitHub上的预训练模型在识别率等方面有一定缺陷,不能直接应用在实际工程中,在大多数应用中都需要重新调整,并给予相应数据集训练适用于自己项目的模型。 

 ③参数调优过程一般需要反复多次进行如下操作:微调<->训练<->测试,最终得到符合需求/较优的HyperPara应用在该项目中。

具体做法:

(1)路径:yolov5-5.0/data/hyp.finetune.yaml

(2)我参考的这位博主主要调整了lr0(学习率)为0.0030,同时修改了epoch、batch_size。(这里的话我增大batch_size代码是跑不起来的,所以根据自己电脑量力而行进行微调)

(3)所有超参数详解:

# 梯度下降法参数
lr0: 0.01  # initial learning rate (SGD=1E-2, Adam=1E-3)      # 初始的学习率
lrf: 0.1  # final OneCycleLR learning rate (lr0 * lrf)        # 余弦函数动态降低学习率
momentum: 0.937  # SGD momentum/Adam beta1                    # 梯度动量
weight_decay: 0.0005  # optimizer weight decay 5e-4           # 权重衰减度,降低权重的波动
warmup_epochs: 3.0  # warmup epochs (fractions ok)  # 预热训练的轮数,采用小的学习率
warmup_momentum: 0.8  # warmup initial momentum     # 预热训练时的梯度动量
warmup_bias_lr: 0.1  # warmup initial bias lr       # 预热训练时的偏置b的学习率
 
# Loss 参数
box: 0.05  # box loss gain                    # 定位框损失函数的增益比
cls: 0.5  # cls loss gain                     # 分类损失的增益比
cls_pw: 1.0  # cls BCELoss positive_weight    # 正样本的权重
obj: 1.0  # obj loss gain (scale with pixels) # 目标距离的权重
obj_pw: 1.0  # obj BCELoss positive_weight    # 负样本的权重
 
# 输出后处理超参数
iou_t: 0.20  # IoU training threshold
anchor_t: 4.0  # anchor-multiple threshold
# anchors: 3  # anchors per output layer (0 to ignore)
fl_gamma: 0.0  # focal loss gamma (efficientDet default gamma=1.5)
 
# 图像增强的参数
hsv_h: 0.015  # image HSV-Hue augmentation (fraction)
hsv_s: 0.7  # image HSV-Saturation augmentation (fraction)
hsv_v: 0.4  # image HSV-Value augmentation (fraction)
degrees: 0.0  # image rotation (+/- deg)
translate: 0.1  # image translation (+/- fraction)
scale: 0.5  # image scale (+/- gain)
shear: 0.0  # image shear (+/- deg)
perspective: 0.0  # image perspective (+/- fraction), range 0-0.001
flipud: 0.0  # image flip up-down (probability)
fliplr: 0.5  # image flip left-right (probability)
mosaic: 1.0  # image mosaic (probability)
mixup: 0.0  # image mixup (probability)
copy_paste: 0.0  # segment copy-paste (probability)

参考: Yolov5自定义图片训练测试及模型调优(详细过程)_HowieXue的博客-CSDN博客_yolov5训练需要多少图片

[YOLO专题-22]:YOLO V5 - ultralytics代码解析-超参数详解_文火冰糖的硅基工坊的博客-CSDN博客_yolov5超参数

5.2.2.2 提高样本数据量然后重新训练

(1)参考官方对数据集的要求,见3.1。

(2)图像增强、图像变换等预处理技术,见4.1.2。

增加模型鲁棒性,防止过拟合。

注:优化重点在数据优化,对模型进行优化的提升相比数据来说较小,两者都可以试一试,但重点还是在数据上,参数要是微调<>测试这样修改。

6 总结

6.1 论文查重

1.本科知网(和学校结果一样):www.querycee.com
2.硕士知网(和学校结果一样):cnki.querycee.com
3.机器论文降重-Passmore:www.passmore.cn(每天免费1篇)

4.Paperccb:免费论文查重-PaperCcb查查呗论文检测_学术不端检测查重入口(首单免费,后续19.8RMB/篇)

5.Checkvip:查重提交_PaperWord论文查重

6.Paper系列汇总:有哪些免费论文查重的网站? - 知乎(需要做小任务获取字数)

可以参考这个视频看一看查重流程: 

【知网查重教程】本科硕士论文查重怎么查?带正版知网查重入口!速进!_哔哩哔哩_bilibili

本科高校内部知网168RMB,硕士是388RMB。

淘宝上购买的账号(之前用来下论文文献的卡),本科一篇3w字是40RMB/篇,硕士一篇30w字是80RMB/篇。

CheckVIP Paperccb Passmore 知网
初稿 初稿版免费 首单免费 每天免费一篇 ————
修改稿

专业版:3RMB/万字

高校版:1.5RMB/千字

19.8RMB/篇 每天免费一篇 ————
定稿 —————————— —————— ——————

本科:168RMB

硕士:

388RMB

到后期和定稿的时候就要用知网官方的比较好一些,大概需要1-3次,避免学校卡重复率不能按时毕业。

你可能感兴趣的:(YOLO网络,毕业设计进程日记,计算机视觉,深度学习,人工智能,pytorch,神经网络)