训练数据不够怎么造?yolo5 最有用的trick 之数据增强详解

YOLOV5超参数设置与数据增强解析 无 阅读详情
AI摘要

本文深入解析YOLOv5中采用的数据增强技术,包括Albumentations库的多种增强方法如Blur、MedianBlur、ToGray、CLAHE,以及自定义的HSV增强和直方图均衡。这些技术旨在增加模型训练数据的多样性,防止过拟合,提升模型在不同场景下的泛化能力。通过代码解析和可视化展示,帮助理解每个增强方法的作用和应用场景。

在深度学习领域,模型参数量往往数以百万计,因此要训练一个鲁棒的模型往往需要大量的数据,与此同时,我们还可以利用各种数据增强的手段来增加模型训练数据的多样性,令模型尽可能适应不同的场景,防止过拟合的发生。

yolo5是Ultralytics公司于2020年开源的目标检测算法https://github.com/ultralytics/yolov5,算法在backbone,bbox asign,loss function,数据增强等方面,集成了当时最有用的trick,使模型在速度与精度上都要优于当时同期的其他模型,这也使得yolo5在工业界、学术界及各路竞赛中成为了研究者优先尝试的检测模型。

yolo5应用的trick繁多,此本文将针对yolo5的数据增强方面进行详细解读。

一、YOLO5的数据增强

 NO.1 

Albumentations增强

yolo5使用了Albumentations开源模块中实现的诸个数据增强方法,包括了Blur、MedianBlur、ToGray、CLAHE、RandomBrightnessContrast、RandomGamma、ImageCompression,这些数据增强方法的解释、训练中使用的概率如下表所示:

数据增强使用概率参数解释
Blur0.01无使用随机尺寸的核来模糊输入图像
MedianBlur0.01无中值滤波
ToGray0.01无将输入的RGB图像转换为灰度图
CLAHE0.01无对输入图像进行限制对比度自适应直方图均衡(Contrast Limited Adaptive histgram equalization/CLAHE[1])
RandomBrightnessContrast0无随机地改变输入图像的亮度与对比度
RandomGamma0无随机灰度系数
ImageCompression0quality_lower=75对输入图像进行压缩(可以选择的压缩格式为JPEG与WEBP)

(使用概率是指在使用了Albumentations增强的情况下;上面的各种增强手段的概率值为yolo5作者网格搜索得出,可能随着yolo5项目的更新而发生变化。)

● 代码详解

在yolo5中,Albumentations增强的核心代码可以简化为:

(简化版旨在讲解逻辑,原始版本请访问原代码[1])

import albumentations as A

# 1. 将所有的数据增强对象装填至列表T中
T = [
    A.Blur(p=0.01),               # Blur数据增强,使用概率为0.01               
    A.MedianBlur(p=0.01),         # MedianBlur数据增强,使用概率为0.01
    A.ToGray(p=0.01),             # 转换为灰度图,使用概率为0.01
    A.CLAHE(p=0.01),              # CLAHE直方图均衡,使用概率为0.01
    A.RandomBrightnessContrast(p=0.0),   # 随机改变亮度与对比度,不使用
    A.RandomGamma(p=0.0),         # 随机灰度系数,不使用
    A.ImageCompression(quality_lower=75, p=0.0)]  # 对图像进行压缩,最低质量为75,不使用
# 2. 调用Compose类,将列表T中的所有增强对象合成一个对象
transform = A.Compose(T, bbox_params=A.BboxParams(format='yolo', label_fields=['class_labels']))  # 将列表`T`转换为一个组合数据增强对象`transform`

def augment(im, labels, p=1.0):
    if random.random() < p:
    # 3. 调用transform增强,使用的概率为 p
        new = transform(image=im, bboxes=labels[:, 1:], class_labels=labels[:, 0])   # 调用`transform`对图像进行变换,实现数据增强
        im, labels = new['image'], np.array([[c, *b] for c, b in zip(new['class_labels'], new['bboxes'])])
    return im, labels

(左右滑动查看)

上述代码的功能为:

1. 创建数据增强对象列表T,将上述提及的数据增强方法装填至列表T当中;

2. 调用A.Compose方法,将列表T转换为一个组合数据增强对象transform;

3. 在augment函数中,调用transform对图像进行变换,实现数据增强。

● 可视化

本节将对上述提及的数据增强方法进行可视化,并提供demo代码:

