Albumentations를 사용하여 YOLO26 학습을 위한 데이터셋 강화하기

컴퓨터 비전 모델을 구축할 때, 학습 데이터의 품질과 다양성은 모델 성능에 큰 영향을 미칩니다. Albumentations는 실제 환경 시나리오에 대한 모델의 적응력을 향상시킬 수 있는 광범위한 이미지 변환을 빠르고 유연하며 효율적으로 적용하는 방법을 제공합니다. Ultralytics YOLO26과 쉽게 통합되며 객체 탐지, 세그멘테이션, 분류 작업을 위한 강력한 데이터셋을 구축하도록 지원합니다.

Albumentations를 사용하면 기하학적 변환 및 색상 조정과 같은 기술로 YOLO26 학습 데이터를 강화할 수 있습니다. 이 기사에서는 Albumentations가 데이터 증강 프로세스를 어떻게 개선하고 YOLO26 프로젝트의 효과를 높일 수 있는지 살펴보겠습니다. 시작해 봅시다!

이미지 증강을 위한 Albumentations

Albumentations2018년 6월에 생성된 오픈 소스 이미지 증강 라이브러리입니다. 컴퓨터 비전에서의 이미지 증강 프로세스를 단순화하고 가속화하도록 설계되었습니다. 성능과 유연성을 고려하여 회전 및 뒤집기와 같은 간단한 변환부터 밝기 및 대비 변경과 같은 복잡한 조정에 이르기까지 다양하고 광범위한 증강 기술을 지원합니다. Albumentations는 개발자가 이미지 분류, 객체 탐지, 세그멘테이션과 같은 작업을 위해 풍부하고 다양한 데이터셋을 생성할 수 있도록 돕습니다.

Albumentations를 사용하여 이미지, 세그멘테이션 마스크, 바운딩 박스키포인트에 증강을 쉽게 적용할 수 있으며, 데이터셋의 모든 요소가 함께 변환되도록 보장합니다. PyTorchTensorFlow와 같은 인기 있는 딥러닝 프레임워크와 원활하게 작동하여 광범위한 프로젝트에서 접근 가능합니다.

또한 Albumentations는 소규모 데이터셋을 다루든 대규모 컴퓨터 비전 작업을 처리하든 상관없이 증강을 위한 훌륭한 옵션입니다. 빠르고 효율적인 처리를 보장하여 데이터 준비에 소요되는 시간을 단축합니다. 동시에 모델 성능을 개선하여 실제 애플리케이션에서 모델을 더욱 효과적으로 만듭니다.

Albumentations의 주요 기능

Albumentations는 광범위한 컴퓨터 비전 애플리케이션을 위해 복잡한 이미지 증강을 단순화하는 많은 유용한 기능을 제공합니다. 주요 기능은 다음과 같습니다:

  • 광범위한 변환: Albumentations는 기하학적 변경(예: 회전, 뒤집기), 색상 조정(예: 밝기, 대비), 노이즈 추가(예: 가우시안 노이즈)를 포함하여 70가지 이상의 다양한 변환을 제공합니다. 다양한 옵션을 보유함으로써 매우 다양하고 강력한 학습 데이터셋을 생성할 수 있습니다.

Albumentations augmentation examples

  • 고성능 최적화: OpenCV 및 NumPy를 기반으로 구축된 Albumentations는 SIMD(Single Instruction, Multiple Data)와 같은 고급 최적화 기술을 사용하여 여러 데이터 포인트를 동시에 처리함으로써 처리 속도를 높입니다. 대규모 데이터셋을 빠르게 처리하여 이미지 증강을 위해 사용 가능한 가장 빠른 옵션 중 하나가 되었습니다.

  • 3단계 증강: Albumentations는 픽셀 수준 변환, 공간 수준 변환, 혼합 수준 변환의 세 가지 증강 수준을 지원합니다. 픽셀 수준 변환은 마스크, 바운딩 박스 또는 키포인트를 변경하지 않고 입력 이미지에만 영향을 줍니다. 반면, 이미지와 마스크 및 바운딩 박스와 같은 요소는 공간 수준 변환을 사용하여 함께 변환됩니다. 또한 혼합 수준 변환은 여러 이미지를 하나로 결합하여 데이터를 증강하는 독특한 방법입니다.

