Ultralytics YOLO27:
Get Started

Albumentations를 사용해 YOLO26 학습용 데이터셋 개선하기#

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

Albumentations를 사용하면 기하학적 변환과 색상 조정 같은 기법으로 YOLO26 학습 데이터를 보강할 수 있습니다. 이 글에서는 Albumentations가 데이터 증강 프로세스를 개선하고 YOLO26 프로젝트의 효과를 더욱 높이는 방법을 살펴보겠습니다. 시작하겠습니다!

이미지 증강을 위한 Albumentations#

Albumentations는 2018년 6월에 만들어진 오픈 소스 이미지 증강 라이브러리입니다. 컴퓨터 비전에서 이미지 증강 프로세스를 간소화하고 가속하도록 설계되었습니다. 성능과 유연성을 고려해 개발되었으며, 회전 및 반전 같은 단순한 변환부터 밝기 및 대비 변경 같은 복잡한 조정까지 다양한 증강 기법을 지원합니다. Albumentations는 이미지 분류, 객체 탐지 및 세그멘테이션과 같은 작업을 위해 풍부하고 다양한 데이터셋을 생성하도록 지원합니다.

Albumentations를 사용하면 이미지, 세그멘테이션 마스크, 바운딩 박스 및 키포인트에 증강을 쉽게 적용하고 데이터셋의 모든 요소가 함께 변환되도록 할 수 있습니다. Albumentations는 PyTorch 및 TensorFlow와 같은 인기 있는 딥러닝 프레임워크와 원활하게 연동되어 다양한 프로젝트에서 사용할 수 있습니다.

또한 Albumentations는 소규모 데이터셋이나 대규모 컴퓨터 비전 작업을 다룰 때 모두 증강 도구로 유용합니다. 빠르고 효율적인 처리를 보장해 데이터 준비에 드는 시간을 줄여 줍니다. 동시에 모델 성능을 향상해 실제 애플리케이션에서 모델의 효과를 높이는 데 도움이 됩니다.

Albumentations의 주요 기능#

Albumentations는 다양한 컴퓨터 비전 애플리케이션에서 복잡한 이미지 증강을 간소화하는 유용한 기능을 제공합니다. 주요 기능은 다음과 같습니다:

  • 다양한 변환: Albumentations는 70가지가 넘는 변환을 제공하며, 여기에는 기하학적 변경(예: 회전, 반전), 색상 조정(예: 밝기, 대비), 노이즈 추가(예: 가우시안 노이즈)가 포함됩니다. 다양한 옵션을 통해 매우 다양하고 견고한 학습 데이터셋을 만들 수 있습니다.

Albumentations augmentation examples

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

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

다양한 증강 수준 개요

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

Vision AI 프로젝트에 Albumentations를 사용해야 하는 이유#

이미지 증강 측면에서 Albumentations는 컴퓨터 비전 작업을 위한 신뢰할 수 있는 도구로 두각을 나타냅니다. Vision AI 프로젝트에 Albumentations를 고려해야 하는 주요 이유는 다음과 같습니다:

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

  • 철저한 버그 테스트: 증강 파이프라인의 버그는 입력 데이터를 눈에 띄지 않게 손상시킬 수 있으며, 이런 문제는 대개 발견되지 않은 채 모델 성능을 저하시킵니다. Albumentations는 철저한 테스트 스위트로 이러한 문제를 해결해 개발 초기 단계에서 버그를 찾아낼 수 있도록 합니다.

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

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

Albumentations의 기능과 활용 방법을 살펴보았으니, 이제 YOLO26 모델 학습용 데이터를 증강하는 방법을 알아보겠습니다. Albumentations는 Ultralytics 학습 모드에 직접 통합되므로 설정이 간편하며, Albumentations 패키지가 설치되어 있으면 자동으로 적용됩니다.

설치#

YOLO26에서 Albumentations를 사용하려면 먼저 필요한 패키지가 설치되어 있는지 확인하세요. Albumentations가 설치되어 있지 않으면 학습 중 증강이 적용되지 않습니다. 설정을 마치면 Albumentations가 통합되어 모델을 자동으로 개선하는 증강 데이터셋을 학습에 사용할 수 있습니다.