import albumentations as A
from PIL import Image
import math
import numpy as np
import matplotlib.pyplot as plt

T = [
    A.Blur(p=1),
    A.MedianBlur(p=1),
    A.ToGray(p=1),
    A.CLAHE(p=1),
    A.RandomBrightnessContrast(p=1),
    A.RandomGamma(p=1),
    A.ImageCompression(quality_lower=75, p=1)]
img = Image.open('lena.jpg')

plt.figure(figsize=(64, 32))
plt.subplot(2, math.ceil(len(T) / 2), 1)
plt.title("original image", fontsize=50)
plt.imshow(img)
for i in range(len(T)):
    title = T[i].__class__.__name__
    plt.subplot(2, math.ceil(len(T) / 2), i + 2)
    plt.title(title, fontsize=50)
    new_img = Image.fromarray(T[i](image=np.array(img))['image'])
    plt.imshow(new_img)
plt.show()

(左右滑动查看)

执行结果:

● 小节

在yolo5中,实际上只使用了Albumentations中的Blur,MedianBlur,CLAHE,ToGray这四种数据增强,并且使用的概率都是0.01。这些数据增强有各自的应用场景:

1. Blur与MedianBlur都是对图像进行模糊处理,但二者有细微的差别,Blur使用了均值模糊,而MedianBlur使用了中值模糊,后者相对于前者更不易受到局部极值点的影响,对异常值的敏感性更低。二者都可以模拟图像模糊的场景,有利于提升模型对于模糊图像的识别效果;

2. ToGray增强的功能为将图像从RGB转换为灰度图,这种数据增强的方法旨在令模型能够不依赖颜色信息就对图像做出预测,使用该数据增强可以促进模型从图像的内容的形状信息而非色彩信息提取信息,可以提升模型的对于色度等信息的泛化能力;

3. CLAHE的作用为对图像进行CLAHE直方图均衡,该操作可以令图像的灰度图的分布更加均衡,令对比度较低的图像得到增强,细节信息更加明显。使用该数据增强方法的作用即为对图像本身进行增强,令其内容更加明显。如果数据集中存在图像灰度普遍偏大或普遍偏小的情况,可以考虑使用该数据增强对图像进行预处理。在这里yolo5使用CLAHE的原因仅仅是为了令数据更加多变,提升模型的泛化能力。

4. 上述的几种数据增强的手段的功能互相垂直,可以叠加使用,且顺序也可以任意调整。

 NO.2 

augment hsv

yolo5实现了自己的HSV增强,首先将原图从RGB空间转换到HSV空间,然后再分别再H(hue,色相),S(saturation,饱和度),V(value,亮度)三个通道分别增强或减弱随机的值,从而简便地模拟出不同场景、光照的情况,提升模型的泛化能力。

yolo5的实现方式很简单,代码为:

def augment_hsv(im, hgain=0.5, sgain=0.5, vgain=0.5):
    # HSV color-space augmentation
    if hgain or sgain or vgain:
        r = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1  # random gains
        hue, sat, val = cv2.split(cv2.cvtColor(im, cv2.COLOR_BGR2HSV))
        dtype = im.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)

        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=im)  # no return needed

(左右滑动查看)

下面本文将对一些主要步骤进行详解。

● 代码详解

1.函数参数解释:

- im:np.array格式的图像,通道为BGR

- hgain:H通道的增益,以0.5举例,原图的H通道的值的变换范围会是原来的50%~150%

- sgain:S通道的增益

- vgain:V通道的增益

2. 函数解释:

a. 首先函数通过下面的代码随机地对HSV三个通道的增益值进行采样,H通道的采样的范围为 [1-\rm{hgain},1+\rm{hgain}]。 S,V通道同理。

np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1  # random gains

(左右滑动查看)

b. 通过下面的代码将原图从BGR格式转换为HSV空间的图像。并将图像的HSV通道分别赋值给hue,sat,val三个变量。

sat, val = cv2.split(cv2.cvtColor(im, cv2.COLOR_BGR2HSV))

(左右滑动查看)

c. 根据采样的增益值对HSV 3个通道增加/减小相应的值。yolo5的实现方式是创建一个查找表,将通过查找表将原值映射为新值,创建3个通道的查找表的代码如下:

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)

(左右滑动查看)