다양한 증강 수준에 대한 개요

  • 벤치마킹 결과: 벤치마킹과 관련하여 Albumentations는 특히 대규모 데이터셋에서 다른 라이브러리보다 일관되게 뛰어난 성능을 보입니다.

비전 AI 프로젝트에 Albumentations를 사용해야 하는 이유는 무엇입니까?

이미지 증강과 관련하여 Albumentations는 컴퓨터 비전 작업을 위한 신뢰할 수 있는 도구로 돋보입니다. 비전 AI 프로젝트에 사용을 고려해야 하는 몇 가지 주요 이유는 다음과 같습니다:

  • 사용하기 쉬운 API: Albumentations는 이미지, 마스크, 바운딩 박스 및 키포인트에 광범위한 증강을 적용하기 위한 단일하고 직관적인 API를 제공합니다. 다양한 데이터셋에 쉽게 적응하도록 설계되어 데이터 준비를 더 간단하고 효율적으로 만듭니다.

  • 철저한 버그 테스트: 증강 파이프라인의 버그는 입력 데이터를 조용히 손상시킬 수 있으며, 종종 눈에 띄지 않다가 결과적으로 모델 성능을 저하시킵니다. Albumentations는 개발 초기 단계에서 버그를 잡는 데 도움이 되는 철저한 테스트 제품군으로 이 문제를 해결합니다.

  • 확장성: Albumentations는 새로운 증강을 쉽게 추가하고 내장된 변환과 함께 단일 인터페이스를 통해 컴퓨터 비전 파이프라인에서 사용할 수 있습니다.

YOLO26 학습을 위해 데이터를 증강하는 방법

Albumentations가 무엇이며 무엇을 할 수 있는지 다루었으니, 이제 YOLO26 모델 학습을 위해 데이터를 증강하는 방법을 살펴보겠습니다. Albumentations 패키지가 설치되어 있으면 Ultralytics 학습 모드에 직접 통합되어 자동으로 적용되므로 설정이 간편합니다.

설치

YOLO26과 함께 Albumentations를 사용하려면 먼저 필요한 패키지가 설치되어 있는지 확인하십시오. Albumentations가 설치되어 있지 않으면 학습 중에 증강이 적용되지 않습니다. 일단 설정되면 Albumentations가 자동으로 모델을 향상시키도록 통합된 상태에서 학습을 위한 증강된 데이터셋을 생성할 준비가 됩니다.

설치
# Install the required packages
pip install albumentations ultralytics

설치 프로세스와 관련된 자세한 지침 및 모범 사례는 Ultralytics 설치 가이드를 확인하십시오. YOLO26을 위한 필수 패키지를 설치하는 동안 문제가 발생하면 일반적인 문제 해결 가이드에서 솔루션과 팁을 참조하십시오.

사용법

필수 패키지를 설치한 후에는 YOLO26과 함께 Albumentations를 사용할 준비가 된 것입니다. YOLO26을 학습시키면 Albumentations와의 통합을 통해 일련의 증강이 자동으로 적용되어 모델 성능을 쉽게 향상시킬 수 있습니다.

사용법
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train the model with default augmentations
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

다음으로, 학습 중에 적용되는 구체적인 증강을 더 자세히 살펴보겠습니다.

블러

Albumentations의 Blur 변환은 작은 사각형 영역 또는 커널 내의 픽셀 값을 평균화하여 이미지에 간단한 흐림 효과를 적용합니다. 이는 OpenCV cv2.blur 함수를 사용하여 수행되며 이미지의 노이즈를 줄이는 데 도움이 되지만 이미지 세부 정보를 약간 감소시키기도 합니다.

