分享一个数据增强的库imgaug,下面是使用例子
收藏
class CustomTransform(T.BaseTransform):
def __init__(self, prob=0.5, keys=None):
super(CustomTransform, self).__init__(keys)
self.prob = prob
self.augSeq=iaa.Sequential([
iaa.Fliplr(0.5),
# 水平镜面翻转
iaa.Flipud(0.3), # 垂直翻转
# 随机裁剪图片边长比例的0~0.1
iaa.Crop(percent=(0,0.2)),
#Sometimes是指指针对50%的图片做处理
iaa.Sometimes(
0.5,
#高斯模糊
iaa.GaussianBlur(sigma=(0,0.5))
),
#增强或减弱图片的对比度
iaa.LinearContrast((0.75,1.5)),
#添加高斯噪声
#对于50%的图片,这个噪采样对于每个像素点指整张图片采用同一个值
#剩下的50%的图片,对于通道进行采样(一张图片会有多个值)
#改变像素点的颜色(不仅仅是亮度)
iaa.AdditiveGaussianNoise(loc=0,scale=(0.0,0.05*255),per_channel=0.5),
#让一些图片变的更亮,一些图片变得更暗
#对20%的图片,针对通道进行处理
#剩下的图片,针对图片进行处理
iaa.Multiply((0.8,1.2),per_channel=0.2),
#仿射变换
iaa.Affine(
#缩放变换
scale={"x":(0.7,1.3),"y":(0.7,1.3)},
#平移变换
translate_percent={"x":(-0.3,0.3),"y":(-0.3,0.3)},
#旋转
rotate=(-25,25),
#剪切
shear=(-8,8),
# 以下是指定这些新的像素点的生成方法,这种指定通过设置cval和mode两个参数来实现。参数order用来设置插值方法。
order=[0, 1],
cval=(0, 255),
mode=ia.ALL
),
# iaa.Sometimes(
# 0.5,
# # 浮雕效果
# iaa.Emboss(alpha=(0, 0.3), strength=(0, 2.0)),
# ),
iaa.Sometimes(
0.5,
# 锐化
iaa.Sharpen(alpha=(0, 0.3), lightness=(0.75, 1.5)),
),
iaa.Add((-10, 10), per_channel=0.5),
#使用随机组合上面的数据增强来处理图片
],random_order=True
)
def _get_params(self, inputs):
image = inputs[self.keys.index('image')]
params = {}
params['trans'] = np.random.random() < self.prob
#params['size'] = _get_image_size(image)
return params
def _apply_image(self, image):
if self.params['trans']:
return self.augSeq(image=image)
return image
0
收藏
请登录后评论