d. 上述代码分别将创建了H,S,V三个通道将原值映射至增加了增量后的值的查找表,映射关系分别为:

H: \mathrm{hue}\rightarrow \mathrm{hue}\times(1+\mathrm{hgain})\%180

S:\mathrm{saturation}\rightarrow \mathrm{min}(\mathrm{saturation}\times(1+\mathrm{sgain}),255)

V:\mathrm{value}\rightarrow \mathrm{min}(\mathrm{value}\times(1+\mathrm{vgain}),255)

e. 利用下面的代码,将原值映射为新值,并将hue,sat,val三个通道合并为HSV空间的图像:

sv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val)))

(左右滑动查看)

f. 将HSV空间的图像转回BGR格式的图像:

cvtColor(im_hsv, cv2.COLOR_HSV2BGR, dst=im)  # no return needed

(左右滑动查看)

● 可视化

下面将通过代码对HSV增强的结果进行可视化:

import numpy as np
import matplotlib.pyplot as plt
import cv2


def augment_hsv(im, hgain=0.5, sgain=0.5, vgain=0.5):

    r = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1  # random gains
    hue, sat, val = cv2.split(cv2.cvtColor(im, cv2.COLOR_RGB2HSV))
    dtype = im.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)

    im_hsv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val)))
    result = cv2.cvtColor(im_hsv, cv2.COLOR_HSV2RGB)  # no return needed
    return result


img = cv2.imread("./lena.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.figure(figsize=(100, 32))
plt.subplot(1, 4, 1)
plt.title("original image", fontsize=80)
plt.imshow(img)

img_h_aug = augment_hsv(img, 0.5, 0, 0)
plt.subplot(1, 4, 2)
plt.title("hue augment", fontsize=80)
plt.imshow(img_h_aug)

img_s_aug = augment_hsv(img, 0, 0.5, 0)
plt.subplot(1, 4, 3)
plt.title("saturation augment", fontsize=80)
plt.imshow(img_s_aug)

img_v_aug = augment_hsv(img, 0, 0, 0.5)
plt.subplot(1, 4, 4)
plt.title("value augment", fontsize=80)
plt.imshow(img_v_aug)

plt.show()

(左右滑动查看)

执行结果:

● 小节

Yolo 5使用hsv增强的目的是令模型在训练过程中看到的数据更加的多样,而通过HSV增强获得的”多样性“也可以从3个角度来说:

1. 色调(Hue)多样:通过随机地调整色调可以模拟不同颜色风格的输入图像,比如不同滤镜,不同颜色光照等场景下的图像,从而提升模型在这些场景下的泛化能力;

2. 饱和度(Saturation)多样:通过随机调整饱和度可以提升模型对不同鲜艳程度的目标的识别的泛化能力;

3. 亮度(Value)多样:通过随机调整亮度可以提升模型应对不同光亮场景下的输入图像。

HSV增强在目标检测模型的训练中是非常常用的方法,它在不破坏图像中关键信息的前提下提高了数据集的丰富程度,且计算成本很低,是很实用的数据增强方法。

 NO.3 

hist equalize

yolo5还使用了直方图均衡对原图进行数据增强,对图像的亮度进行了直方图均衡操作,可选择的均衡方法有原始的直方图均衡,与CLAHE直方图均衡。

通过该数据增强,图像中的明暗分布会更加均衡,具体的代码解析如下:

def hist_equalize(im, clahe=True, bgr=False):
    # Equalize histogram on BGR image 'im' with im.shape(n,m,3) and range 0-255
    yuv = cv2.cvtColor(im, cv2.COLOR_BGR2YUV if bgr else cv2.COLOR_RGB2YUV)
    if clahe:
        c = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
        yuv[:, :, 0] = c.apply(yuv[:, :, 0])
    else:
        yuv[:, :, 0] = cv2.equalizeHist(yuv[:, :, 0])  # equalize Y channel histogram
    return cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR if bgr else cv2.COLOR_YUV2RGB)  # convert YUV image to RGB

(左右滑动查看)

● 参数介绍

- im:np.array格式的图像,通道为BGR或RGB

- clahe:是否使用CLAHE直方图均衡

- bgr:输入图像im是BGR还是RGB格式,如果为BGR格式则bgr=True

● 函数介绍

1. 首先通过下面的代码将原图从RGB/BGR格式转换到YUV空间