설치
# Install the required packages
pip install albumentations ultralytics

설치 절차에 대한 자세한 지침과 모범 사례는 Ultralytics 설치 가이드를 참조하세요. YOLO26에 필요한 패키지를 설치하는 중 문제가 발생하면 해결 방법과 팁을 확인할 수 있는 일반적인 문제 가이드를 참조하세요.

이 페이지의 사용자 지정 변환 예제를 사용하려면 Albumentations 1.4.22 이상과 Python 3.9 이상이 필요합니다.

사용법#

필요한 패키지를 설치한 후에는 YOLO26에서 Albumentations를 사용할 수 있습니다. YOLO26을 학습하면 Albumentations와의 통합을 통해 증강 세트가 자동으로 적용되어 모델 성능을 쉽게 향상할 수 있습니다.

사용법
from ultralytics import YOLO

# 사전 학습된 모델 불러오기
model = YOLO("yolo26n.pt")

# 기본 증강을 사용해 모델 학습
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

미디언 블러#

Albumentations의 MedianBlur 변환은 이미지에 미디언 블러 효과를 적용하며, 에지를 보존하면서 노이즈를 줄이는 데 특히 유용합니다. 일반적인 블러 방식과 달리 MedianBlur는 미디언 필터를 사용해 에지 주변의 선명도를 유지하면서 솔트 앤 페퍼 노이즈를 효과적으로 제거합니다.

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

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

  • p: 미디언 블러를 적용할 확률을 설정합니다. 여기서 p=0.01이므로 각 이미지에 변환이 적용될 확률은 1%입니다. 이 낮은 확률은 미디언 블러를 드물게 사용하도록 하며, 노이즈가 줄고 에지가 보존된 이미지를 가끔 보여 줌으로써 모델의 일반화 성능 향상에 도움이 됩니다.

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

Albumentations MedianBlur augmentation

그레이스케일#

Albumentations의 ToGray 변환은 이미지를 그레이스케일로 변환해 단일 채널 형식으로 축소하고, 필요에 따라 이 채널을 복제해 지정된 출력 채널 수에 맞춥니다. 단순한 평균 계산부터 대비와 밝기를 사실적으로 인식하도록 하는 고급 기법까지 다양한 방법으로 그레이스케일 밝기를 조정할 수 있습니다.

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

  • num_output_channels: 출력 이미지의 채널 수를 설정합니다. 값이 1보다 크면 단일 그레이스케일 채널을 복제해 다중 채널 그레이스케일 이미지를 만듭니다. 기본값은 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에서는 Python API를 통해 augmentations 매개변수에 사용자 지정 Albumentations 변환을 전달할 수 있습니다. 이 섹션의 예제를 사용하려면 Albumentations 1.4.22 이상이 필요합니다.

사용자 지정 변환 정의 방법#

직접 Albumentations 변환 목록을 정의하여 학습 함수에 전달할 수 있습니다. 이렇게 하면 기본 Albumentations 변환이 대체되지만, 다른 모든 YOLO 증강(예: hsv_h, degrees, mosaic 등)은 계속 활성화됩니다.

다음은 고급 변환을 사용하는 예제입니다.

import albumentations as A

from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo26n.pt")

# 다양한 증강 기법으로 사용자 지정 변환 정의
custom_transforms = [
    # 블러 변형
    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,
    ),
    # 노이즈 변형
    A.OneOf(
        [
            A.GaussNoise(std_range=(0.0124, 0.0277), p=1.0),
            A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
        ],
        p=0.2,
    ),
    # 색상 및 대비 조정
    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),
    # 가림 현상 시뮬레이션
    A.CoarseDropout(num_holes_range=(1, 8), hole_height_range=(8, 32), hole_width_range=(8, 32), fill=0, p=0.2),
]

# 사용자 지정 변환으로 학습
results = model.train(
    data="coco8.yaml",
    epochs=100,
    imgsz=640,
    augmentations=custom_transforms,
)