이 통합에 사용되는 매개변수와 값은 다음과 같습니다:

  • blur_limit: 흐림 효과의 크기 범위를 제어합니다. 기본 범위는 (3, 7)이며, 이는 흐림을 위한 커널 크기가 3에서 7 픽셀 사이에서 변할 수 있음을 의미하고 흐림을 중앙에 유지하기 위해 홀수만 허용됩니다.

  • p: 흐림을 적용할 확률입니다. 이 통합에서 p=0.01이므로 각 이미지에 이 흐림이 적용될 확률은 1%입니다. 낮은 확률로 가끔 흐림 효과가 발생하여 모델이 이미지를 과도하게 흐리게 하지 않으면서 일반화하도록 돕는 변형을 도입합니다.

Albumentations Blur augmentation result

중앙값 흐림 (Median Blur)

Albumentations의 MedianBlur 변환은 이미지에 중앙값 흐림 효과를 적용하며, 이는 가장자리를 보존하면서 노이즈를 줄이는 데 특히 유용합니다. 일반적인 흐림 방법과 달리 MedianBlur는 중앙값 필터를 사용하며, 이는 가장자리 주위의 선명도를 유지하면서 솔트 앤 페퍼 노이즈를 제거하는 데 효과적입니다.

이 통합에 사용되는 매개변수와 값은 다음과 같습니다:

  • blur_limit: 이 매개변수는 흐림 커널의 최대 크기를 제어합니다. 이 통합에서 기본값은 (3, 7) 범위로, 흐림 커널 크기는 3에서 7 픽셀 사이에서 무작위로 선택되며 적절한 정렬을 보장하기 위해 홀수 값만 허용됩니다.

  • p: 중앙값 흐림을 적용할 확률을 설정합니다. 여기서는 p=0.01이므로 각 이미지에 변환이 적용될 확률은 1%입니다. 이 낮은 확률은 중앙값 흐림이 드물게 사용되도록 보장하며, 모델이 가끔 노이즈가 감소되고 가장자리가 보존된 이미지를 보게 함으로써 일반화를 돕습니다.

아래 이미지는 이미지에 적용된 이 증강의 예를 보여줍니다.

Albumentations MedianBlur augmentation

그레이스케일

Albumentations의 ToGray 변환은 이미지를 그레이스케일로 변환하여 단일 채널 형식으로 줄이고 필요에 따라 이 채널을 복제하여 지정된 출력 채널 수와 일치시킵니다. 그레이스케일 밝기를 계산하는 방법을 조정하기 위해 간단한 평균화부터 대비 및 밝기에 대한 사실적인 인식을 위한 고급 기술까지 다양한 방법을 사용할 수 있습니다.

이 통합에 사용되는 매개변수와 값은 다음과 같습니다:

  • num_output_channels: 출력 이미지의 채널 수를 설정합니다. 이 값이 1보다 크면 단일 그레이스케일 채널이 복제되어 다채널 그레이스케일 이미지를 만듭니다. 기본적으로 3으로 설정되어 3개의 동일한 채널을 가진 그레이스케일 이미지를 제공합니다.

  • method: 그레이스케일 변환 방법을 정의합니다. 기본 방법인 "weighted_average"는 인간의 인식과 밀접하게 일치하는 공식(0.299R + 0.587G + 0.114B)을 적용하여 자연스러운 그레이스케일 효과를 제공합니다. "from_lab", "desaturation", "average", "max", "pca"와 같은 다른 옵션은 속도, 밝기 강조 또는 세부 정보 보존에 대한 다양한 요구에 따라 그레이스케일 이미지를 만드는 대체 방법을 제공합니다.

  • p: 그레이스케일 변환이 적용되는 빈도를 제어합니다. p=0.01이면 각 이미지를 그레이스케일로 변환할 확률은 1%이므로, 모델이 더 잘 일반화할 수 있도록 컬러 이미지와 그레이스케일 이미지를 섞어서 사용할 수 있습니다.

아래 이미지는 적용된 이 그레이스케일 변환의 예를 보여줍니다.

Albumentations grayscale conversion

대비 제한 적응형 히스토그램 평활화 (CLAHE)

Albumentations의 CLAHE 변환은 전체 이미지가 아닌 국소 영역(타일)에서 히스토그램을 평활화하여 이미지 대비를 향상시키는 기술인 CLAHE를 적용합니다. CLAHE는 표준 히스토그램 평활화에서 발생할 수 있는 과도하게 증폭된 대비를 피하면서 균형 잡힌 향상 효과를 생성하며, 특히 초기 대비가 낮은 영역에서 효과적입니다.

