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도 사용 가능합니다.

더욱 자세한건 공식 홈페이지 참고하는 게 좋습니다.