※ MMCV는 다음과 같은 기능을 한다:
- Data Process
- mmcv.image
- mmcv.video
- Visualization
- mmcv.visualization
- Data Transformation
- mmcv.transforms
- Various CNN Architectures
- mmcv.cnn
- High-quality Implementation of Common CUDA Ops
- mmcv.ops
mmcv.transforms
데이터 변환(data transformation)은 머신러닝과 딥러닝 모델을 훈련시키기 위해 데이터를 준비하는 과정에서 매우 중요한 단계이다. 이 과정은 데이터를 로딩, 전처리, 증강 및 포맷팅하는 다양한 작업을 포함한다.
데이터 변환(data transformation)의 주요 목표는 데이터를 모델이 처리할 수 있는 형태로 변환하는 것이다.
▶ 데이터 변환 설계(Design of data transformation)
: MMCV에서는 호출 가능한 다양한 데이터 변환 클래스를 사용하여 데이터를 조작한다.
import numpy as np
from mmcv.transforms import Resize
# Resize 변환을 scale=(224, 224)로 설정
transform = Resize(scale=(224, 224))
# 임의의 이미지 데이터를 가진 사전 생성
data_dict = {'img': np.random.rand(256, 256, 3)}
# 변환 적용
data_dict = transform(data_dict)
# 변환 후 이미지 형태 출력
print(data_dict['img'].shape) # 출력: (224, 224, 3)
▶ 데이터 파이프라인
: 데이터 파이프라인은 일련의 데이터 변환 작업을 연결하여 데이터를 순차적으로 처리하는 방법이다.
데이터셋의 각 샘플은 기본 정보가 포함된 사전 형식으로 저장되며, 이 사전은 파이프라인을 통해 여러 변환 작업을 거쳐 최종적으로 모델에 입력될 준비가 된 형태로 변환한다.
pipeline = [
dict(type='LoadImageFromFile'),
dict(type='Resize', size=256, keep_ratio=True),
dict(type='CenterCrop', crop_size=224),
dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
dict(type='ClsFormatBundle')
]
dataset = dict(
...
pipeline=pipeline,
...
)
▶ 사용자 정의 데이터 변환 클래스
BaseTransform | Base class for all transformations. |
: 새로운 데이터 변환 클래스를 구현하려면 'BaseTransform'을 상속하고, 'transform' 메서드를 구현해야 한다.
▶ 주요 데이터 변환 클래스
- 데이터 로딩: 파일 경로에서 이미지를 로드하거나, 주석(bbox 등)을 로드한다.
- 데이터 전처리 및 증강: 이미지를 자르기, 패딩, 스케일링 등 다양한 방법으로 변환한다.
- 데이터 포맷팅: 데이터를 torch.Tensor로 변환한다.
▶ 데이터 변환 래퍼
: 데이터 변환 래퍼는 데이터 사전의 필드를 매핑하거나, 여러 필드에 변환을 적용하는 등의 특별한 기능을 제공한다.
https://mmcv.readthedocs.io/en/latest/api/transforms.html
https://mmcv.readthedocs.io/en/latest/understand_mmcv/data_transform.html
'OpenMMLab > MMCV' 카테고리의 다른 글
MMCV 이해하기: High-quality Implementation of Common CUDA Ops (0) | 2024.06.21 |
---|---|
MMCV 이해하기: Various CNN Architectures (0) | 2024.06.21 |
MMCV 이해하기: Visualization (0) | 2024.06.21 |
MMCV 이해하기: Data Process (0) | 2024.06.21 |
MMCV 시작하기 (0) | 2024.06.20 |