YOLO Vision 2026:

Ray Tune 및 YOLO26을 사용한 효율적인 하이퍼파라미터 튜닝#

하이퍼파라미터 튜닝은 최적의 하이퍼파라미터 조합을 찾아 모델 성능을 극대화하는 데 필수적입니다. 이는 서로 다른 하이퍼파라미터로 실험을 실행하고 각 실험의 성능을 평가하는 과정을 포함합니다.

Ultralytics YOLO26 및 Ray Tune으로 튜닝 가속화#

Ultralytics YOLO26은(는) 초매개변수 튜닝을 위해 Ray Tune을 통합하여 YOLO26 모델 초매개변수 최적화를 간소화합니다. Ray Tune을 사용하면 고급 탐색 전략, 병렬 처리 및 조기 종료를 활용하여 튜닝 과정을 가속화할 수 있습니다.

Ray Tune#

Ray Tune hyperparameter optimization workflow

Ray Tune은(는) 효율성과 유연성을 위해 설계된 초매개변수 튜닝 라이브러리입니다. 다양한 탐색 전략, 병렬 처리 및 조기 종료 전략을 지원하며, Ultralytics YOLO26을 포함한 인기 machine learning 프레임워크와 원활하게 통합됩니다.

Weights & Biases와의 통합#

또한 YOLO26은 튜닝 과정을 모니터링하기 위해 Weights & Biases과의 선택적 통합을 지원합니다.

설치#

필수 패키지를 설치하려면 다음을 실행하십시오:

설치
# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"

# Optionally install W&B for logging
pip install wandb

사용법#

사용법
from ultralytics import YOLO

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

# Start tuning hyperparameters for YOLO26n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)

tune() 메서드 매개변수#

YOLO26의 tune() 메서드는 Ray Tune을 사용한 초매개변수 튜닝을 위한 사용하기 쉬운 인터페이스를 제공합니다. 이 메서드는 튜닝 과정을 사용자 정의할 수 있는 여러 인수를 허용합니다. 각 매개변수에 대한 자세한 설명은 다음과 같습니다:

파라미터유형설명기본값
datastr튜너를 실행할 데이터셋 설정 파일(YAML 형식)입니다. 이 파일은 훈련 및 validation data 경로와 기타 데이터셋 고유의 설정들을 지정해야 합니다.
spacedict, optionalRay Tune을 위한 하이퍼파라미터 탐색 공간을 정의하는 딕셔너리입니다. 각 키는 하이퍼파라미터 이름에 해당하며, 값은 튜닝 중에 탐색할 값의 범위를 지정합니다. 제공되지 않으면 YOLO26은 다양한 하이퍼파라미터가 포함된 기본 탐색 공간을 사용합니다.
grace_periodint, optionalRay Tune의 ASHA scheduler에서 epochs 단위의 유예 기간입니다. 스케줄러는 이 에폭 수 이전에는 어떠한 시도(trial)도 중단하지 않으므로, 조기 종료 여부를 결정하기 전에 모델이 최소한의 학습을 거칠 수 있도록 합니다.10
gpu_per_trialint, optional튜닝 중 실험당 할당할 GPU 수입니다. 이는 특히 멀티 GPU 환경에서 GPU 사용량을 관리하는 데 도움이 됩니다. 제공되지 않으면 튜너는 사용 가능한 모든 GPU를 사용합니다.None
iterationsint, optional튜닝 중에 실행할 최대 실험 횟수입니다. 이 파라미터는 테스트할 총 하이퍼파라미터 조합 수를 제어하여 튜닝 과정이 무한히 실행되지 않도록 합니다.10
search_algstr or Searcher, optional사용할 Ray Tune 탐색 전략입니다. Ray searcher 객체를 직접 전달하거나 optuna, hyperopt, bayesopt, bohb, hebo, nevergrad, zoopt, ax, random과 같은 지원되는 문자열을 사용할 수 있습니다. 문자열 기반 검색기는 기본 태스크 메트릭과 mode="max"을(를) 자동으로 사용합니다. 제공되지 않는 경우, Ray Tune은 기본 무작위 탐색 전략인 BasicVariantGenerator으로 대체됩니다.None
**train_argsdict, optional튜닝 중 train() 메서드에 전달할 추가 인수입니다. 이러한 인수에는 훈련 에폭 수, batch size 및 기타 훈련 관련 설정이 포함될 수 있습니다.{}

이러한 파라미터를 사용자화하여 특정 요구 사항과 사용 가능한 컴퓨팅 리소스에 맞게 하이퍼파라미터 최적화 과정을 미세 조정할 수 있습니다.

기본 탐색 공간 설명#

