前言
参赛过程中获益匪浅~
对于数据增广,以前觉得做分割的时候,涉及到尺寸变化,角度变化的时候,还是很难的。因为你不仅要对图像做这些变化,还需要对segmentation的数据做对应的变化,感觉很那实现。
不过那都是过去式了。感谢 Albumentations
使用Albumentations进行数据增强
- 相比torch自带的库,这个库有更多的对图像的预处理
- 相比torch自带的库,这个库更快
- 能很好地和Pytorch等框架配合使用
GitHub: https://github.com/albumentations-team/albumentations
示例:https://github.com/albumentations-team/albumentations_examples
主要改动
(1)重构了一下代码,改成了py文件
(2)增加了Albumentations 各种数据增广的函数
(3)考虑到GPU使用情况,统一image size=128;batchsize=8
(4)时间比较仓促,只是训练了2个epoch,数据也只是使用了部分。这个后续会逐步花更多时间进行训练。
可以使用的增广方式:
函数实现
from albumentations import (Blur,Flip,ShiftScaleRotate,GridDistortion,ElasticTransform,HorizontalFlip,CenterCrop,
HueSaturationValue,Transpose,RandomBrightnessContrast,CLAHE,RandomCrop,Cutout,CoarseDropout,
CoarseDropout,Normalize,ToFloat,OneOf,Compose,Resize,RandomRain,RandomFog,Lambda,MotionBlur,MedianBlur
,ChannelDropout,GaussNoise,ISONoise,IAAAdditiveGaussianNoise,VerticalFlip,RandomGamma,RandomRotate90,
IAAEmboss,IAASharpen,OpticalDistortion,IAAPiecewiseAffine)
def strong_aug(p=0.5):
return Compose([
RandomRotate90(),
Flip(),
Transpose(),
OneOf([
IAAAdditiveGaussianNoise(),
GaussNoise(),
], p=0.2),
OneOf([
MotionBlur(p=0.2),
MedianBlur(blur_limit=3, p=0.1),
Blur(blur_limit=3, p=0.1),
], p=0.2),
ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.2, rotate_limit=45, p=0.2),
OneOf([
OpticalDistortion(p=0.3),
GridDistortion(p=0.1),
IAAPiecewiseAffine(p=0.3),
], p=0.2),
OneOf([
CLAHE(clip_limit=2),
IAASharpen(),
IAAEmboss(),
RandomBrightnessContrast(),
], p=0.3),
HueSaturationValue(p=0.3),
], p=p)
结果说明
等待结果出现
---------------------------失误案例(乱改rle编码shape)-------------------------------
rle开始读取csv的解码方式改错了,原来的csv数据里面的编码方式就是512的,这个要顶不能变