YOLO Vision 2026:

주석이 달린 컴퓨터 비전 데이터를 위한 데이터 전처리 기법#

데이터 전처리는 원본의 어노테이션된 이미지를 computer vision 모델이 학습을 잘 수행하는 데 필요한 깨끗하고 일관된 입력 데이터로 변환합니다. Ultralytics YOLO26을 사용하면 RGB 변환, [0, 1] 크기로의 스케일링, 크기 조정 같은 핵심 픽셀 연산이 학습 파이프라인 내에서 자동으로 실행되므로, 사용자가 직접 해야 할 일은 데이터셋을 올바르게 분할하고, 클래스 균형을 맞추며, 증강 기법을 선택하는 것입니다. 본 가이드에서는 크기 조정, 정규화, 데이터셋 분할, 데이터 증강, 탐색적 데이터 분석(EDA) 등 필수적인 기법들을 다룹니다.



Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀

이 단계는 project's goals 정의와 collected and annotated data 수집 및 어노테이션을 마친 후에 진행되며, computer vision project workflow의 초기 단계에 해당합니다.

전처리가 중요한 이유#

전처리는 데이터 형식을 최적화하여 연산 부하를 줄이고 모델 성능을 향상시킵니다. 전처리는 원본 데이터에서 흔히 발생하는 다음 세 가지 문제를 해결합니다:

  • 노이즈: 데이터 내의 무관하거나 무작위적인 변동.
  • 비일관성(Inconsistency): 이미지 크기, 형식 및 품질의 차이.
  • 불균형: 데이터셋 전반에 걸친 클래스나 카테고리의 불균등한 분포.

전처리 기법#

주요 기법으로는 리사이징, 정규화, 데이터셋 분할, 증강이 있습니다. YOLO26의 경우 처음 두 가지는 자동으로 수행되며, 분할과 증강은 사용자의 선택이 가장 중요한 단계입니다.

이미지 크기 조정#

많은 모델이 일정한 입력 크기를 요구하므로, 리사이징을 통해 이미지를 균일하게 만들고 연산 복잡도를 줄입니다. 두 가지 일반적인 보간법(interpolation method)은 다음과 같습니다:

  • 쌍선형 보간법(Bilinear Interpolation): 가장 가까운 네 픽셀의 가중 평균을 사용하여 픽셀 값을 부드럽게 만듭니다.
  • 최근접 이웃(Nearest Neighbor): 평균을 내지 않고 가장 가까운 픽셀 값을 복사합니다. 속도는 빠르지만 이미지가 더 거칠게 보일 수 있습니다.

OpenCV 및 PIL (Pillow)과 같은 라이브러리가 이러한 기능을 제공하지만, YOLO26을 사용할 때는 대개 수동으로 크기를 조절할 필요가 없습니다. 모델 학습 중의 imgsz 인수가 이를 처리합니다. 640과 같은 값으로 설정하면, YOLO는 종횡비를 유지하면서 가장 긴 차원이 640픽셀이 되도록 각 이미지의 크기를 조절한 다음, 짧은 쪽을 (기본값 회색, 값 114) 패딩하여 정사각형 640 × 640 입력을 만듭니다.

픽셀 값 정규화#

정규화는 픽셀 값을 표준 범위로 스케일링하여 모델이 학습 중에 더 빠르게 수렴하도록 돕습니다. 두 가지 일반적인 기법은 다음과 같습니다:

  • Min-Max 스케일링: 픽셀 값을 0에서 1 사이의 범위로 조정합니다.
  • Z-Score 정규화: 평균과 표준 편차를 기준으로 픽셀 값을 조정합니다.

YOLO26은 전처리 파이프라인의 일부로 정규화를 자동으로 처리합니다. 이미지를 RGB로 변환하고 255로 나누어(최소-최대 스케일링) 픽셀 값을 [0, 1] 범위로 스케일링합니다. YOLO는 기본적으로 ImageNet 스타일의 평균/표준편차(z-score) 정규화를 적용하지 않으므로, 수동 정규화 단계를 거칠 필요가 없습니다.

데이터셋 분할#

데이터를 학습, 검증, 테스트 세트로 분할하면 보지 못한 데이터로 모델을 평가하고 일반화 성능을 측정할 수 있습니다. 일반적인 분할 비율은 학습용 70%, 검증용 20%, 테스트용 10%입니다. scikit-learn이나 TensorFlow 같은 도구를 사용하면 이를 쉽게 수행할 수 있습니다.