중요 고려 사항#

사용자 지정 Albumentations 변환을 사용할 때는 다음 사항에 유의하세요.

  • 구성: Python API를 통해 사용자 지정 변환 객체를 생성하세요. 직렬화된 변환은 CLI 또는 YAML 구성 파일을 통해 전달할 수도 있으며, 학습을 재개할 때도 사용할 수 있습니다.
  • 기본 변환 대체: 사용자 지정 변환은 기본 Albumentations 변환을 완전히 대체합니다. 다른 YOLO 증강은 계속 활성화됩니다.
  • 레이블 처리: A.OneOf 또는 A.Compose에 중첩된 변환을 포함한 공간 변환은 이미지와 함께 바운딩 박스, 폴리곤, 키포인트, 깊이 또는 시맨틱 마스크를 이동합니다. A.RandomGridShuffle는 폴리곤 또는 키포인트의 위상 구조를 보존할 수 없으므로 세그멘테이션, 포즈, OBB 샘플에서 오류가 발생합니다.
  • 성능: 일부 변환은 계산 비용이 많이 듭니다. 학습 속도를 모니터링하고 그에 따라 조정하세요.
  • 작업 호환성: 사용자 지정 Albumentations 변환은 객체 탐지, 세그멘테이션, 시맨틱 세그멘테이션, 깊이, 포즈, OBB 학습에서 작동하지만, 다른 증강 파이프라인을 사용하는 분류에서는 작동하지 않습니다.

사용자 지정 변환의 활용 사례#

애플리케이션마다 서로 다른 증강 전략이 효과적입니다.

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

사용 가능한 변환과 매개변수의 전체 목록은 Albumentations 문서를 참조하세요.

YOLO26에서 사용자 지정 Albumentations 변환을 사용하는 방법과 모범 사례에 대한 자세한 예제는 YOLO 데이터 증강 가이드를 참조하세요.

Albumentations에 대해 더 알아보기#

Albumentations에 대해 더 자세히 알아보고 싶다면, 심층적인 안내와 예제를 제공하는 다음 자료를 확인하세요.

핵심 요약#

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

또한 다른 Ultralytics YOLO26 통합에 대해 자세히 알아보려면 통합 가이드 페이지를 방문하세요. 여기에서 유용한 자료와 인사이트를 확인할 수 있습니다.

자주 묻는 질문#

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

    # 필수 패키지 설치
    # !pip install albumentations ultralytics
    from ultralytics import YOLO
    
    # 자동 증강을 사용하여 모델 로드 및 학습
    model = YOLO("yolo26n.pt")
    model.train(data="coco8.yaml", epochs=100)

    이 통합에는 블러, 미디언 블러, 그레이스케일 변환, CLAHE 등의 최적화된 증강이 포함되며, 모델 성능을 높이도록 확률이 세심하게 조정되어 있습니다.

  • Albumentations는 다음과 같은 여러 이유로 두드러집니다.

    1. 성능: OpenCV와 NumPy를 기반으로 구축되었으며 SIMD 최적화를 통해 뛰어난 속도를 제공합니다.
    2. 유연성: 픽셀 수준, 공간 수준, 혼합 수준 증강 전반에 걸쳐 70가지 이상의 변환을 지원합니다.
    3. 호환성: PyTorch 및 TensorFlow와 같은 널리 사용되는 프레임워크와 원활하게 작동합니다.
    4. 신뢰성: 광범위한 테스트 스위트를 통해 감지되지 않는 데이터 손상을 방지합니다.
    5. 사용 편의성: 모든 유형의 증강을 위한 단일 통합 API를 제공합니다.
  • Albumentations는 다음을 포함한 다양한 컴퓨터 비전 작업의 성능을 향상합니다.

    다양한 증강 옵션을 제공하는 이 라이브러리는 강건한 모델 성능이 필요한 비전 작업에 유용합니다. Ultralytics YOLO26에서 분류 학습은 자체 torchvision 기반 증강 파이프라인을 사용하며 Albumentations 변환을 적용하지 않습니다.

댓글