다음 표에는 Ray Tune을 사용한 YOLO26 초매개변수 튜닝의 기본 탐색 공간 매개변수가 나열되어 있습니다. 각 매개변수는 tune.uniform()에 의해 정의된 특정 값 범위를 가집니다.

파라미터범위설명
lr0tune.uniform(1e-5, 1e-2)최적화 중 단계 크기를 제어하는 초기 학습률입니다. 값이 높을수록 학습 속도는 빨라지지만 불안정성을 유발할 수 있습니다.
lrftune.uniform(0.01, 1.0)학습이 끝날 때 학습률이 얼마나 감소할지 결정하는 최종 학습률 계수입니다.
momentumtune.uniform(0.7, 0.98)학습을 가속화하고 지역 최솟값을 극복하는 데 도움이 되는 옵티마이저용 모멘텀 계수입니다.
weight_decaytune.uniform(0.0, 0.001)큰 가중치 값에 페널티를 주어 과적합을 방지하는 정규화 파라미터입니다.
warmup_epochstune.uniform(0.0, 5.0)초기 학습을 안정화하기 위해 학습률이 점진적으로 증가하는 에포크 수입니다.
warmup_momentumtune.uniform(0.0, 0.95)웜업 기간 동안 점진적으로 증가하는 초기 모멘텀 값입니다.
boxtune.uniform(1.0, 20.0)모델의 로컬라이제이션 정확도를 균형 있게 조정하는 바운딩 박스 손실 구성 요소의 가중치입니다.
clstune.uniform(0.1, 4.0)모델의 클래스 예측 정확도를 균형 있게 조정하는 분류 손실 구성 요소의 가중치입니다.
dfltune.uniform(0.4, 12.0)정확한 바운딩 박스 로컬라이제이션을 강조하는 Distribution Focal Loss 구성 요소의 가중치입니다.
hsv_htune.uniform(0.0, 0.1)모델의 일반화를 돕기 위해 색상 변동을 도입하는 색조 증강 범위입니다.
hsv_stune.uniform(0.0, 0.9)강건성을 개선하기 위해 색상 강도를 변화시키는 채도 증강 범위입니다.
hsv_vtune.uniform(0.0, 0.9)다양한 조명 조건에서 모델이 작동하도록 돕는 값(밝기) 증강 범위입니다.
degreestune.uniform(0.0, 45.0)회전된 객체 인식 능력을 향상시키는 도 단위의 회전 증강 범위입니다.
translatetune.uniform(0.0, 0.9)이미지를 수평 및 수직으로 이동시키는 변환 증강 범위입니다.
scaletune.uniform(0.0, 0.95)다양한 거리의 객체를 시뮬레이션하는 스케일링 증강 범위입니다.
sheartune.uniform(0.0, 10.0)원근 변화를 시뮬레이션하는 도 단위의 전단 증강 범위입니다.
perspectivetune.uniform(0.0, 0.001)3D 시점 변화를 시뮬레이션하는 원근 증강 범위입니다.
flipudtune.uniform(0.0, 1.0)데이터셋 다양성을 증가시키는 수직 뒤집기 증강 확률입니다.
fliplrtune.uniform(0.0, 1.0)대칭 객체에 유용한 수평 뒤집기 증강 확률입니다.
bgrtune.uniform(0.0, 1.0)색상 불변성에 도움이 되는 BGR 채널 교체 증강 확률입니다.
mosaictune.uniform(0.0, 1.0)4개의 이미지를 하나의 학습 샘플로 결합하는 모자이크 증강 확률입니다.
mixuptune.uniform(0.0, 1.0)두 이미지와 그 레이블을 혼합하는 Mixup 증강 확률입니다.
cutmixtune.uniform(0.0, 1.0)지역적 특징을 유지하면서 이미지 영역을 결합하는 Cutmix 증강 확률입니다.
copy_pastetune.uniform(0.0, 1.0)인스턴스 다양성을 높이기 위해 이미지 간 객체를 전송하는 Copy-paste 증강 확률입니다.
close_mosaictune.randint(0, 11)완료 전 학습을 안정화하기 위해 마지막 N 에포크에서 모자이크를 비활성화합니다.

사용자 지정 탐색 공간 예시#

이 예시에서는 Ray Tune과 YOLO26을 사용한 하이퍼파라미터 튜닝을 위해 사용자 지정 탐색 공간을 사용하는 방법을 설명합니다. 사용자 지정 탐색 공간을 제공하면 관심 있는 특정 하이퍼파라미터에 튜닝 과정을 집중할 수 있습니다.

사용법
from ray import tune

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo26n.pt")

# Run Ray Tune on the model
result_grid = model.tune(
    data="coco8.yaml",
    space={"lr0": tune.uniform(1e-5, 1e-2)},
    epochs=50,
    use_ray=True,
)

