boostcampaitech5 / level1_imageclassification-cv-07

level1_imageclassification-cv-07 created by GitHub Classroom
1 stars 1 forks source link

train_set만 transform하는 코드 추가 #9

Closed 97DongHyeokOH closed 1 year ago

97DongHyeokOH commented 1 year ago

argparser를 이용해 train_set만 transform하는 기능을 추가했습니다.

크게 3가지 파일이 변경되었습니다.

  1. train.py

    • '--valid_transform' argparser가 추가 되었고, False 적용시 train_set만 transform을 진행합니다. (default=False)
    • transform은 train/valid set으로 나눈 뒤에 적용 여부를 판단하므로 dataset.set_transform(transform)는 삭제했습니다.
  2. dataset.py

    • MaskBaseDataset의 getitem() 함수에 변화가 있습니다. Docstring에 어느 정도 요약 설명을 해놓았습니다.
    • train/valid set으로 나눈 데이터 셋을 transform하기 위해 새로운 Subset_transform 클래스를 생성했습니다.
    • Subset_transform 클래스는 각 train/valid set(Subset)과 transform 방법이 들어갑니다.
    • 여기서 이전 MaskBaseDataset 클래스에 추가된 get_labels() 함수가 여기로 이동하여 error를 해결했습니다.
  3. augmentation.py

    • 더 빠른 Augmentation을 위한 albumentations 모듈을 사용하기 위해 CustomAugmentation 클래스의 call() 함수 return self.transform(image) -> return self.transform(image=image)로 변경했습니다.

추가로 CustomAugmentation에 augmentation 기법을 추가할 때는 albumentation 모듈을 사용해주시기 바랍니다. Augmentation시에 속도가 월등히 빠르기 때문에 학습 시에 도움이 될 것입니다.

이해가 안되시는 부분이 있거나 잘 안되는 부분이 있다면 새벽에라도 말씀해주시면 감사하겠습니다! :)

nstalways commented 1 year ago

추가적으로, SubsetTransform을 사용해서 transform을 한다면 sample_submission.ipynb 코드에 변경이 생길 것 같습니다. 제가 이해한 게 맞다면 기존에 set_transform 함수는 사라지고 SubsetTransform으로 transform을 하는 것이고, inference 시에는 선언한 dataset에 set_transform이 아닌 SubsetTransform을 호출하면 정상 동작하는 걸까요?

97DongHyeokOH commented 1 year ago

제가 생각하기에는 Subset_Transform을 사용해서 sample_submission.ipynb에는 코드 변경이 필요하지 않을 것 같습니다. inference시에 선언한 dataset에는 TestDataset의 getitem()으로 transform된 데이터를 가져오기 때문에 별도로 set_transform함수 및 Subset_transform을 사용하지 않고 정상 동작이 가능할 것 같습니다.

추가적으로 변경될 점이 있어야된다면 CustomAugmentation에 albumentations 모듈을 사용했기 때문에 test dataset을 transform할 때, albumentations 모듈을 사용해야 되느냐 인데.... 이건 사실 큰 문제가 될 것 같지 않습니다.

97DongHyeokOH commented 1 year ago

생각해보니 제가 이건 CustomAugmentation을 무조건 사용한다는 전제 하에 코드를 작성해서 아직 정정해야 될 부분들이 더 있을 것 같네요 하하.... 내일 아침까지는 정정해보겠습니다.

nstalways commented 1 year ago

넵 알겠습니다!

97DongHyeokOH commented 1 year ago

추가로 모든 transform은 albumentations 모듈로 적용하게 변경해서 BaseAugmentation 사용에도 문제가 없습니다.

다들 내일 봬요 :)