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等混合增强方式供选择。