"yolo26n.pt" 사전 학습된 가중치를 사용하여 YOLO 모델을 생성합니다. 그런 다음 "coco8.yaml"로 데이터셋 구성을 지정하면서 tune() 메서드를 호출합니다. 키가 "lr0"이고 값이 tune.uniform(1e-5, 1e-2)인 딕셔너리를 사용하여 초기 학습률 lr0에 대한 커스텀 탐색 공간을 제공합니다. 마지막으로, 에폭 수와 같은 추가 학습 인자를 epochs=50(으)로 tune 메서드에 직접 전달합니다.

탐색 알고리즘 예시#

이름으로 Ray Tune 탐색 전략을 선택할 수 있습니다. 문자열 기반 검색 알고리즘의 경우, Ultralytics는 현재 태스크의 기본 최적화 메트릭과 mode="max"을(를) 자동으로 사용합니다. search_alg이(가) 제공되지 않으면, Ray Tune은 기본 무작위 탐색 전략인 BasicVariantGenerator을(를) 사용합니다.

`model.tune()`과 함께 문자열 `search_alg` 사용하기
from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo26n.pt")

result_grid = model.tune(
    data="coco8.yaml",
    epochs=50,
    search_alg="optuna",
    use_ray=True,
)

검색기의 샘플러를 사용자화하거나 지표 및 최적화 모드를 재정의해야 하는 경우, 문자열 대신 인스턴스화된 Ray Tune 검색 객체를 전달하십시오.

`model.tune()`과 함께 `OptunaSearch` 객체 사용하기
from ray.tune.search.optuna import OptunaSearch

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo26n.pt")

# Define a searcher
searcher = OptunaSearch(
    metric="metrics/mAP50-95(B)",
    mode="max",
)

result_grid = model.tune(
    data="coco8.yaml",
    epochs=50,
    search_alg=searcher,
    use_ray=True,
)

Ray Tune으로 중단된 하이퍼파라미터 튜닝 세션 재개하기#

resume=True을(를) 전달하여 중단된 Ray Tune 세션을 재개할 수 있습니다. 재개를 위해 runs/{task} 아래에서 Ray Tune이 사용하는 디렉토리 name을(를) 선택적으로 전달할 수 있습니다. 그렇지 않으면 마지막으로 중단된 세션이 재개됩니다. iterationsspace은(는) 다시 제공할 필요가 없지만, dataepochs을(를) 포함한 나머지 학습 인자는 다시 제공해야 합니다.

`model.tune()`과 함께 `resume=True` 사용하기
from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo26n.pt")

# Resume previous run
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, resume=True)

# Resume Ray Tune run with name 'tune_exp_2'
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, name="tune_exp_2", resume=True)

Ray Tune 결과 처리하기#

Ray Tune으로 하이퍼파라미터 튜닝 실험을 실행한 후 얻은 결과에 대해 다양한 분석을 수행할 수 있습니다. 이 가이드는 이러한 결과를 처리하고 분석하는 일반적인 워크플로우를 안내합니다.

디렉토리에서 튜닝 실험 결과 불러오기#

tuner.fit()을(를) 사용하여 튜닝 실험을 실행한 후, 디렉토리에서 결과를 로드할 수 있습니다. 이는 특히 초기 훈련 스크립트가 종료된 후에 분석을 수행하는 경우에 유용합니다.

experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")

restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()

기본 실험 수준 분석#

각 시행(trial)이 어떻게 수행되었는지 개요를 확인합니다. 시행 중 오류가 발생했는지 빠르게 점검할 수 있습니다.

if result_grid.errors:
    print("One or more trials failed!")
else:
    print("No errors!")

기본 시행 수준 분석#

개별 시행의 하이퍼파라미터 구성과 마지막으로 보고된 메트릭에 액세스합니다.

for i, result in enumerate(result_grid):
    print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")

시행에 대해 보고된 전체 메트릭 기록 플롯하기#

각 시행에 대해 보고된 메트릭 기록을 플롯하여 메트릭이 시간에 따라 어떻게 변화했는지 확인할 수 있습니다.

import matplotlib.pyplot as plt

for i, result in enumerate(result_grid):
    plt.plot(
        result.metrics_dataframe["training_iteration"],
        result.metrics_dataframe["mean_accuracy"],
        label=f"Trial {i}",
    )

plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()

요약#

이 가이드에서는 Ultralytics를 사용하여 Ray Tune으로 실행된 실험 결과를 분석하는 일반적인 워크플로우를 다루었습니다. 주요 단계에는 디렉토리에서 실험 결과 로드, 기본 실험 및 시행 수준 분석 수행, 메트릭 플롯이 포함됩니다.

