yolov5--hsv增强,hyp超参数,

一.hyp超参数:

文件位置:

data/hyps/hyp.scratch-low.yaml

具体如下:

lr0: 0.01  # initial learning rate (SGD=1E-2, Adam=1E-3)
lrf: 0.01  # 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
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.16  # image HSV-Saturation augmentation (fraction)
#饱和度(Saturation)增强的幅度,表示在增强过程中饱和度可以变化的范围,这里设置为0到0.7,
#意味着饱和度可以有相当大的变化。较高的饱和度值会使图像的颜色更加鲜艳。
hsv_v: 0.16  # 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)

以下是一些关键超参数的解释:

  • lr0: 初始学习率,用于SGD优化器。
  • lrf: 最终OneCycleLR学习率,乘以初始学习率lr0
  • momentum: SGD动量/Adam beta1参数。
  • weight_decay: 优化器权重衰减。
  • warmup_epochs: 预热周期数,用于逐渐增加学习率和动量。
  • warmup_momentum 和 warmup_bias_lr: 分别定义了预热期间的初始动量和偏置学习率。
  • boxclsobj: 分别是边界框、类别和目标损失的增益。
  • iou_t: IoU训练阈值,用于确定预测框和真实框的匹配程度。
  • anchor_t: 锚点多重阈值。
  • fl_gamma: 焦点损失的gamma参数。

数据增强部分的参数包括:

  • hsv_hhsv_shsv_v: 分别是HSV颜色空间中色调、饱和度和亮度的增强系数

  (hsv_hhsv_shsv_v分别代表的是增强系数,而不是概率

    HSV代表色调(Hue)、饱和度(Saturation)和亮度(Value)

  • degrees: 图像旋转的范围。
  • translate: 图像平移的范围
  • scale: 图像尺度的变化范围。
  • shear: 图像剪切的范围
  • perspective: 图像透视变换的范围。
  • flipud 和 fliplr: 分别是图像上下翻转和左右翻转的概率
  • mosaic: 马赛克数据增强的概率。
  • mixup: 图像混合的概率。
  • copy_paste: 复制粘贴数据增强的概率。

如果你想要取消HSV增强,你可以将

hsv_h, hsv_s, hsv_v的值设置为0。

例如:

hsv_h: 0.0 # 取消色调增强

hsv_s: 0.0 # 取消饱和度增强

hsv_v: 0.0 # 取消亮度增强

这样,在训练过程中,图像的HSV变换将不会发生。

二.dataloader调用augment_hsv:

使用范例(dataloader中):

dataloader的文件位置:utils/dataloaders.py

augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v'])

具体如下,包含注释:

def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5):
    # HSV color-space augmentation
    if hgain or sgain or vgain:
        # random gains[a,b,c];a b c都在0.5到1.5
        r = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1
        # 分离hsv通道
        hue, sat, val = cv2.split(cv2.cvtColor(img, cv2.COLOR_BGR2HSV))
        dtype = img.dtype  # uint8
        x = np.arange(0, 256, dtype=r.dtype)
        lut_hue = ((x * r[0]) % 180).astype(dtype)
        
        lut_sat = np.clip(x * r[1], 0, 255).astype(dtype)
        lut_val = np.clip(x * r[2], 0, 255).astype(dtype)
        # 用于创建一个查找表(Look-Up Table,简称 LUT),这个表可以用于快速地将一组输入值转换为另一组值。
        # 这在图像处理中非常有用,比如在调整图像的亮度或对比度时,可以将像素值映射到新的值。
        im_hsv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val)))
        cv2.cvtColor(im_hsv, cv2.COLOR_HSV2BGR, dst=img)  # no return needed

(上面函数在utils/augmentations.py中)

解释说明(其实是我本人不会,现学的 :<):

1.np.random.uniform(-1, 1, 3):

  • 第一个参数 -1 是随机数的下限。
  • 第二个参数 1 是随机数的上限。
  • 第三个参数 3 表示生成随机数的数量,这里是生成3个随机数
  • 生成如:[ 0.123456 -0.654321  0.987654]

2.x = np.arange(0, 256, dtype=r.dtype)

    是0-255的列表,255个元素。

3.lut_hue,lut_sat,lut_val:

    lut:look up table(查找表)

    lut_hue:有%180,则范围0-180,个数255的列表;

    

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值