PyTorch에서 transform, target_transform, transforms의 차이점

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

PyTorch를 사용하는 개발자, 특히 이미지 데이터셋 처리 및 전처리에 관심 있는 사람

핵심 요약

  • transform데이터(예: 이미지)에 적용되는 변환 함수를 정의하며, target_transform레이블(예: 클래스 번호)에 적용되는 변환 함수를 정의
  • transformstransformtarget_transform을 동시에 지정할 수 있는 편리한 인자로, 데이터셋 클래스(예: OxfordIIITPet)에 통합 적용
  • 예시: transforms=Resize(size=[100, 50])이미지 크기 조정을 수행하며, target_transform레이블 변환(예: 인코딩)에 사용

섹션별 세부 요약

1. `transform`과 `target_transform`의 정의

  • transform데이터(이미지, 텍스트 등)에 대한 전처리/변환을 정의
  • target_transform레이블(클래스 번호, 텍스트 등)에 대한 전처리/변환을 정의
  • 예: transforms=Resize(...)는 이미지 크기 조정, target_transform은 레이블 인코딩 가능

2. `transforms` 인자 사용 예시

  • transforms 인자는 transformtarget_transform을 동시에 지정할 수 있는 편리한 옵션
  • 예: OxfordIIITPet(transforms=Resize(...))데이터와 레이블 모두에 변환 적용
  • transforms데이터셋 클래스(예: Dataset 구현체)의 __getitem__ 메서드 내부에서 자동 처리

3. `Resize` 적용 예시

  • Resize(size=[100, 50])이미지의 너비와 높이를 100x50으로 조정
  • tfsresize100_50_func_data[0]첫 번째 샘플의 이미지와 레이블을 변환된 상태로 반환
  • transforms 인자는 데이터셋 로딩 시 일관된 전처리를 보장

결론

  • transform은 데이터, target_transform은 레이블에 적용하며, transforms는 두 변환을 동시에 지정 가능
  • 이미지 크기 조정(예: Resize)은 transforms 인자로 간편하게 적용 가능
  • 데이터셋 클래스(예: OxfordIIITPet)에서 transforms를 사용하면 전처리 일관성 유지 및 개발 효율성 향상 가능