초매개변수 튜닝 실험을 최대한 활용하려면 Ray Tune의 Analyze Results 문서 페이지를 살펴보세요.

FAQ#

Ray Tune을 사용하여 YOLO26 모델의 하이퍼파라미터를 튜닝하려면 어떻게 해야 합니까?#

Ray Tune을 사용하여 Ultralytics YOLO26 모델의 하이퍼파라미터를 튜닝하려면 다음 단계를 따르십시오:

  1. 필수 패키지 설치:

    pip install -U ultralytics "ray[tune]"
    pip install wandb # optional for logging
  2. YOLO26 모델 로드 및 튜닝 시작:

    from ultralytics import YOLO
    
    # Load a YOLO26 model
    model = YOLO("yolo26n.pt")
    
    # Start tuning with the COCO8 dataset
    result_grid = model.tune(data="coco8.yaml", use_ray=True)

이는 Ray Tune의 고급 탐색 전략과 병렬 처리를 활용하여 모델의 초매개변수를 효율적으로 최적화합니다. 자세한 내용은 Ray Tune documentation을(를) 참조하세요.

Ray Tune을 사용한 YOLO26 튜닝의 기본 하이퍼파라미터는 무엇입니까?#

Ultralytics YOLO26은 Ray Tune을 사용한 튜닝에 대해 다음 기본 하이퍼파라미터를 사용합니다:

파라미터값 범위설명
lr0tune.uniform(1e-5, 1e-2)초기 학습률
lrftune.uniform(0.01, 1.0)최종 학습률 계수
momentumtune.uniform(0.7, 0.98)모멘텀
weight_decaytune.uniform(0.0, 0.001)가중치 감쇠
warmup_epochstune.uniform(0.0, 5.0)웜업 에포크
boxtune.uniform(1.0, 20.0)BBox 손실 가중치
clstune.uniform(0.1, 4.0)클래스 손실 가중치
dfltune.uniform(0.4, 12.0)DFL 손실 가중치
hsv_htune.uniform(0.0, 0.1)색조 증강 범위
translatetune.uniform(0.0, 0.9)변환 증강 범위

이러한 초매개변수는 특정 요구사항에 맞게 사용자 정의할 수 있습니다. 전체 목록과 자세한 내용은 Hyperparameter Tuning 가이드를 참조하세요.

YOLO26 모델 튜닝에 Weights & Biases를 어떻게 통합할 수 있습니까?#

Ultralytics YOLO26 튜닝 프로세스에 Weights & Biases(W&B)를 통합하려면:

  1. W&B 설치:

    pip install wandb
  2. 튜닝 스크립트 수정:

    import wandb
    
    from ultralytics import YOLO
    
    wandb.init(project="YOLO-Tuning", entity="your-entity")
    
    # Load YOLO model
    model = YOLO("yolo26n.pt")
    
    # Tune hyperparameters
    result_grid = model.tune(data="coco8.yaml", use_ray=True)

이 설정을 통해 튜닝 프로세스를 모니터링하고, 하이퍼파라미터 구성을 추적하며, W&B에서 결과를 시각화할 수 있습니다.

YOLO26으로 하이퍼파라미터 최적화를 수행할 때 왜 Ray Tune을 사용해야 합니까?#

Ray Tune은 하이퍼파라미터 최적화를 위한 수많은 이점을 제공합니다:

  • 고급 탐색 전략: 효율적인 매개변수 검색을 위해 Bayesian Optimization 및 HyperOpt와 같은 알고리즘을 활용합니다.
  • 병렬 처리: 여러 시행의 병렬 실행을 지원하여 튜닝 프로세스 속도를 크게 향상시킵니다.
  • 조기 종료: ASHA와 같은 전략을 사용하여 성능이 낮은 시행을 조기에 종료하고 컴퓨팅 리소스를 절약합니다.

Ray Tune은 Ultralytics YOLO26과 원활하게 통합되어 초매개변수를 효과적으로 튜닝할 수 있는 사용하기 쉬운 인터페이스를 제공합니다. 시작하려면 Hyperparameter Tuning 가이드를 확인하세요.

YOLO26 하이퍼파라미터 튜닝을 위한 사용자 정의 검색 공간을 어떻게 정의할 수 있습니까?#

Ray Tune을 사용하여 YOLO26 하이퍼파라미터 튜닝을 위한 사용자 정의 검색 공간을 정의하려면:

from ray import tune

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-2), "momentum": tune.uniform(0.7, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)

이는 튜닝 과정에서 탐색할 초기 학습률 및 모멘텀과 같은 초매개변수의 범위를 사용자 정의합니다. 고급 설정에 대해서는 Custom Search Space Example 섹션을 참조하세요.

댓글