yuv = cv2.cvtColor(im, cv2.COLOR_BGR2YUV if bgr else cv2.COLOR_RGB2YUV)

2. 如果clahe为True,则使用下面的代码将图像的Y通道进行CLAHE直方图均衡

cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
yuv[:, :, 0] = c.apply(yuv[:, :, 0])

3. 如果clahe为False,则使用常规的直方图均衡

yuv[:, :, 0] = cv2.equalizeHist(yuv[:, :, 0])  # equalize Y channel histogram

4. 最终将直方图均衡后的图像转回RGB/BGR通道并返回

return cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR if bgr else cv2.COLOR_YUV2RGB)  # convert YUV image to RGB
(左右滑动查看)

● 可视化

下面将对hist equalize进行可视化展示其效果,代码为:

import matplotlib.pyplot as plt
import cv2


def hist_equalize(im, clahe=True, bgr=False):
    # Equalize histogram on BGR image 'im' with im.shape(n,m,3) and range 0-255
    yuv = cv2.cvtColor(im, cv2.COLOR_BGR2YUV if bgr else cv2.COLOR_RGB2YUV)
    if clahe:
        c = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
        yuv[:, :, 0] = c.apply(yuv[:, :, 0])
    else:
        yuv[:, :, 0] = cv2.equalizeHist(yuv[:, :, 0])  # equalize Y channel histogram
    return cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR if bgr else cv2.COLOR_YUV2RGB)  # convert YUV image to RGB