분할 시 다음 사항을 유의하십시오:

  • 클래스 분포 유지: 각 클래스가 학습, 검증, 테스트 세트에 비례적으로 포함되도록 합니다.
  • 클래스 균형: 불균형한 데이터셋의 경우, 학습 세트 내에서만 소수 클래스를 오버샘플링하거나 다수 클래스를 언더샘플링하는 것을 고려하십시오.
데이터 누수(data leakage) 방지

증강이나 기타 전처리를 적용하기 전에 데이터셋을 분할하고, 해당 변환은 학습 세트에만 적용하십시오. 분할 전에 증강을 적용하면 검증이나 테스트 이미지의 정보가 학습 과정에 영향을 미쳐, 실제 환경에서 성능이 저하되는 왜곡된 높은 점수를 유발할 수 있습니다.

데이터셋 증강#

Data augmentation은 기존 이미지의 수정된 버전을 생성하여 데이터셋의 크기를 인위적으로 늘립니다. 이는 overfitting을 줄이고 일반화 성능을 향상시키며, 다음과 같은 여러 이점을 제공합니다:

  • 더 강력한 모델: 조명, 방향, 스케일의 변화는 모델을 실제 환경의 왜곡에 더 강하게 만듭니다.
  • 비용 효율성: 새로운 데이터를 수집하고 라벨링하지 않고도 학습 세트를 확장할 수 있습니다.
  • 데이터의 효율적 활용: 주석이 달린 모든 이미지가 여러 학습 변형을 생성합니다.

Examples of data augmentation techniques including flips, rotations, scaling, and color adjustments applied to a sample image

YOLO26에서 데이터 증강은 model.train()에 전달되는 학습 인수 또는 이에 상응하는 CLI 플래그를 통해 제어되며, 경로, 클래스 이름, 분할 등의 데이터셋 메타데이터를 정의하는 데이터셋 YAML 파일을 수정하는 방식이 아닙니다. 내장된 데이터 증강 기능에는 다음이 포함됩니다:

  • 모자이크, 믹스업 및 컷믹스 (mosaic, mixup, cutmix): 여러 이미지를 하나의 학습 샘플로 결합합니다.
  • 뒤집기 (fliplr, flipud): 이미지를 수평 또는 수직으로 미러링합니다.
  • 기하학적 변환 (degrees, translate, scale, shear, perspective): 이미지 회전, 이동, 확대/축소 및 와프(warp)를 수행합니다.
  • HSV 색상 지터 (hsv_h, hsv_s, hsv_v): 색조, 채도, 명도를 변경합니다.
  • 복사-붙여넣기 (copy_paste): 분할을 위해 이미지 간에 객체를 붙여넣습니다.
학습 시 증강 강도 설정
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)

증강 인자 및 기본값의 전체 목록은 augmentation settings 레퍼런스와 전용 YOLO data augmentation guide를 참조하세요. albumentations 패키지가 설치된 경우, YOLO는 Albumentations 기반의 내장 증강 기능도 자동으로 활성화합니다.

사례 연구: 차량 검출을 위한 전처리#

bounding boxes와 레이블로 어노테이션된 이미지를 시작으로, YOLO26을 사용하여 교통 이미지 속 차량을 감지하고 분류하는 프로젝트를 고려해 보세요. 각 전처리 결정 사항은 다음과 같습니다:

  • 크기 조정: 수동 작업 없음 — YOLO26은 학습 중에 imgsz(으)로 크기를 조정합니다.
  • 정규화: 수동 작업 없음 — YOLO26은 픽셀 값을 [0, 1](으)로 자동 스케일링합니다.
  • 분할: 데이터셋을 학습 70%, 검증 20%, 테스트 10%로 나누고 분할 전반에 걸쳐 클래스 분포를 일정하게 유지합니다.
  • 증강: 교통 상황에 적합한 학습 인자 설정 — 예를 들어 방향 불변성을 위해 fliplr, 주야간 조명을 위해 hsv_v, 다양한 객체 밀도를 위해 mosaic(을)를 설정합니다.

이러한 결정이 완료되면, 데이터셋은 탐색적 데이터 분석(EDA)을 수행할 준비가 된 것입니다.

탐색적 데이터 분석(EDA)#

EDA는 통계와 시각화를 활용하여 데이터의 패턴과 분포를 파악하고, 학습 전에 클래스 불균형이나 이상치와 같은 문제를 발견하도록 돕습니다.

