Link to this section머신러닝 모범 사례 및 모델 학습을 위한 팁#
Link to this section소개#
컴퓨터 비전 프로젝트를 수행할 때 가장 중요한 단계 중 하나는 모델 학습입니다. 이 단계에 도달하기 전에 목표를 정의하고 데이터를 수집 및 주석 처리해야 합니다. 데이터 전처리를 통해 데이터가 깨끗하고 일관된 상태인지 확인한 후, 모델 학습 단계로 넘어갈 수 있습니다.
Watch: Model Training Tips | How to Handle Large Datasets | Batch Size, GPU Utilization and Mixed Precision
그렇다면 모델 학습이란 무엇일까요? 모델 학습은 모델이 시각적 패턴을 인식하고 데이터를 기반으로 예측하도록 가르치는 과정입니다. 이는 애플리케이션의 성능과 정확도에 직접적인 영향을 미칩니다. 이 가이드에서는 컴퓨터 비전 모델을 효과적으로 학습시키는 데 도움이 되는 모범 사례, 최적화 기법 및 문제 해결 팁을 다룹니다.
Link to this section머신러닝 모델을 학습시키는 방법#
컴퓨터 비전 모델은 내부 파라미터를 조정하여 오차를 최소화하는 방식으로 학습됩니다. 처음에 모델에는 대량의 라벨링된 이미지 세트가 제공됩니다. 모델은 이미지에 무엇이 있는지 예측하며, 이 예측값을 실제 라벨이나 내용과 비교하여 오차를 계산합니다. 이러한 오차는 모델의 예측값이 실제 값과 얼마나 차이가 나는지를 보여줍니다.
학습 중에 모델은 반복적으로 예측을 수행하고 오차를 계산하며 역전파(backpropagation)라는 과정을 통해 파라미터를 업데이트합니다. 이 과정에서 모델은 오차를 줄이기 위해 내부 파라미터(가중치 및 편향)를 조정합니다. 이 주기를 여러 번 반복함으로써 모델은 점진적으로 정확도를 향상시킵니다. 시간이 지남에 따라 모델은 모양, 색상, 질감과 같은 복잡한 패턴을 인식하는 법을 배우게 됩니다.
This learning process makes it possible for the computer vision model to perform various tasks, including object detection, instance segmentation, semantic segmentation, and image classification. The ultimate goal is to create a model that can generalize its learning to new, unseen images so that it can accurately understand visual data in real-world applications.
이제 모델을 학습시킬 때 내부적으로 어떤 일이 일어나는지 알았으니, 모델 학습 시 고려해야 할 사항들을 살펴보겠습니다.
Link to this section대규모 데이터셋 학습#
대규모 데이터셋을 사용하여 모델을 학습시킬 계획이라면 고려해야 할 몇 가지 측면이 있습니다. 예를 들어 배치 크기를 조정하거나, GPU 활용도를 제어하거나, 다중 스케일 학습을 사용하는 등의 작업을 할 수 있습니다. 이러한 각 옵션을 자세히 살펴보겠습니다.
Link to this section배치 크기 및 GPU 활용도#
대규모 데이터셋으로 모델을 학습시킬 때는 GPU를 효율적으로 활용하는 것이 핵심입니다. 배치 크기는 중요한 요소입니다. 배치 크기는 머신러닝 모델이 한 번의 학습 반복에서 처리하는 데이터 샘플의 수입니다. GPU가 지원하는 최대 배치 크기를 사용하면 GPU의 성능을 최대한 활용하고 모델 학습 시간을 단축할 수 있습니다. 하지만 GPU 메모리가 부족해지지 않도록 주의해야 합니다. 메모리 오류가 발생하면 모델이 원활하게 학습될 때까지 배치 크기를 점진적으로 줄이십시오.
Watch: How to Use Batch Inference with Ultralytics YOLO26 | Speed Up Object Detection in Python 🎉
With respect to YOLO26, you can set the batch parameter in the training configuration to match your GPU capacity. Also, setting batch=-1 in your training script will automatically determine the batch size that can be efficiently processed based on your device's capabilities. By fine-tuning the batch size, you can make the most of your GPU resources and improve the overall training process.
Link to this section부분 집합(Subset) 학습#
부분 집합 학습은 더 큰 데이터셋을 대표하는 더 작은 데이터 세트로 모델을 학습시키는 스마트한 전략입니다. 특히 초기 모델 개발 및 테스트 중에 시간과 리소스를 절약할 수 있습니다. 시간이 부족하거나 다양한 모델 구성을 실험하는 경우 부분 집합 학습이 좋은 선택입니다.
YOLO26의 경우 fraction 파라미터를 사용하여 부분 집합 학습을 쉽게 구현할 수 있습니다. 이 파라미터를 사용하면 학습에 사용할 데이터셋의 비율을 지정할 수 있습니다. 예를 들어 fraction=0.1로 설정하면 데이터의 10%로 모델을 학습시킵니다. 이 기법은 전체 데이터셋으로 학습을 수행하기 전에 빠른 반복과 모델 튜닝을 위해 사용할 수 있습니다. 부분 집합 학습은 빠른 진행을 돕고 잠재적인 문제를 조기에 파악할 수 있게 합니다.
Link to this section다중 스케일(Multi-scale) 학습#
다중 스케일 학습은 다양한 크기의 이미지로 학습시켜 모델의 일반화 능력을 향상시키는 기법입니다. 모델은 서로 다른 스케일과 거리에서 객체를 감지하는 법을 배우고 더욱 강력해집니다.
예를 들어 YOLO26을 학습시킬 때 scale 파라미터를 설정하여 다중 스케일 학습을 활성화할 수 있습니다. 이 파라미터는 학습 이미지의 크기를 지정된 계수만큼 조정하여 다양한 거리의 객체를 시뮬레이션합니다. 예를 들어 scale=0.5로 설정하면 학습 중에 무작위로 학습 이미지를 0.5배에서 1.5배 사이의 계수로 확대/축소합니다. 이 파라미터를 구성하면 모델이 다양한 이미지 스케일을 경험하게 되어 객체 크기와 시나리오 전반에서 탐지 성능을 향상시킬 수 있습니다.
Ultralytics also supports image-size multi-scale training via the multi_scale parameter. Unlike scale, which zooms images and then pads/crops back to imgsz, multi_scale changes imgsz itself each batch (rounded to the model stride). For example, with imgsz=640 and multi_scale=0.25, the training size is sampled from 480 up to 800 in stride steps (e.g., 480, 512, 544, ..., 800), while multi_scale=0.0 keeps a fixed size.
Link to this section캐싱(Caching)#
캐싱은 머신러닝 모델 학습 효율을 높이기 위한 중요한 기법입니다. 전처리된 이미지를 메모리에 저장함으로써 캐싱은 GPU가 디스크에서 데이터가 로드되기를 기다리는 시간을 줄여줍니다. 모델은 디스크 I/O 작업으로 인한 지연 없이 지속적으로 데이터를 수신할 수 있습니다.
YOLO26 학습 시 cache 파라미터를 사용하여 캐싱을 제어할 수 있습니다:
cache=True: 데이터셋 이미지를 RAM에 저장하여 가장 빠른 액세스 속도를 제공하지만, 메모리 사용량이 증가합니다.cache='disk': 이미지를 디스크에 저장합니다. RAM보다 느리지만 매번 데이터를 새로 로드하는 것보다는 빠릅니다.cache=False: 캐싱을 비활성화하며 디스크 I/O에 전적으로 의존하므로 가장 느린 옵션입니다.
Link to this section혼합 정밀도(Mixed Precision) 학습#
혼합 정밀도 학습은 16비트(FP16) 및 32비트(FP32) 부동 소수점 유형을 모두 사용합니다. FP16은 더 빠른 계산을 위해 사용하고, 필요한 곳에서는 FP32를 사용하여 정밀도를 유지함으로써 두 방식의 장점을 모두 활용합니다. 신경망(neural network)의 대부분 작업은 더 빠른 계산과 낮은 메모리 사용량의 이점을 위해 FP16으로 수행됩니다. 그러나 가중치 업데이트 단계에서 정확도를 보장하기 위해 모델 가중치의 마스터 복사본은 FP32로 유지됩니다. 이를 통해 동일한 하드웨어 제약 조건 내에서 더 큰 모델이나 더 큰 배치 크기를 처리할 수 있습니다.
To implement mixed precision training, you'll need to modify your training scripts and ensure your hardware (like GPUs) supports it. Many modern deep learning frameworks, such as PyTorch and TensorFlow, offer built-in support for mixed precision.
YOLO26으로 작업할 때 혼합 정밀도 학습은 매우 간단합니다. 학습 설정에서 amp 플래그를 사용할 수 있습니다. amp=True로 설정하면 자동 혼합 정밀도(AMP) 학습이 활성화됩니다. 혼합 정밀도 학습은 모델 학습 과정을 최적화하는 간단하면서도 효과적인 방법입니다.
Link to this section사전 학습된 가중치#
사전 학습된 가중치를 사용하는 것은 모델 학습 과정을 가속화하는 스마트한 방법입니다. 사전 학습된 가중치는 대규모 데이터셋에서 이미 학습된 모델에서 가져온 것이므로 모델에 유리한 출발점을 제공합니다. 전이 학습(transfer learning)은 사전 학습된 모델을 새롭고 관련된 작업에 맞게 조정합니다. 사전 학습된 모델을 미세 조정(fine-tuning)한다는 것은 이러한 가중치로 시작하여 특정 데이터셋에 대해 학습을 계속하는 것을 의미합니다. 이 학습 방법은 모델이 기본적인 특징을 이미 잘 이해하고 시작하기 때문에 더 빠른 학습 시간과 종종 더 나은 성능을 제공합니다.
pretrained 파라미터를 사용하면 YOLO26에서 전이 학습을 쉽게 수행할 수 있습니다. pretrained=True로 설정하면 기본 사전 학습 가중치가 사용되며, 또는 사용자 정의 사전 학습 모델에 대한 경로를 지정할 수도 있습니다. 사전 학습된 가중치와 전이 학습을 효과적으로 사용하면 모델의 성능을 향상시키고 학습 비용을 절감할 수 있습니다.
Link to this section대규모 데이터셋을 다룰 때 고려해야 할 다른 기법들#
대규모 데이터셋을 다룰 때 고려해야 할 몇 가지 다른 기법이 있습니다:
- 학습률(Learning Rate) 스케줄러: 학습률 스케줄러를 구현하면 학습 중에 학습률이 동적으로 조정됩니다. 잘 조정된 학습률은 모델이 최소값을 지나치는 것을 방지하고 안정성을 개선할 수 있습니다. YOLO26을 학습할 때
lrf파라미터는 최종 학습률을 초기 학습률의 일부로 설정하여 학습률 스케줄링을 관리하는 데 도움을 줍니다. - 분산 학습(Distributed Training): 대규모 데이터셋을 처리할 때 분산 학습은 판도를 바꿀 수 있습니다. 학습 워크로드를 여러 GPU나 머신에 분산시켜 학습 시간을 단축할 수 있습니다. 이 접근 방식은 상당한 계산 리소스가 필요한 엔터프라이즈급 프로젝트에 특히 유용합니다.
Link to this section학습할 에폭(Epochs) 수#
모델을 학습할 때 에폭(epoch)은 전체 학습 데이터셋을 한 번 완전히 통과하는 것을 의미합니다. 한 에폭 동안 모델은 학습 세트의 각 예제를 한 번씩 처리하고 학습 알고리즘을 기반으로 파라미터를 업데이트합니다. 모델이 시간이 지남에 따라 파라미터를 학습하고 개선하려면 일반적으로 여러 에폭이 필요합니다.
흔히 제기되는 질문 중 하나는 모델을 몇 에폭 동안 학습시킬지 결정하는 방법입니다. 좋은 시작점은 300 에폭입니다. 모델이 조기에 과적합되면 에폭 수를 줄일 수 있습니다. 300 에폭 후에도 과적합(overfitting)이 발생하지 않으면 학습을 600, 1200 에폭 이상으로 연장할 수 있습니다.
하지만 이상적인 에폭 수는 데이터셋의 크기와 프로젝트 목표에 따라 달라질 수 있습니다. 데이터셋이 크면 모델이 효과적으로 학습하기 위해 더 많은 에폭이 필요할 수 있고, 데이터셋이 작으면 과적합을 피하기 위해 더 적은 에폭이 필요할 수 있습니다. YOLO26의 경우 학습 스크립트에서 epochs 파라미터를 설정할 수 있습니다.
Link to this section조기 종료(Early Stopping)#
조기 종료는 모델 학습 최적화를 위한 가치 있는 기법입니다. 검증 성능을 모니터링함으로써 모델 개선이 멈출 때 학습을 중단할 수 있습니다. 계산 리소스를 절약하고 과적합을 방지할 수 있습니다.
이 과정에는 학습을 중단하기 전에 검증 지표의 개선을 기다릴 에폭 수를 결정하는 인내심(patience) 파라미터를 설정하는 과정이 포함됩니다. 이 에폭 수 내에서 모델 성능이 개선되지 않으면 시간과 리소스 낭비를 방지하기 위해 학습이 중단됩니다.
YOLO26의 경우 학습 설정에서 patience 파라미터를 설정하여 조기 종료를 활성화할 수 있습니다. 예를 들어 patience=5는 5 에폭 연속으로 검증 지표에 개선이 없으면 학습이 중단된다는 것을 의미합니다. 이 방법을 사용하면 과도한 계산 없이 학습 과정의 효율성을 유지하고 최적의 성능을 달성할 수 있습니다.
Link to this section클라우드 학습과 로컬 학습 간의 선택#
모델을 학습시키는 방법에는 클라우드 학습과 로컬 학습이라는 두 가지 옵션이 있습니다.
클라우드 학습은 확장성과 강력한 하드웨어를 제공하며 대규모 데이터셋과 복잡한 모델을 처리하는 데 이상적입니다. Google Cloud, AWS, Azure와 같은 플랫폼은 고성능 GPU와 TPU에 대한 온디맨드 액세스를 제공하여 학습 시간을 단축하고 더 큰 모델 실험을 가능하게 합니다. 그러나 클라우드 학습은 특히 장기간 사용할 경우 비용이 많이 들 수 있으며, 데이터 전송이 비용과 지연 시간을 증가시킬 수 있습니다.
로컬 학습은 더 큰 제어와 사용자 정의를 제공하며 특정 요구 사항에 환경을 맞추고 지속적인 클라우드 비용을 피할 수 있게 합니다. 장기 프로젝트에는 더 경제적일 수 있으며 데이터가 온프레미스에 유지되므로 더 안전합니다. 그러나 로컬 하드웨어는 리소스 제한이 있을 수 있고 유지 관리가 필요하므로 대규모 모델의 경우 학습 시간이 길어질 수 있습니다.
Link to this section옵티마이저 선택#
옵티마이저는 모델이 얼마나 잘 수행되고 있는지를 측정하는 손실 함수(loss function)를 최소화하기 위해 신경망의 가중치를 조정하는 알고리즘입니다. 쉽게 말해 옵티마이저는 오차를 줄이기 위해 파라미터를 조정함으로써 모델 학습을 돕습니다. 올바른 옵티마이저 선택은 모델이 얼마나 빠르고 정확하게 학습하는지에 직접적인 영향을 미칩니다.
모델 성능을 개선하기 위해 옵티마이저 파라미터를 미세 조정할 수도 있습니다. 학습률을 조정하면 파라미터를 업데이트할 때 단계의 크기가 설정됩니다. 안정성을 위해 적당한 학습률로 시작하여 시간이 지남에 따라 점진적으로 낮추면 장기적인 학습을 개선할 수 있습니다. 또한 모멘텀(momentum)을 설정하면 과거 업데이트가 현재 업데이트에 미치는 영향 정도를 결정할 수 있습니다. 모멘텀의 일반적인 값은 약 0.9입니다. 이는 대체로 좋은 균형을 제공합니다.
Link to this section일반적인 옵티마이저#
옵티마이저마다 다양한 장단점이 있습니다. 몇 가지 일반적인 옵티마이저를 간단히 살펴보겠습니다.
-
SGD(Stochastic Gradient Descent):
- 파라미터에 대한 손실 함수의 그래디언트를 사용하여 모델 파라미터를 업데이트합니다.
- 단순하고 효율적이지만 수렴이 느릴 수 있으며 지역 최솟값(local minima)에 빠질 위험이 있습니다.
-
Adam(Adaptive Moment Estimation):
- 모멘텀을 사용하는 SGD와 RMSProp의 장점을 결합했습니다.
- 그래디언트의 1차 및 2차 모멘트 추정치를 기반으로 각 파라미터의 학습률을 조정합니다.
- 노이즈가 많은 데이터와 희소 그래디언트에 적합합니다.
- 효율적이며 일반적으로 튜닝이 덜 필요하므로 YOLO26에 권장되는 옵티마이저입니다.
-
RMSProp(Root Mean Square Propagation):
- 최근 그래디언트 크기의 이동 평균으로 그래디언트를 나누어 각 파라미터의 학습률을 조정합니다.
- 그래디언트 소실 문제를 해결하는 데 도움이 되며 순환 신경망(recurrent neural network)에 효과적입니다.
-
MuSGD (Muon + SGD 하이브리드):
- 대규모 학습에서 더 나은 안정성을 위해 SGD 스타일의 업데이트와 Muon 기반 동작을 결합했습니다.
- SGD와 유사한 일반화 성능을 원하지만 기본 SGD보다 더 부드러운 수렴이 필요할 때 좋은 선택입니다.
- YOLO26 학습 레시피에 특히 유용합니다. 확신이 서지 않으면
optimizer=auto로 시작하여 데이터셋에서 MuSGD와 비교해 보십시오.
YOLO26의 경우 optimizer 파라미터를 통해 SGD, MuSGD, Adam, AdamW, NAdam, RAdam, RMSProp 등 다양한 옵티마이저 중에서 선택할 수 있으며, 모델 구성에 따라 자동으로 선택되도록 auto로 설정할 수도 있습니다.
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDLink to this section커뮤니티와 연결#
컴퓨터 비전 애호가 커뮤니티의 일원이 되면 문제를 해결하고 더 빨리 배우는 데 도움이 됩니다. 연결하고, 도움을 받고, 아이디어를 공유할 수 있는 몇 가지 방법을 소개합니다.
Link to this section커뮤니티 리소스#
- GitHub Issues: YOLO26 GitHub 저장소를 방문하여 Issues 탭을 통해 질문을 하고, 버그를 보고하고, 새로운 기능을 제안해 보십시오. 커뮤니티와 메인테이너들은 매우 활발하게 활동하고 있으며 도움을 줄 준비가 되어 있습니다.
- Ultralytics Discord 서버: Ultralytics Discord 서버에 가입하여 다른 사용자 및 개발자와 채팅하고, 지원을 받고, 경험을 공유하십시오.
Link to this section공식 문서#
- Ultralytics YOLO26 문서: 다양한 컴퓨터 비전 프로젝트에 대한 상세 가이드와 유용한 팁을 보려면 공식 YOLO26 문서를 확인하십시오.
이 리소스들을 활용하면 당면한 과제를 해결하고 컴퓨터 비전 커뮤니티의 최신 트렌드와 모범 사례를 유지하는 데 도움이 될 것입니다.
Link to this section핵심 요약#
컴퓨터 비전 모델 학습에는 좋은 사례를 따르고, 전략을 최적화하며, 발생하는 문제를 해결하는 과정이 포함됩니다. 배치 크기 조정, 혼합 정밀도(precision) 학습, 사전 학습된 가중치로 시작하기와 같은 기법은 모델 성능을 높이고 학습 속도를 높일 수 있습니다. 부분 집합 학습 및 조기 종료와 같은 방법은 시간과 리소스를 절약하는 데 도움이 됩니다. 커뮤니티와 계속 소통하고 새로운 트렌드를 유지하는 것은 모델 학습 기술을 지속적으로 향상시키는 데 도움이 될 것입니다.
Link to this sectionFAQ#
Link to this sectionUltralytics YOLO로 대규모 데이터셋을 학습할 때 GPU 활용도를 어떻게 개선할 수 있나요?#
GPU 활용도를 높이려면 학습 구성에서 batch 매개변수를 GPU에서 지원하는 최대 크기로 설정하십시오. 이는 GPU의 성능을 최대한 활용하여 학습 시간을 단축해 줍니다. 메모리 오류가 발생하면 학습이 원활하게 진행될 때까지 배치 크기를 점진적으로 줄이십시오. YOLO26의 경우, 학습 스크립트에서 batch=-1로 설정하면 효율적인 처리를 위한 최적의 배치 크기가 자동으로 결정됩니다. 자세한 내용은 training configuration을 참조하십시오.
Link to this section혼합 정밀도 학습이란 무엇이며 YOLO26에서 어떻게 활성화하나요?#
혼합 정밀도 학습은 16비트(FP16) 및 32비트(FP32) 부동 소수점 유형을 모두 사용하여 계산 속도와 정밀도 사이의 균형을 맞춥니다. 이 접근 방식은 모델 정확도(accuracy)를 희생하지 않고도 학습 속도를 높이고 메모리 사용량을 줄입니다. YOLO26에서 혼합 정밀도 학습을 활성화하려면 학습 설정에서 amp 파라미터를 True로 설정하십시오. 이렇게 하면 자동 혼합 정밀도(AMP) 학습이 활성화됩니다. 이 최적화 기법에 대한 자세한 내용은 학습 설정을 확인하십시오.
Link to this section다중 스케일 학습은 YOLO26 모델 성능을 어떻게 향상시키나요?#
다중 스케일 학습은 다양한 크기의 이미지로 학습시켜 모델 성능을 향상시키며, 모델이 서로 다른 스케일과 거리에서 더 잘 일반화하도록 합니다. YOLO26에서는 학습 설정에서 scale 파라미터를 설정하여 다중 스케일 학습을 활성화할 수 있습니다. 예를 들어 scale=0.5는 0.5에서 1.5 사이의 확대/축소 계수를 샘플링한 다음 imgsz로 패딩/크롭합니다. 이 기법은 다양한 거리의 객체를 시뮬레이션하여 다양한 시나리오에서 모델을 더욱 강력하게 만듭니다. 설정 및 자세한 내용은 학습 설정을 확인하십시오.
Link to this sectionYOLO26에서 사전 학습된 가중치를 사용하여 학습 속도를 어떻게 높일 수 있나요?#
사전 학습된 가중치를 사용하면 이미 기초 시각적 특징에 익숙한 모델을 활용하여 학습을 크게 가속화하고 모델 정확도를 높일 수 있습니다. YOLO26에서는 학습 설정에서 pretrained 파라미터를 True로 설정하거나 사용자 정의 사전 학습 가중치에 대한 경로를 제공하기만 하면 됩니다. 전이 학습이라고 불리는 이 방법을 사용하면 대규모 데이터셋에서 학습된 모델을 특정 애플리케이션에 효과적으로 적용할 수 있습니다. 사전 학습된 가중치 사용 방법과 그 이점에 대한 자세한 내용은 학습 설정 가이드를 참조하십시오.
Link to this section모델 학습에 권장되는 에폭 수는 얼마이며 YOLO26에서 이를 어떻게 설정하나요?#
에폭 수는 모델 학습 중에 전체 학습 데이터셋을 통과하는 횟수를 의미합니다. 일반적인 시작점은 300 에폭입니다. 모델이 일찍 과적합되면 에폭 수를 줄일 수 있습니다. 반대로 과적합이 관찰되지 않으면 학습을 600, 1200 에폭 이상으로 연장할 수 있습니다. YOLO26에서 이를 설정하려면 학습 스크립트의 epochs 파라미터를 사용하십시오. 이상적인 에폭 수 결정에 대한 추가 조언은 에폭 수 섹션을 참조하십시오.