img = cv2.imread("./lena.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.figure(figsize=(70, 32))
plt.subplot(1, 3, 1)
plt.title("original image", fontsize=80)
plt.imshow(img)

img_aug1 = hist_equalize(img, clahe=False)
plt.subplot(1, 3, 2)
plt.title("Hist Equalize", fontsize=80)
plt.imshow(img_aug1)

img_s_aug = hist_equalize(img, clahe=True)
plt.subplot(1, 3, 3)
plt.title("CLAHE Hist Equalize", fontsize=80)
plt.imshow(img_s_aug)

plt.show()

(左右滑动查看)

可视化结果为:

● 小节

直方图均衡操作的目的是令图像的明暗分布更加合理,从而提升那些过明或过暗的图像的对比度,解决图像光照不均匀的问题,所以当我们的数据集存在光亮过明或过暗的情况下,可以尝试使用直方图均衡操作,在输入模型之前进行预处理。

但在yolo 5中,模型训练过程中仅有1%的概率会进行直方图均衡,所以这里的目的仅仅只是提升数据集的丰富度,提高模型的泛化能力。

二、总结

本文主要简单地介绍了yolo5的3个数据增强方法,并对他们进行了代码的讲解与可视化的展示,希望可以帮助读者对这些数据增强方法有更加直观的认识。yolo5的其他数据增强方法,比如cutout,mixup,mosaic等都会在后续的文章中讲解。

参考文献

[1]https://github.com/ultralytics/yolov5/blob/master/utils/augmentations.py

[2]Reza A M. Realization of the contrast limited adaptive histogram equalization (CLAHE) for real-time image enhancement[J]. Journal of VLSI signal processing systems for signal, image and video technology, 2004, 38(1): 35-44.

作者丨Hanx

在AI路上不断摸爬滚打的调包侠

以上就是本次分享,获取海量数据集资源,请访问OpenDataLab官网;获取更多开源工具及项目,请访问OpenDataLab Github空间。另外还有哪些想看的内容,快来告诉小助手吧。更多数据集上架动态、更全面的数据集内容解读、最牛大佬在线答疑、最活跃的同行圈子……欢迎添加微信opendatalab_yunying加入OpenDataLab官方交流群。

YOLO目标检测数据集格式解析与转换实战:VOC、COCO转YOLO 在计算机视觉领域,目标检测是识别图像中物体位置与类别的核心技术。其实现依赖于高质量的数据集,而数据集的格式标准化是确保模型训练有效性的基础。常见的通用数据集格式如PASCAL VOC和COCO,因其结构严谨、标注丰富,成为众多公开数据集和标注工具的首选。然而,以效率为导向的YOLO系列算法采用了高度精简的专用格式,其使用归一化坐标存储边界框信息,以提升训练速度和对不同分辨率输入的鲁棒性。这种格式差异在实际工程中常成为入门者的首要障碍。理解VOC的XML结构、COCO的JSON组织方式与YOLO的TXT格式之 阅读详情

相关推荐

YOLO数据集实现数据增强的方法(裁剪、平移 、旋转、改变亮度、加噪声等)

数据集样本太少怎么办?数据集优质图像不够怎么办?如何做到更好的数据预处理?一文带你学会数据增强,还可实现带标签的扩充。

路人贾的博客 4万+

YOLOV5数据增强有这些!---也可自己新增数据增强方法(裁剪、平移 、旋转、改变亮度、加噪声)

YOLOv5数据增强

优快云_DU666666的博客 1万+

YOLOv5的Tricks | 【Trick12】YOLOv5使用的数据增强方法汇总

在专栏前面的内容一直介绍的是yolov5训练时候使用的一些技巧,这里用这篇博客最后归纳一下yolov5在数据增强上所使用的技巧。 在yolov3-spp专栏的时候,我介绍过yolov3-spp大致所使用的一些数据增强的方法: 数据增强:Mosaic 数据增强:随机旋转、平移、缩放、错切、HSV 在之前详细的介绍过代码,而在yolov5这里,其实代码是类似的,甚至函数的名字都没有变化,看过源码的朋友就可能知道了,改变的地方其实不是很多,所以这里就不再详细介绍代码的细节了,只是总结一下使用的数据增强。...

Clichong 3万+

YOLOv5数据增强方法

YOLOv5的数据增强方法包括以下几种: 随机剪裁:随机从输入图像中剪裁出一块区域并将其作为新的输入。 随机翻转:随机将输入图像左右或上下翻转。 随机颜色变化:随机调整输入图像的对比度、亮度和饱和度。 随机加噪:在输入图像上随机添加噪声。 随机模糊:使用高斯模糊或中值滤波器对输入图像进行随机模糊。 通过这些方法,可以在训练期间扩充数据集,从而使模型更加稳健。 ...

weixin_35756373的博客 4685

YOLOv5的Tricks | 【Trick3】Test Time Augmentation(TTA)

如有错误,恳请指出。一句话简单的介绍就是测试过程中也使用数据增强,官方教程介绍:Test-Time Augmentation (TTA) Tutorial在训练过程中数据增强是非常常用的一种手段,目的是为了提高模型的泛化能力,以免出现大小不一样,图像选择一下就分辨不出来的尴尬。那么TTA就是想在推理阶段也进行数据增强。不过不会太复杂,因为会增加额外的计算量,在打比赛的时候可能会用到,因为打比赛不在意你的推理时长是多久,所以可以尽情瞎造;但是在实际部署的情况下,因为推理速度减慢很可能会达不到实时监测的效果,所

Clichong 4358

电力设备漏油检测数据集实战:VOC转YOLO与训练避坑指南

在深度学习目标检测任务中,数据质量与格式兼容性往往决定模型上限。对于电力巡检等工业场景,漏油检测面临目标边界模糊、小目标占比高、现场反光干扰等挑战,一套规范的VOC格式数据集如何高效转换为YOLO训练所需格式,并规避漏标、域偏差、增强过度等问题,是提升模型实用性的关键。本文从数据体检、标注格式原理、类别与尺度分析入手,结合338张电力设备漏油图像的实战经验,给出VOC转YOLO的完整流程与避坑清单,并探讨如何通过合理的划分、验证与推理策略,让有限的数据支撑起稳定可靠的漏油检测模型,适用于工业视觉算法工程师与

weixin_30595035的博客 368

yolo目标检测 技巧 trick 提升模型性能

目标检测模型 技巧 提升效果

weixin_37763484的博客 1069

YOLO车辆检测数据集实战:从解压清洗到训练部署全流程

在目标检测工程中,数据集的质量往往决定模型性能的上限。YOLO系列采用归一化坐标的纯文本标注格式,每行对应一个目标框,理解这一原理是正确使用数据集的前提。车辆检测任务通常面临类别不平衡、小目标漏检、标签错标等挑战,通过统计标签分布、检查框质量、引入负样本等数据清洗手段,能显著提升mAP与泛化能力。合理划分训练集与验证集、选择恰当的超参数、利用数据增强策略,都是训练稳定模型的关键环节。当模型落地到车牌识别、车流统计等真实业务时,还需将归一化坐标映射回原图尺寸,并结合跟踪算法实现连续计数。本文以一份YOLO车辆

weixin_34111790的博客 341

Yolo v8数据马赛克数据增强代码详解

x1a, y1a, x2a, y2a = max(xc - w, 0), max(yc - h, 0), xc, yc # xmin, ymin, xmax, ymax (large image),确定画布区域。9.将标签中的(x,y,w,h)坐标转换为,(w,h,padw,padd)为相对于resize之后图像的数据,该函数的功能是将(x,y,w,h)坐标转换为标签的左上角和右下角坐标。i=0时,左上角的范围:x1a, y1a, x2a, y2a,马赛克图像的左上角和右下角。

laner__gg的博客 2835

卫星遥感YOLO多类别检测:数据集格式转换与训练避坑指南

目标检测模型的性能不仅取决于网络结构,更受训练数据质量与标注格式的制约。在遥感影像场景中,多类别目标识别常面临数据集标注格式不统一、类别分布不均、小目标漏检等工程难题。YOLO作为主流检测框架,其训练流程要求标签归一化且类别ID连续,而开源数据往往以VOC、COCO等形式存储,转换中的坐标基、单位、图片尺寸等细节极易引发训练异常。本文从数据校验、三格式互转、场景级划分到训练参数调优,系统梳理了一套可复用的工程化方法,帮助读者在卫星遥感多类别检测任务中快速构建可靠基线,规避常见数据与训练陷阱。

weixin_33957648的博客 633

手把手教你用 Docker 构建自己的 CentOS 基础镜像

目录一、准备CentOS基础镜像二、撰写Dockerfile三、构建Docker镜像四、生成Docker容器 相信码农们经常会听说:虚拟机将成为历史,Docker才是未来 !!! 事实如此,现在大部分公司都在用 Docker 技术,想拥有自己的 Docker 专属镜像,那么 Dockerfile 就是入门,现在让我们一起来看一下 ------ 构建 Docker 镜像的全过程。 好文章 记得收藏...

Nick.Peng's Blogs 1万+

YOLOv4论文中的trick笔记

最近读了YOLO系列的论文,读到YOLOv4发现文中的很多trick 都不了解,在开始看YOLOv5代码前,先补充学习一下YOLOv4论文中的trick。

2302_79180616的博客 1067

三维(点云)语义分割概述以及方法总结

语义分割 语义分割需要两部分 classification: 需要全局信息 segmentation:更加依赖全局信息和局部信息 一般的网络结构是: 提特征-特征映射-特征图压缩(降维)-全连接-分类,其实就是encoder-decoder的过程, 比如在二维的的pspnet,fcn等等 0. 三维表示的数据结构 Point cloud 无序性 点云实际上是无序的,比如有8个点云,你放到...

renhaofan的博客 3万+

YOLOv4---(详解各种trick)

YOLOv4—(详解各种trick) 参考自(https://zhuanlan.zhihu.com/p/139764729) 前段时间大名鼎鼎的yolov4终于面世了,可是看过以后确实大失所望。不是说yolov4不好,只不过没有什么革命性的创新,相当于作者尝试了计算机视觉领域的各种花里胡哨的trick,然后给了一个最佳方案的trick组合。而且,这些东西对于实际的工业生产并没有什么用。。。。也就是落地基本不可能。 下面来仔细看一下文章中提到的各种trick。 论文地址 github 文中将前人的工作主要分

justsolow的博客 2万+

可调电源的电路设计

可调电源在电路调试中经常用到,可调电源分为两种2-5v(非0点可调)和0-5v(低至0点可调)可调两种。 对于第一种非0点电压的可调范围,其主要是由于开关电源或LDO芯片输出的最小电压为一个固定电压值,非0范围。因此通过调节开关电源或LDO端的反馈电阻的设计模型,其电压可调范围都与芯片的参考电压有关。 基于开关电源的可调电压设计电路 因芯片U2的输出参考电压VSENSE管脚为1.22v。因此,通过调节可调电阻R8的数值,其芯片输出的最低电压一定不小于1.22v。当然此种方案是手动可调输出电压的设计,如

weixin_42257266的博客 9731

UsualToolCMS-验证码绕过漏洞复现

本文以UsualToolCMS为靶场,复现了验证码绕过漏洞

小小小屿屿屿的博客 918

【Make YOLO Great Again】YOLOv1-v7全系列大解析(Tricks篇)

YOLOv1-v7 Tricks解析,包含全系列网络完整版结构图。

Rocky Ding相信人工智能、数据科学、商业逻辑、金融工具、终身成长以及顺应时代的潮流会赋予我们超能力。 1314

WRF替换静态地理数据中的土地利用数据(WRF替换下垫面数据)

   在进行自己的WRF项目模拟的时候,因为需要用中国土地利用数据替换WRF内嵌老旧的土地利用数据,故需要将土地利用进行替换。我使用的中国的土地利用数据是来自中国土地利用数据(1980-2015)。其中我以下载的lucc1980为例进行演示。 1、坐标转换    (1)下载的lucc1980数据如下图所示:    (2)在ArcMap中打开如下图所示: 打开属性表可以看到,lucc1980的坐标系为投影坐标系Krasovsky_1940_Albers,数据格式为GRID。这里需要将投影坐标系转换成地理坐

GIS 1万+

YOLO系列目标检测算法——PP-YOLO

由于硬件的限制,往往需要舍弃准确率来确保算法的推理速度。本文的目的是实现一种具有相对平衡的既有效又高效的目标检测器,可以直接应用于实际的应用场景,而不是提出一种新的检测模型。以YOLOv3为基础进行开发,主要尝试结合现有的各种几乎不增加模型参数和FLOPs的多个的tricks,以尽可能提高检测器的精度,同时确保速度几乎不变。由于本文的所有实验都是基于PaddlePaddle进行的,所以称之为PP-YOLO。

AI-Mei的博客 3569

海思ISP调优实战:从实验室到真实场景的IPC相机图像质量优化指南

本文深入探讨海思ISP调优在IPC相机图像质量优化中的实战应用,从实验室标定到真实场景部署的全链路调优方法。重点解决光照动态范围、色温变化和噪声特性等核心问题,提供AE权重表配置、CCM标定、3DNR时域滤波等关键技术方案,帮助实现从理论到实践的图像质量提升。

s3t4u的博客 750

H桥电路原理

一、H桥原理 图1中所示为一个典型的直流电机控制电路。电路得名于“H桥式驱动电路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图1及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。   如图所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左...

Loadingzc的专栏 7万+

kaggle中的2D目标检测训练trick总结

你可以在yolo中这样使用。

如果想成为中心,那么就到中心去吧。 373

YOLO车辆测距、车辆识别与单目测距

YOLO(You Only Look Once)是一种实时物体检测系统,能够识别视频或图像中的多个对象,并确定其位置。结合车辆识别与单目测距技术,YOLO可以用于交通监控、自动驾驶等应用场景,通过单个摄像头实现车辆的识别与距离测量。YOLO结合单目测距技术,在多个应用领域展现出巨大的潜力与灵活性。其实时性和准确性为智能交通、自动驾驶等领域提供了强有力的技术支持。

走向CTO的路上... 1671

目标检测通用trick

目标检测通用trick 1. 数据增强 离线增强 : 直接对数据集进行处理,数据的数目会变成增强因子 x 原数据集的数目 ,这种方法常常用于数据集很小的时候 在线增强 : 这种增强的方法用于,获得 batch 数据之后,然后对这个 batch 的数据进行增强,如旋转、平移、翻折等相应的变化,由于有些数据集不能接受线性级别的增长,这种方法长用于大的数据集,很多机器学习框架已经支持了这种数据增强方式,并且可以使用 GPU 优化计算。 1.1 在线增强常用 空间几何变换:翻转(水平和垂直)、随机裁剪、旋转、放

Mao_Jonah的博客 576

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【项目实践】YOLO V4万字原理详细讲解并训练自己的数据集(pytorch完整项目打包下载)...

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达目录1、什么是YOLOV42、YOLOV4结构解析2.1、主干特征提取网络Backbone3、特征金字塔4、YoloHead利用获得到的特征进行预测5、预测结果的解码6、在原图上进行绘制7、YOLOV4的训练7.1、YOLOV4的改进训练技巧a)、Mosaic数据增强...

小白学视觉 1185

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

目标检测学习笔记——相关资料、竞赛及trick

添加链接描述 添加链接描述 添加链接描述

phily123的博客 1205

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 图像识别 so easy 丨经典图像分类数据集数据集CIFAR-10解读
下一篇: 手部数据太难找?最全手部开源数据集分享
OpenDataLab
博客等级 码龄4年 636粉丝 135原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值