利用imgaug数据增强库增强图片源码解读

imuaug是常用的数据增强库,详细用法可参考imgaug详细说明

以下为自己做的示例源码,仅供参考:

①构建数据增强函数

import os
from imgaug import augmenters as iaa
import cv2 as cv
from tqdm import tqdm

def image_augment(image_path,augment_style_list,images_name,augment_image_path):
    imglist = []
    image = cv.imread(image_path)
    imglist.append(image)
    for augment_style in augment_style_list:
        '''高斯噪声'''
        if augment_style == 'GaussianNoise':
            aug = iaa.AdditiveGaussianNoise(scale=0.1 * 255)
        '''随机通道'''
        if augment_style == 'ChannelShuffle':
            aug = iaa.ChannelShuffle(0.75)
        '''卡通化'''
        if augment_style == 'Cartoon':
            aug = iaa.Cartoon()
        '''BlendAlpha'''
        if augment_style == 'BlendAlpha':
            aug = iaa.BlendAlpha(0.5, iaa.Grayscale(1.0))
        '''高斯模糊'''
        if augment_style == 'GaussianBlur':
            aug = iaa.GaussianBlur(sigma=(0.0, 3.0))
        '''均值模糊'''
        if augment_style == 'AverageBlur':
            aug = iaa.AverageBlur(k=(2, 11))
        '''动态模糊'''
        if augment_style == 'MotionBlur':
            aug = iaa.MotionBlur(k=20)
        '''MeanShiftBlur'''
        if augment_style == 'MeanShiftBlur':
            aug = iaa.MeanShiftBlur()
        '''随机增亮'''
        if augment_style == 'MultiplyBrightness':
            aug = iaa.MultiplyBrightness((0.5, 1.5))
        '''色彩'''
        if augment_style == 'MultiplyHue':
            aug = iaa.MultiplyHue((0.5, 1.5))
        '''对指定图像进行增强'''
        images_aug = aug.augment_images(imglist)
        '''定义图像name'''
        new_image_name = os.path.join(augment_image_path, images_name + '_' + augment_style + '.jpg')
        '''保存图像'''
        cv.imwrite(new_image_name, images_aug[0])

②得到原始图片path

current_path=os.getcwd() #得到当前文件夹地址
train_image_path=os.path.join(current_path,'car_train_data\\car_train_data\\train_images')
image_name_jpglist=os.listdir(train_image_path) #获得图像name列表
image_path_list=[os.path.join(train_image_path,x) for x in image_name_jpglist] #获得图像path列表
image_name_list=[x.split('.')[0] for x in image_name_jpglist] #获得图像name列表,不含.jpg
# os.makedirs(os.path.join(current_path,'train_augment_images')) #新建文件夹用于存储增强后的图像

③对原始图像进行数据增强并保存

'''定义增强方式'''
augment_style=['GaussianNoise','ChannelShuffle','Cartoon','BlendAlpha','GaussianBlur',
               'AverageBlur','MotionBlur','MeanShiftBlur','MultiplyBrightness','MultiplyHue']
'''定义原始图像存放file'''
augment_image_path=os.path.join(current_path,'train_augment_images')
for image_name in tqdm(image_name_list):
    '''定义获取图像path'''
    image_path=os.path.join(train_image_path,image_name+'.jpg')
    '''调用增强函数'''
    image_augment(image_path,augment_style,image_name,augment_image_path)

另外,可利用imgaug的seq功能,进行多种增强方式的混合使用。其程序示例为:

aug = iaa.Sequential([
      iaa.Affine(translate_px={"x":-40}),
      iaa.AdditiveGaussianNoise(scale=0.1*255)
], random_order=True)

另外还有SomeOf,OneOf,Sometimes等混合增强方式供选择。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值