evolve.csv is plotted as evolve.png by utils.plots.plot_evolve() after evolution finishes with one subplot per hyperparameter showing fitness (y axis) vs hyperparameter values (x axis). Yellow indicates higher concentrations. Vertical distributions indicate that a parameter has been disabled and does not mutate. This is user selectable in the meta dictionary in train.py, and is useful for fixing parameters and preventing them from evolving.
最近好多项目都用到了yolov5,为了适配项目需求,有时候会对v5的代码部分做一些改动,写这篇文章的目的是为了记录自己改动的部分(本人很健忘),以便下次用的时候翻来看看。
一、数据增强部分增加了垂直旋转的增强
v5里面提供了很多数据增强方式,针对大众的数据集效果还是很适用的,如果觉得增强效果不理想,也可以自己在代码中增加,我这里就增加了一个垂直的旋转90°的,为了让数据集中包含了垂直的目标数据,比如之前做的卡片四个角检测,如果目标全是水平的卡片,那么检测时卡片位置变为垂直的时候,效果可能就会有折扣,但
数据集中往往会出现这些对比度和亮度不统一的场景,例如:有些场景采光好,效果明显;有些整体场景昏暗,整体亮度低,对比度低;还有一些场景例如黑暗中的灯光,周围环境暗灯光亮,整体亮度低局部亮度高,对比度高。
采用的对比度与亮度图像增强算法来自于gamma变换,
有点:图像调整变得非常自然,不易失真。
代码如下:
import cv2
import numpy as np
def gamma_trans(img, gamma):
首先归一化到0-1范围,然后gamma作为指数值求出
本文所描述的数据增强包含一下7个超参数,一共使用两个函数实现
以参数存储在hyp.scratch.yaml文件中
# 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)
Yolov5的超参数调整是一个重要的步骤,它可以影响模型的性能和训练速度。以下是一些常用的超参数需要调整的建议:
1. 学习率(learning rate):学习率决定模型更新参数的速度,过小会导致模型训练缓慢,而过大可能导致模型难以收敛。建议先使用较大的学习率进行快速收敛,然后逐渐降低学习率以提高准确性。
2. 批量大小(batch size):批量大小决定了每次迭代更新模型所用到的样本数量。较大的批量大小可能会加快训练速度,但同时也会增加显存的需求。根据可用的硬件资源,选择一个合适的批量大小。
3. 正则化(regularization):正则化是一种用于防止过拟合的技术。通过添加L1或L2正则化项,可以限制模型的复杂度。调整正则化项的权重可以平衡模型的拟合能力和泛化能力。
4. 数据增强(data augmentation):数据增强是一种常用的技术,可以通过对原始数据进行随机变换来扩充数据集。例如,随机裁剪、旋转、缩放等操作可以增加数据的多样性,有助于提高模型的鲁棒性。
5. 锚框(anchor boxes):锚框是用于检测目标的预定义边界框。调整锚框的数量和大小可以更好地适应不同尺度和长宽比的目标。根据待检测目标的特点,选择合适的锚框设置。
以上是一些常见的超参数调整建议,具体的调整策略还需要根据任务和数据集的特点进行进一步优化。