Post

[PyTorch] 컴퓨터 비전의 동반자, torchvision

[PyTorch] 컴퓨터 비전의 동반자, torchvision

🟣 Intro

컴퓨터 비전(Computer Vision) 연구나 개발을 하다 보면, 데이터셋을 불러오고, 모델을 만들고, 이미지를 변형하는 등 반복적인 작업들이 많다.

PyTorch는 이런 불편함을 덜어주기 위해 torchvision이라는 아주 유용한 라이브러리를 제공하는데 정작 잘 알고 쓰지는 않기 때문에 이번 기회에 제대로 정리해보려고 한다.


⚪ torchvision은 크게 세 가지 핵심 요소

  1. Models: 사전 훈련된(pre-trained) 다양한 컴퓨터 비전 모델들

  2. Datasets: 연구에 널리 쓰이는 표준 데이터셋

  3. Transforms: 이미지 전처리(preprocessing) 및 증강(augmentation)을 위한 다양한 변환 기법들


torchvision.models: 검증된 성능의 pretrained model

모델 분류모델명설명
Image ClassificationAlexNet, VGG, ResNet, SqueezeNet, DenseNet, Inception_v3,
GoogLeNet, ShuffleNetV2, MobileNetV2, MobileNetV3, ResNeXt,
Wide ResNet, MNASNet, EfficientNet, RegNet, VisionTransformer,
SwinTransformer
이미지 분류를 위한 다양한 아키텍처의 사전 훈련된 모델들.
ImageNet 데이터셋으로 학습된 가중치를 제공하여 전이 학습에 매우 유용함.
Object DetectionFaster R-CNN, Mask R-CNN, RetinaNet, Keypoint R-CNN, FCOS, SSD, SSDLite이미지 내의 객체 위치와 클래스를 예측하는 모델들.
COCO 데이터셋으로 사전 훈련된 모델을 제공함.
Semantic SegmentationFCN, DeepLabV3, LRASPP이미지의 각 픽셀이 어떤 클래스에 속하는지 예측하는 모델들.
COCO, Pascal VOC 등 다양한 데이터셋으로 사전 훈련됨.
Video ClassificationR(2+1)D, MC3, MViT비디오 클립의 내용을 분류하는 모델들. Kinetics-400 데이터셋으로 사전 훈련됨.
Optical FlowRAFT비디오의 연속된 프레임 간 픽셀의 움직임을 예측하는 모델.

torchvision.datasets: CIFAR10부터 ImageNet까지

데이터셋 분류데이터셋명설명
Image ClassificationMNIST, Fashion-MNIST,
KMNIST, EMNIST, QMNIST,
FakeData, CIFAR10,
CIFAR100, ImageNet,
Caltech101, Caltech256,
CelebA, Cityscapes,
Country211, DTD,
FGVCAircraft, Flowers102, Food101,
GTSRB, INaturalist,
LFWPeople, LSUN, OxfordIIITPet,
PCAM, Places365, RenderedSST2,
SEMEION,STL10,
SVHN, StanfordCars,
USPS, VOCDetection,
VOCSegmentation
이미지 분류 및 기타 비전 태스크를 위한 표준 데이터셋.
대부분 자동으로 다운로드 및 전처리를 지원함.
VideoHMDB51, Kinetics, UCF101비디오 분류 연구에 사용되는 데이터셋.
Stereo VisionKitti, FlyingChairs, FlyingThings3D스테레오 매칭 및 깊이 추정 연구를 위한 데이터셋.
OtherCocoCaptions, CocoDetection,
Flickr8k, Flickr30k, SBUCaptions
이미지 캡셔닝, 객체 탐지 등 특정 태스크를 위한 데이터셋.

torchvision.transforms: 학습에 있어서 필수 Data Augmentation

변환 종류함수명설명
Tensor 변환ToTensor()PIL Image 또는 NumPy ndarrayFloatTensor로 변환하고, 픽셀 값을 [0., 1.] 범위로 스케일링함.
크기 조절Resize(size), Scale(size)이미지의 크기를 size로 조절함.
자르기(Cropping)CenterCrop(size), RandomCrop(size),
RandomResizedCrop(size), FiveCrop(size),
TenCrop(size)
중앙, 무작위, 무작위 크기 조절 후 자르기 등 다양한 방식으로 이미지를 잘라냄.
뒤집기(Flipping)RandomHorizontalFlip(p=0.5),
RandomVerticalFlip(p=0.5)
주어진 확률로 이미지를 수평 또는 수직으로 뒤집음. (데이터 증강에 주로 사용)
색상 변환ColorJitter(brightness, contrast, saturation, hue),
Grayscale(num_output_channels),
RandomGrayscale(p=0.1)
밝기, 대비, 채도, 색조를 무작위로 변경하거나 흑백으로 변환함.
정규화Normalize(mean, std)텐서 이미지를 주어진 평균과 표준편차로 정규화함. T_norm = (T - mean) / std
기타 변환RandomRotation(degrees),
RandomAffine(degrees, translate, scale, shear),
RandomPerspective(distortion_scale, p)
회전, 아핀 변환, 원근 변환 등 기하학적 변환을 무작위로 적용함.
변환 조합Compose(transforms)여러 변환(transform)들을 순서대로 실행하는 파이프라인을 생성함.
타입 변환ToPILImage()텐서나 ndarray를 PIL Image로 변환함.
패딩Pad(padding, fill, padding_mode)이미지의 가장자리에 패딩을 추가함.

🟣 요약

torchvision은 그 자체의 개념보다 그 기능들의 리스팅이 중요한 것 같다.

딥러닝 연구를 위해서 3가지 편리한 기능을 제공해준다는 것을 알고 있자.

This post is licensed under CC BY 4.0 by the author.

© 2025 Soohyun Jeon ⭐

🌱 Mostly to remember, sometimes to understand.