首页 PaddleCV 帖子详情
分享一个数据增强的库imgaug,下面是使用例子
收藏
快速回复
PaddleCV 文章学习资料 500 0
分享一个数据增强的库imgaug,下面是使用例子
收藏
快速回复
PaddleCV 文章学习资料 500 0
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
收藏
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户