目标检测数据增强篇

1.mmdetection内置数据增强

mmdetection内置了很多数据增强方式,主要在mmdetection/mmdet/datasets/transforms.py内,也可以在同文件夹的__init.py__内找到,具体可以见transforms.py
在mmdetection中,修改配置文件的train_pipeline即可实现数据增强,

train_pipeline = [
    dict(type='LoadImageFromFile', backend_args=None),  # 读取img
    dict(type='LoadAnnotations', with_bbox=True),  # 读取Annotations,对应coco数据集
    # 数据增强方法
    dict(type='Resize', scale=(1333, 800), keep_ratio=True),  # 尺寸变换
    dict(type='PackDetInputs'),  # 数据打包
]

常见数据增强:

1.Mosaic

Mosaic简单的讲就是将4张图片缩小后拼接在一起,超出部分舍弃,不足部分填充,如图,1,2,3,4图拼接,选取蓝色框内作为Mosaic结果
Mosaic示意图
Mosaic使每个批次中的数据更多样化,让模型在训练过程中接触更多的场景和物体组合,提高模型的鲁棒性和泛化能力

2.RandomShift随机平移

dict(type='RandomShift', prob=0.5, max_shift_px=32),  # 随机平移

随机在水平,竖直方向上移动,prob代表该图片RandomShift可能性

3.RandomFlip随机镜像

dict(type='RandomFlip', prob=0.5, direction='horizontal'),  # 水平镜像
dict(type='RandomFlip', prob=[0.3, 0.5,0.2], direction=['horizontal', 'vertical', 'diagonal']),

4.CutOut

随机删除图像中的一个矩形区域,可以得到较好的训练结果,CutOut就是随机将若干个矩形区域删除(像素值改成0)

dict(type='CutOut', n_holes=(1, 3), cutout_shape=None, cutout_ratio=(0.2, 0.4), fill_in=(0, 0, 0)),

5.MixUp

输入图像每个像素按比例融合,输出结果按比例融合(one-hot形式)

dict(type='MixUp',ratio_range=(0.5, 1.5))

6.MinIoURandomCrop

dict(type='MinIoURandomCrop', min_ious=(0.1, 0.3, 0.5, 0.7, 0.9), min_crop_size=0.3),

MinIoURandomCrop 是一种用于数据增强的随机裁剪技术,保证裁剪后的图像与原始图像中的某些目标框具有一定的交并比(IoU)阈值。即,至少有一个目标框的 IoU 值大于预设定的阈值

7.Resize

dict(type='Resize', scale=(1333, 800), keep_ratio=True),  # 缩放

2.Albumentations库

站内有篇文章写的不错,Albumentations图像增强详解(持续更新)

1.RandomBrightnessContrast随机亮度对比度

dict(
    type='Albu',
    transforms=[dict(
	    type='RandomBrightnessContrast',
	    brightness_limit=[0.1, 0.3],
	    contrast_limit=[0.1, 0.3],
	    p=0.2,)],  # 数据增强,随机亮度,对比度
    bbox_params=dict(
        type='BboxParams',
        format='pascal_voc',
        label_fields=['gt_bboxes_labels'],
        min_visibility=0.0,
        filter_lost_elements=True),
    keymap={
        'img': 'image',
        'gt_masks': 'masks',
        'gt_bboxes': 'bboxes'},),

2.Blur模糊

blur_limit (int, (int, int)):模糊图像的最大kernel size. 有效值范围[3, inf),默认值:(3, 7)

transforms=[dict(type='Blur', blur_limit=(3,7))]

3.GaussNoise高斯噪声

transforms=[dict(type='GaussNoise', var_limit=(10.0,50.0), mean(0.0)]

var_limit ((float, float) or float): 噪声方差范围. 若为单个float数值,将转换为区间范围 (0, var_limit). 默认值: (10.0, 50.0).
mean (float): 噪声均值. 默认值: 0
per_channel (bool): 每个通道是否独立采样。默认值: True

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"未解析引用model"是一个比较常见的错误信息。这个错误通常出现在以下两种情况下: 1. 模型文件未被正确加载:这种情况通常出现在你正在尝试加载一个不存在的文件或者文件路径不正确的情况下。在这种情况下,你需要确保模型文件存在,并且文件路径是正确的。 2. 模型名称未被正确指定:这种情况通常出现在你正在尝试使用已经定义但未加载的模型的情况下。在这种情况下,你需要确保你已经正确地定义了模型,并且在调用模型时指定了正确的名称。 下面是一个使用TensorFlow加载模型时出现“未解析引用model”的示例代码: ```python import tensorflow as tf # 加载模型 model = tf.keras.models.load_model('path/to/model') # 对模型进行推理 output = model(input_data) ``` 在这个示例代码中,如果出现“未解析引用model”的错误,可能是因为模型文件路径不正确,或者在加载模型时没有指定正确的模型名称。你需要检查模型文件路径是否正确,并且确保在加载模型时指定了正确的名称。例如: ```python import tensorflow as tf # 加载模型 model = tf.keras.models.load_model('path/to/model', compile=False, custom_objects={'model': model}) # 对模型进行推理 output = model(input_data) ``` 在这个示例代码中,我们使用了`custom_objects`参数指定了模型的名称,从而避免了“未解析引用model”的错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值