Model Soups가 Ultralytics YOLO 가중치를 평균화하여 정확도와 견고성을 어떻게 향상시키는지 알아보세요. 지연 시간을 늘리지 않고 성능을 높이는 방법을 배워보세요.
모델 수프(Model Soups)는 동일한 사전 학습된 기본 모델을 서로 다른 하이퍼파라미터로 미세 조정하여 얻은 여러 신경망의 가중치를 평균화하여, 더 견고한 단일 모델을 생성하는 기계 학습 기법을 말합니다. 이 접근 방식을 통해 개발자는 추론 시 계산 비용을 늘리지 않고도 전체적인 정확도와 일반화 능력을 향상시킬 수 있습니다.
모델을 미세 조정할 때, 실무자들은 일반적으로 광범위한 하이퍼파라미터 튜닝 스윕을 수행하여 성능이 가장 우수한 구성을 찾습니다. 전통적으로 가장 우수한 단일 모델을 선택하고 나머지는 버립니다. 그러나 '모델 수프(model soup)'를 생성하면 스윕 과정에서 모든 모델이 학습한 다양한 특징을 활용할 수 있습니다. 모델 가중치를 직접 평균화하여 생성된 네트워크는 종종 단일 최우수 모델보다 우수한 성능을 보이며, 과적합을 최소화하면서 각 모델의 장점을 효과적으로 결합합니다. 이 과정은 매우 효율적이며 Ultralytics 같은 협업 환경 내에서 손쉽게 관리할 수 있습니다.
모델 수프는 계산 자원이 제한적이지만 높은 정확도와 견고성이 요구되는 상황에서 매우 효과적이다.
딥러닝 최적화의 광범위한 분야를 탐구하려면, 모델 수프(Model Soups)를 유사한 기법들과 명확히 구분하는 것이 중요합니다:
일관된 모델 수프를 생성하려면 여러 개의 훈련된 모델에 대한 PyTorch 사전(dictionary) 에 접근하여 해당 텐서들의 수학적 평균을 구해야 합니다. 아래는 PyTorch 기본으로 지원하는 Ultralytics 워크플로를 사용하여 이를 구현하는 방법을 보여주는 간결한 예시입니다.
import torch
# Load the PyTorch state dictionaries from two fine-tuned YOLO26 models
model1 = torch.load("yolo26_run1.pt")["model"].state_dict()
model2 = torch.load("yolo26_run2.pt")["model"].state_dict()
# Create a uniform model soup by averaging the model weights
soup_dict = {key: (model1[key] + model2[key]) / 2.0 for key in model1.keys()}
# The resulting soup_dict can now be loaded into a new YOLO26 instance
이 기술을 활용하면 컴퓨터 비전 실무자들은 최신 엣지 우선 AI 아키텍처에 필요한 배포 속도를 저해하지 않으면서도 제로샷 학습 능력과 전반적인 견고성 같은 성능 지표를 손쉽게 향상시킬 수 있습니다.
미래의 머신러닝 여정을 시작하세요