CV-语义分割–数据扩增
这几天跟着Datawhale学习了,针对CV方面的数据扩增方法。
主要有两种类型,分别是基于图像的数据数据扩增方法和基于深度学习的扩增方法(还不太理解)。
我主要是练习了基于图像的数据扩增方法。针对本赛题(语义分割),针对图像的数据扩增方法也是比较合适的。
针对图像的扩增,又分为3大类:
一种是几何变化,包括:旋转、缩放、平移、裁减、翻转、反射变换,等。
一种是灰度和彩色空间变换,包括:亮度调整、对比度、饱和度调整、颜色空间转换、色彩调整、gamma变换等
一种是添加噪声和滤波,也就是对原始图像数值添加微量扰动:添加高斯噪声、椒盐噪声等;滤波:模糊、锐化、雾化等
,
这次Datawhale的视频分享中,主要介绍了Pytorch中torchvision模块的transforms函数以及Albumentations库函数;
我在baseline中主要是调用了Albumentations,(torchvision的transforms还没有调好代码,所有没有尝试成功)。
原来baseline中的
trfm = A.Compose([
A.Resize(IMAGE_SIZE, IMAGE_SIZE),
A.HorizontalFlip(p=0.5),
A.VerticalFlip(p=0.5),
A.RandomRotate90(),
])
这次尝试添加了其他的一些扩增方法:
trfm = A.Compose(
[
A.HorizontalFlip(p = 0.5),
# A.Transpose(),
A.Resize(IMAGE_SIZE, IMAGE_SIZE),
A.VerticalFlip(p=0.5),
A.RandomRotate90(),
A.OneOf([
A.IAAAdditiveGaussianNoise(),
A.GaussNoise(),
], p=0.3),
##------模糊处理:
A.OneOf([
A.MotionBlur(p=0.2),
A.MedianBlur(blur_limit=3, p=0.1),
A.Blur(blur_limit=3, p=0.1),
], p=0.5),
A.ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.2, rotate_limit=45, p=0.2),
##-----弹性变形:
A.OneOf([
A.OpticalDistortion(p=0.3),
A.GridDistortion(p=0.1),
A.ElasticTransform(alpha=155, sigma=210, alpha_affine=157, p=0.5)
A.IAAPiecewiseAffine(p=0.3),
], p=0.5),
A.OneOf([
A.CLAHE(clip_limit=2),
A.IAASharpen(),
A.IAAEmboss(),
A.RandomBrightnessContrast(),
], p=0.5),
A.HueSaturationValue(p=0.3),
])
主要参考方法地址:添加链接描述
然而测试结果并没有原来的结果好一些,可能其中某些变换并没有起到正反馈的作用。需要进一步调整。。。