통계적 EDA 기술#

통계적 EDA는 기본 지표(평균, 중앙값, 표준편차, 범위)를 계산하는 것으로 시작하며, 이를 통해 데이터셋 품질을 빠르게 파악하고 초기 이상 현상을 발견할 수 있습니다.

시각적 EDA 기술#

시각화는 요약 통계에서 놓치기 쉬운 패턴(클래스 불균형, 이상치 등)을 드러냅니다. 주요 도구는 다음과 같습니다:

  • 히스토그램 및 박스 플롯: 픽셀 값 분포를 보여주고 강도나 특징 분포의 이상치를 표시합니다.
  • 막대 차트: 클래스별 예시 개수를 비교하여 클래스 불균형을 드러냅니다.
  • 산점도: 이미지 특징이나 주석 간의 관계를 탐색합니다.
  • 히트맵: 픽셀 강도 분포나 이미지 전반의 주석 공간 분포를 시각화합니다.

EDA를 위한 Ultralytics 플랫폼#

코드 작성 없는(no-code) EDA 접근법을 위해 데이터셋을 Ultralytics Platform에 업로드하세요. 데이터셋의 Charts 탭은 분할 분포, 상위 클래스 개수, 이미지 너비/높이 히스토그램, 어노테이션 위치 및 이미지 치수의 2D 히트맵과 같은 주요 EDA 시각화를 자동으로 생성합니다. Images 탭을 사용하면 어노테이션 오버레이가 포함된 그리드, 컴팩트 또는 테이블 뷰로 데이터를 탐색할 수 있으므로, 코드 작성 없이도 잘못 레이블된 예시나 불균형한 클래스를 쉽게 찾아낼 수 있습니다.

결론#

적절하게 분할, 정규화 및 증강된 데이터는 노이즈를 줄이고 일반화 성능을 향상시켜 원본 이미지 모음을 신뢰할 수 있는 학습 세트로 변환합니다. 데이터셋 전처리가 완료되면 다음 단계는 train your model입니다. 진행 중에 질문이 생기면 Ultralytics GitHub repository 또는 Ultralytics Discord server의 커뮤니티에 문의하세요.

FAQ#

  • 전처리는 데이터가 깨끗하고 일관되며 학습에 최적화된 형식인지 확인해 줍니다. 원본 데이터의 노이즈, 불일치, 클래스 불균형을 해결함으로써 크기 조정, 정규화, 증강, 데이터셋 분할과 같은 단계는 연산 부하를 줄이고 모델 성능을 향상시킵니다. 이것이 더 넓은 워크플로에 어떻게 부합하는지에 대해서는 steps of a computer vision project를 참조하세요.

  • 데이터셋 YAML이 아닌 학습 인자를 통해 증강을 구성하세요. fliplr, mosaic, hsv_h, degrees과 같은 인자를 model.train()(또는 이에 상응하는 CLI 플래그)에 전달하여 각 변환의 확률과 강도를 설정합니다. 이들은 augmentation settings에 정의되어 있으며 YOLO data augmentation guide에 설명되어 있습니다.

  • 가장 일반적인 두 가지 기법은 min-max 스케일링(픽셀을 0에서 1 사이 범위로 재조정)과 z-score 정규화(평균과 표준편차 기준 재조정)입니다. YOLO26은 이미지를 RGB로 변환하고 픽셀 값을 255로 나누는 min-max 스케일링을 자동으로 적용하므로 수동 정규화 단계가 필요하지 않습니다. 기본적으로 z-score 정규화는 적용되지 않습니다.

  • 일반적인 관행은 학습용 70%, 검증용 20%, 테스트용 10%입니다. 세 가지 분할 모두에서 클래스 분포를 유지하고, 분할 후에 학습 세트에만 증강을 적용하여 data leakage를 방지하세요. scikit-learn 또는 TensorFlow 같은 도구가 분할을 효율적으로 처리합니다. 업스트림 데이터셋 준비에 대해서는 data collection and annotation guide를 참조하세요.

  • 네. imgsz 인자는 학습 및 추론 중에 가장 큰 차원이 지정된 크기(예: 640픽셀)와 일치하도록 가로세로비를 유지하면서 이미지 크기를 조정한 다음, 짧은 쪽 변에 패딩을 추가합니다. 직접 이미지 크기를 조절할 필요는 없습니다. 자세한 내용은 model training 문서를 참조하세요.

댓글