IT 지식 창고
(torchio) 3D Data Augmentation 중 주로 사용하는 기법
casim
2024. 5. 14. 19:18
import torchio as tio
# img_size (D, H, W)
def augmentation(split_set, img_size=None):
aug_img_shape = [img_size[2], img_size[1], img_size[0]]
if split_set == "train":
aug = tio.Compose(
[
#### Preprocessing
# tio.CropOrPad((64,64,48)),
# tio.Resample(4),
# 반올림문제로 img와 mask를 subject로 resize 차이가 생길 수 있음.
# tio.CopyAffine("mask"),
tio.Resize(aug_img_shape), # (W, H, D)
#### aug - Spatial
tio.RandomFlip(axes=(0, 1), p=0.5),
tio.RandomAffine(scales=0.1, degrees=2, p=0.5),
# tio.RandomElasticDeformatio(),
# tio.RandomAnisotropy(),
#### aug - Intensity
tio.RandomMotion(degrees=3, translation=0.5, num_transforms=1, p=0.1),
# tio.RandomGhosting(),
# tio.RandomSpike(),
tio.RandomBiasField(coefficients=0.1, p=0.1),
# tio.RandomBlur(),
tio.RandomNoise(mean=0, std=0.01, p=0.5),
# tio.RandomSwap(),
tio.RandomGamma(log_gamma=(-0.3, 0.3), p=0.3),
]
)
else:
aug = tio.Compose(
[
# tio.CopyAffine("mask"),
# tio.Resize(aug_img_shape), # (W, H, D)
]
)
return aug
급할 땐, 그냥 위에 것을 복사해서 augmentation 기법으로 활용해도 무방합니다. (본인 경험 기반 기법 선정)
3D image task 뿐만아니라, 2D image도 사용 가능합니다.
더욱 자세한건 공식 홈페이지 참고하는 게 좋습니다.