이 통합에 사용되는 매개변수와 값은 다음과 같습니다:

  • clip_limit: 대비 향상 범위를 제어합니다. (1, 4)의 기본 범위로 설정되며, 각 타일에서 허용되는 최대 대비를 결정합니다. 높은 값은 더 많은 대비를 위해 사용되지만 노이즈를 유발할 수도 있습니다.

  • tile_grid_size: 일반적으로 (행, 열)로 타일 그리드 크기를 정의합니다. 기본값은 (8, 8)이며, 이는 이미지가 8x8 그리드로 나뉜다는 것을 의미합니다. 작은 타일 크기는 더 국소적인 조정을 제공하며, 더 큰 타일 크기는 전체 평활화에 가까운 효과를 만듭니다.

  • p: CLAHE를 적용할 확률입니다. 여기서는 p=0.01이 1%의 확률로만 향상 효과를 도입하여 학습 이미지의 가끔 변형을 위해 대비 조정이 드물게 적용되도록 합니다.

아래 이미지는 적용된 CLAHE 변환의 예를 보여줍니다.

Albumentations CLAHE contrast enhancement

사용자 정의 Albumentations 변환 사용

기본 Albumentations 통합이 강력한 증강 세트를 제공하지만, 특정 사용 사례에 맞게 변환을 사용자 정의하고 싶을 수 있습니다. Ultralytics YOLO26을 사용하면 augmentations 매개변수를 사용하여 Python API를 통해 사용자 정의 Albumentations 변환을 쉽게 전달할 수 있습니다.

사용자 정의 변환을 정의하는 방법

자신만의 Albumentations 변환 목록을 정의하고 학습 함수에 전달할 수 있습니다. 이는 다른 모든 YOLO 증강(예: hsv_h, degrees, mosaic 등)을 활성 상태로 유지하면서 기본 Albumentations 변환을 대체합니다.

더 고급 변환을 사용하는 예는 다음과 같습니다:

import albumentations as A

from ultralytics import YOLO

# Load model
model = YOLO("yolo26n.pt")

# Define custom transforms with various augmentation techniques
custom_transforms = [
    # Blur variations
    A.OneOf(
        [
            A.MotionBlur(blur_limit=7, p=1.0),
            A.MedianBlur(blur_limit=7, p=1.0),
            A.GaussianBlur(blur_limit=7, p=1.0),
        ],
        p=0.3,
    ),
    # Noise variations
    A.OneOf(
        [
            A.GaussNoise(var_limit=(10.0, 50.0), p=1.0),
            A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
        ],
        p=0.2,
    ),
    # Color and contrast adjustments
    A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
    # Simulate occlusions
    A.CoarseDropout(
        max_holes=8, max_height=32, max_width=32, min_holes=1, min_height=8, min_width=8, fill_value=0, p=0.2
    ),
]

# Train with custom transforms
results = model.train(
    data="coco8.yaml",
    epochs=100,
    imgsz=640,
    augmentations=custom_transforms,
)

중요 고려 사항

사용자 정의 Albumentations 변환을 사용할 때 다음 사항을 염두에 두십시오:

  • Python API 전용: 사용자 정의 변환은 CLI나 YAML 구성 파일이 아닌 Python API를 통해서만 전달할 수 있습니다.
  • 기본값 대체: 사용자 정의 변환은 기본 Albumentations 변환을 완전히 대체합니다. 다른 YOLO 증강은 활성 상태로 유지됩니다.
  • 바운딩 박스 처리: Ultralytics는 대부분의 변환에 대해 바운딩 박스 조정을 자동으로 처리하지만, 복잡한 공간 변환은 추가 테스트가 필요할 수 있습니다.
  • 성능: 일부 변환은 계산 비용이 많이 듭니다. 학습 속도를 모니터링하고 그에 따라 조정하십시오.
  • 작업 호환성: 사용자 정의 Albumentations 변환은 탐지 및 세그멘테이션 작업에는 작동하지만 분류 작업에는 작동하지 않습니다(분류는 다른 증강 파이프라인을 사용합니다).

