주석이 포함된 컴퓨터 비전 데이터의 데이터 전처리 기법#
데이터 전처리는 원시 주석 이미지를 모델이 효과적으로 학습하는 데 필요한 깨끗하고 일관된 입력으로 변환합니다. 컴퓨터 비전 모델의 경우 Ultralytics YOLO26을 사용하면 RGB 변환, [0, 1]로의 스케일링, 크기 조정과 같은 핵심 픽셀 작업이 학습 파이프라인 내부에서 자동으로 실행됩니다. 따라서 남은 작업은 데이터셋을 올바르게 분할하고, 클래스를 균형 있게 구성하며, 증강 기법을 선택하는 것입니다. 이 가이드에서는 크기 조정, 정규화, 데이터셋 분할, 데이터 증강, 탐색적 데이터 분석(EDA)과 같은 필수 기법을 다룹니다.
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
이 단계는 프로젝트 목표를 정의하고 데이터를 수집하고 주석을 추가한 후에 진행되며, 컴퓨터 비전 프로젝트 워크플로의 초기 단계에 해당합니다.
전처리가 중요한 이유#
전처리는 계산 부하를 줄이고 모델 성능을 향상하는 형식으로 데이터를 변환합니다. 원시 데이터에서 흔히 발생하는 다음 세 가지 문제를 해결합니다.
- 노이즈: 데이터에 포함된 무관하거나 무작위적인 변동입니다.
- 불일치: 이미지 크기, 형식, 품질의 변동입니다.
- 불균형: 데이터셋 전체에서 클래스 또는 범주가 균등하게 분포하지 않는 상태입니다.
전처리 기법#
주요 기법은 크기 조정, 정규화, 데이터셋 분할, 증강입니다. YOLO26에서는 앞의 두 작업이 자동으로 수행되며, 분할과 증강에서 사용자의 선택이 가장 중요합니다.
이미지 크기 조정#
많은 모델은 일관된 입력 크기를 요구하므로, 크기 조정은 이미지 크기를 균일하게 만들고 계산 복잡도를 줄입니다. 일반적으로 사용되는 보간 방법은 다음 두 가지입니다.
- 쌍선형 보간: 가장 가까운 네 픽셀의 가중 평균을 사용하여 픽셀 값을 부드럽게 만듭니다.
- 최근접 이웃: 평균을 계산하지 않고 가장 가까운 픽셀 값을 복사합니다. 더 빠르지만 이미지가 더 블록처럼 보일 수 있습니다.
OpenCV와 PIL(Pillow) 같은 라이브러리는 이러한 함수를 제공하지만, YOLO26에서는 일반적으로 수동으로 크기를 조정할 필요가 없습니다. imgsz 인수가 이를 처리합니다. 고정 크기 정사각형 경로에서 검증 및 추론은 종횡비를 유지하고 회색(값 114)으로 패딩하면서 이미지를 imgsz × imgsz 입력에 맞추는 레터박스 처리를 수행합니다. 예를 들어 입력은 640 × 640가 될 수 있습니다. 큰 이미지는 맞도록 축소되며, 스케일 업이 비활성화된 경우 작은 이미지는 확대되지 않습니다. 기본 학습 경로에서는 mosaic=1.0이 대신 네 개의 이미지를 더 큰 캔버스에 타일 형태로 배치한 후 imgsz로 다시 자릅니다. 마지막 epoch에서 close_mosaic가 모자이크를 비활성화하면 이미지는 레터박스 처리된 후에도 그대로 전달되지 않고 무작위 변환을 계속 적용받습니다. 직사각형 배치(rect=True)와 multi_scale은 서로 다른 입력 형태를 사용합니다.
픽셀 값 정규화#
정규화는 픽셀 값을 표준 범위로 스케일링하여 학습 중 모델이 더 빠르게 수렴하도록 돕습니다. 일반적인 기법은 다음 두 가지입니다.
- Min-Max 스케일링: 픽셀 값을 0에서 1 사이의 범위로 스케일링합니다.
- Z-점수 정규화: 평균과 표준편차를 기준으로 픽셀 값을 스케일링합니다.
YOLO26은 전처리 파이프라인의 일부로 정규화를 자동 처리합니다. 이미지를 RGB로 변환하고 255로 나누어 픽셀 값을 [0, 1] 범위로 스케일링합니다(min-max 스케일링). YOLO는 기본적으로 ImageNet 방식의 평균/표준편차(z-점수) 정규화를 적용하지 않으므로, 수동 정규화 단계가 필요하지 않습니다.
데이터셋 분할#
데이터를 학습, 검증, 테스트 세트로 분할하면 보지 못한 데이터로 모델을 평가하고 일반화 성능을 측정할 수 있습니다. 일반적인 분할 비율은 학습 70%, 검증 20%, 테스트 10%입니다. scikit-learn 또는 TensorFlow와 같은 도구를 사용하면 이 작업을 간편하게 수행할 수 있습니다.
분할할 때는 다음 사항을 고려해야 합니다.
- 클래스 분포 유지: 학습, 검증, 테스트 세트 전체에서 각 클래스가 비례적으로 포함되도록 합니다.
- 클래스 균형 조정: 불균형 데이터셋의 경우 소수 클래스를 오버샘플링하거나 다수 클래스를 언더샘플링하는 방법을 고려하되, 학습 세트에만 적용합니다.
증강 또는 기타 전처리를 적용하기 전에 데이터셋을 분할하고, 해당 변환은 학습 세트에만 적용합니다. 분할 전에 증강을 수행하면 검증 또는 테스트 이미지의 정보가 학습에 영향을 미쳐 실제 데이터에서 크게 하락하는 오해의 소지가 있는 높은 점수가 생성될 수 있습니다.
데이터셋 증강#
데이터 증강은 기존 이미지의 변형 버전을 생성하여 데이터셋의 규모를 인위적으로 늘립니다. 과적합을 줄이고 일반화 성능을 향상하며, 다음과 같은 여러 이점이 있습니다.
- 더 견고한 모델: 조명, 방향, 스케일의 변화를 적용하면 실제 환경의 왜곡에 대한 모델의 대응력이 향상됩니다.
- 비용 효율성: 새로운 데이터를 수집하고 라벨링하지 않고도 학습 세트를 확장할 수 있습니다.
- 데이터 활용도 향상: 주석이 추가된 각 이미지에서 여러 학습 변형을 생성할 수 있습니다.
YOLO26에서는 model.train()에 전달하는 학습 인수 또는 이에 상응하는 CLI 플래그를 통해 증강 강도를 제어하며, 데이터셋 경로, 클래스 이름, 분할과 같은 메타데이터를 정의하는 데이터셋 YAML을 편집하지 않습니다. 예외는 flip_idx입니다. 포즈 데이터셋은 왼쪽/오른쪽 keypoint 쌍을 매핑하기 위해 이를 데이터셋 YAML에 선언하며, 이 항목이 없으면 YOLO는 fliplr 및 flipud를 모두 비활성화합니다. 기본 제공 증강은 다음과 같습니다.
- 모자이크, MixUp, CutMix (
mosaic,mixup,cutmix): 여러 이미지를 하나의 학습 샘플로 결합합니다. - 플립 (
fliplr,flipud): 이미지를 가로 또는 세로 방향으로 반전합니다. - 기하학적 변환 (
degrees,translate,scale,shear,perspective): 이미지를 회전, 이동, 확대/축소, 왜곡합니다. - HSV 색상 지터 (
hsv_h,hsv_s,hsv_v): 색조, 채도, 밝기를 변경합니다. - Copy-paste (
copy_paste): 분할된 객체의 추가 복사본을 붙여 넣습니다. 기본적으로 동일한 이미지 내에서 반전하여 붙여 넣거나,copy_paste_mode=mixup을 사용하여 다른 이미지에서 가져옵니다. - 채널 교환 (
bgr): RGB 채널 순서를 BGR로 교환합니다. - 분류 변환 (
auto_augment,erasing): 분류기를 학습할 때 자동 증강 정책과 무작위 지우기를 적용합니다.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Augmentation is configured with training arguments, not the dataset YAML
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)증강 인수의 전체 목록과 기본값은 증강 설정 참조 문서와 전용 YOLO 데이터 증강 가이드를 참조하세요. albumentations 패키지가 설치되어 있으면 YOLO는 기본 제공 Albumentations 기반 증강도 자동으로 활성화합니다.
사례 연구: 차량 탐지를 위한 전처리#
바운딩 박스와 라벨이 추가된 이미지에서 시작하여 YOLO26으로 교통 이미지의 차량을 탐지하고 분류하는 프로젝트를 생각해 보겠습니다. 각 전처리 결정은 다음과 같이 적용됩니다.
- 크기 조정: 수동 작업이 필요하지 않습니다. YOLO26이 학습 중
imgsz으로 크기를 조정합니다. - 정규화: 수동 작업이 필요하지 않습니다. YOLO26이 픽셀 값을 자동으로
[0, 1]으로 스케일링합니다. - 분할: 데이터셋을 학습 70%, 검증 20%, 테스트 10%로 나누고, 각 분할에서 클래스 분포를 일관되게 유지합니다.
- 증강: 교통 장면에 적합한 학습 인수를 설정합니다. 예를 들어 방향 불변성을 위해
fliplr, 주간/야간 조명을 위해hsv_v, 다양한 객체 밀도를 위해mosaic를 사용할 수 있습니다.
이러한 결정을 완료하면 데이터셋은 탐색적 데이터 분석(EDA)을 수행할 준비가 됩니다.
탐색적 데이터 분석(EDA)#
EDA는 통계와 시각화를 사용하여 데이터의 패턴과 분포를 확인하고, 학습 전에 클래스 불균형이나 이상치와 같은 문제를 발견할 수 있도록 돕습니다.
통계적 EDA 기법#
통계적 EDA는 픽셀 강도 분포와 같은 속성에 대해 계산한 평균, 중앙값, 표준편차, 범위 등의 기본 지표에서 시작합니다. 이러한 지표는 데이터셋 품질에 대한 빠른 개요를 제공하고 불규칙성을 조기에 드러냅니다.
시각적 EDA 기법#
시각화는 요약 통계로는 확인하기 어려운 클래스 불균형과 이상치 등의 패턴을 보여줍니다. 일반적인 도구는 다음과 같습니다.
- 히스토그램 및 상자 수염 그림: 픽셀 값의 분포를 보여주고 강도 또는 feature 분포에서 이상치를 표시합니다.
- 막대 차트: 각 클래스의 샘플 수를 비교하여 클래스 불균형을 보여줍니다.
- 산점도: 이미지 feature 또는 주석 간의 관계를 탐색합니다.
- 히트맵: 픽셀 강도 분포 또는 이미지 전반의 주석 공간 분포를 시각화합니다.
EDA를 위한 Ultralytics Platform#
코드 없이 EDA를 수행하려면 Ultralytics Platform에 데이터셋을 업로드하세요. 데이터셋의 Charts 탭은 분할 분포, 상위 클래스 수, 이미지 너비/높이 히스토그램, 주석 위치와 이미지 크기의 2D 히트맵 등 주요 EDA 시각화를 자동으로 생성합니다. Images 탭에서는 주석 오버레이와 함께 그리드, 컴팩트, 테이블 보기로 데이터를 탐색할 수 있으므로 코드를 작성하지 않고도 잘못 라벨링된 샘플이나 불균형한 클래스를 쉽게 찾을 수 있습니다.
결론#
데이터를 올바르게 분할하고 정규화하며 증강하면 노이즈가 줄고 일반화 성능이 향상되어, 이미지의 원시 모음이 신뢰할 수 있는 학습 세트로 변환됩니다. 데이터셋 전처리가 완료되면 다음 단계는 모델을 학습하는 것입니다. 진행 중 궁금한 점이 있으면 Ultralytics GitHub 리포지토리 또는 Ultralytics Discord 서버의 커뮤니티에 질문하세요.
FAQ#
전처리를 수행하면 데이터가 깨끗하고 일관되며 학습에 최적화된 형식으로 변환됩니다. 원시 데이터의 노이즈, 불일치, 클래스 불균형을 해결하면 크기 조정, 정규화, 증강, 데이터셋 분할과 같은 단계가 계산 부하를 줄이고 모델 성능을 향상합니다. 전체 워크플로에서 전처리가 어떻게 적용되는지는 컴퓨터 비전 프로젝트 단계를 참조하세요.
데이터셋 YAML이 아니라 학습 인수를 통해 증강을 구성합니다. 각 변환의 확률과 강도를 설정하려면
fliplr,mosaic,hsv_h,degrees과 같은 인수를model.train()에 전달하거나 이에 상응하는 CLI 플래그를 사용합니다. 이러한 인수는 증강 설정에 정의되어 있으며 YOLO 데이터 증강 가이드에서 설명합니다. 포즈 데이터셋은 예외입니다. 해당 데이터셋의flip_idxkeypoint 매핑은 데이터셋 YAML에 있으며, 이 항목이 없으면 플립이 비활성화됩니다.가장 일반적인 두 기법은 픽셀을 0에서 1 사이로 재스케일링하는 min-max 스케일링과 평균 및 표준편차를 기준으로 재스케일링하는 z-점수 정규화입니다. YOLO26은 min-max 스케일링을 자동으로 적용하여 이미지를 RGB로 변환하고 픽셀 값을 255로 나눕니다. 따라서 수동 정규화 단계가 필요하지 않습니다. 기본적으로 z-점수 정규화은 적용하지 않습니다.
일반적으로 학습 70%, 검증 20%, 테스트 10%로 분할합니다. 세 분할 전체에서 클래스 분포를 유지하고, 분할 후 학습 세트에만 증강을 적용하여 데이터 누수를 방지합니다. scikit-learn 또는 TensorFlow와 같은 도구를 사용하면 분할을 효율적으로 처리할 수 있습니다. 데이터셋의 사전 준비 과정은 데이터 수집 및 주석 가이드를 참조하세요.
예.
imgsz인수가 수동 작업 없이 목표 입력 크기를 제어합니다. 고정 크기 정사각형 경로에서 검증과 추론은 종횡비를 유지하면서 지정된 형태에 맞게 이미지에 레터박스 처리를 적용합니다. 큰 이미지는 맞도록 축소되며, 스케일 업이 비활성화된 경우 작은 이미지는 확대되지 않습니다. 학습 중에는 기본 모자이크 증강이 네 개의 이미지를 타일 형태로 배치하고 자르는 방식으로 목표 크기를 맞춥니다. 직사각형 배치(rect=True)와multi_scale는 서로 다른 입력 형태를 사용합니다. 자세한 내용은 모델 학습 문서를 참조하세요.