사용자 정의 변환의 사용 사례

애플리케이션마다 다른 증강 전략이 도움이 됩니다:

  • 의료 영상: 탄성 변형, 그리드 왜곡 및 특수 노이즈 패턴 사용
  • 항공/위성 영상: 다양한 고도, 기상 조건 및 조명 각도를 시뮬레이션하는 변환 적용
  • 저조도 시나리오: 까다로운 조명 환경에서 강력한 모델을 학습시키기 위해 노이즈 추가 및 밝기 조정 강조
  • 산업 검사: 품질 관리 애플리케이션을 위해 텍스처 변형 및 시뮬레이션된 결함 추가

사용 가능한 변환 및 매개변수의 전체 목록은 Albumentations 문서를 방문하십시오.

YOLO26과 함께 사용자 정의 Albumentations 변환을 사용하는 방법에 대한 자세한 예제와 모범 사례는 YOLO 데이터 증강 가이드를 참조하십시오.

Albumentations에 대해 계속 학습하기

Albumentations에 대해 더 알고 싶다면 심층적인 지침과 예제를 위해 다음 리소스를 확인하십시오:

핵심 요약

이 가이드에서는 이미지 증강을 위한 훌륭한 Python 라이브러리인 Albumentations의 주요 측면을 살펴보았습니다. 광범위한 변환, 최적화된 성능, 그리고 차기 YOLO26 프로젝트에서 이를 사용하는 방법을 논의했습니다.

또한 다른 Ultralytics YOLO26 통합에 대해 더 알고 싶으시면 통합 가이드 페이지를 방문하십시오. 그곳에서 귀중한 리소스와 통찰력을 찾을 수 있을 것입니다.

FAQ

데이터 증강 향상을 위해 Albumentations를 YOLO26과 어떻게 통합할 수 있습니까?

Albumentations는 YOLO26과 원활하게 통합되며 패키지가 설치되어 있으면 학습 중에 자동으로 적용됩니다. 시작하는 방법은 다음과 같습니다:

# Install required packages
# !pip install albumentations ultralytics
from ultralytics import YOLO

# Load and train model with automatic augmentations
model = YOLO("yolo26n.pt")
model.train(data="coco8.yaml", epochs=100)

이 통합에는 모델 성능을 향상시키기 위해 정밀하게 튜닝된 확률로 흐림, 중앙값 흐림, 그레이스케일 변환 및 CLAHE와 같은 최적화된 증강이 포함되어 있습니다.

다른 증강 라이브러리보다 Albumentations를 사용할 때의 주요 이점은 무엇입니까?

Albumentations는 여러 가지 이유로 돋보입니다:

  1. 성능: 뛰어난 속도를 위해 SIMD 최적화를 갖춘 OpenCV 및 NumPy 기반
  2. 유연성: 픽셀 수준, 공간 수준, 혼합 수준 증강에 걸쳐 70개 이상의 변환 지원
  3. 호환성: PyTorchTensorFlow와 같은 인기 프레임워크와 원활하게 작동
  4. 신뢰성: 광범위한 테스트 제품군으로 조용한 데이터 손상 방지
  5. 사용 편의성: 모든 증강 유형에 대한 단일 통합 API

Albumentations 증강의 이점을 얻을 수 있는 컴퓨터 비전 작업 유형은 무엇입니까?

Albumentations는 다음을 포함한 다양한 컴퓨터 비전 작업을 향상시킵니다:

  • 객체 탐지: 조명, 스케일 및 방향 변화에 대한 모델 강건성 향상
  • 인스턴스 세그멘테이션: 다양한 변환을 통해 마스크 예측 정확도 향상
  • 분류: 색상 및 기하학적 증강으로 모델 일반화 증가
  • 포즈 추정: 모델이 다양한 시점 및 조명 조건에 적응하도록 지원

이 라이브러리의 다양한 증강 옵션은 강력한 모델 성능이 필요한 모든 비전 작업에 귀중한 도구가 됩니다.

댓글