머신 러닝 모범 사례 및 모델 학습을 위한 팁
소개
컴퓨터 비전 프로젝트를 진행할 때 가장 중요한 단계 중 하나는 모델 훈련입니다. 이 단계에 도달하기 전에 목표를 정의하고 데이터를 수집하고 주석을 달아야 합니다. 데이터가 깨끗하고 일관성이 있는지 확인하기 위해 데이터를 전처리한 후에는 모델 훈련으로 넘어갈 수 있습니다.
Watch: 모델 학습 팁 | 대규모 데이터 세트 처리 방법 | 배치 크기, GPU 활용도 및 혼합 정밀도
그렇다면 모델 트레이닝이란 무엇인가요? 모델 트레이닝은 모델이 시각적 패턴을 인식하고 데이터를 기반으로 예측하도록 가르치는 프로세스입니다. 이는 애플리케이션의 성능과 정확도에 직접적인 영향을 미칩니다. 이 가이드에서는 컴퓨터 비전 모델을 효과적으로 훈련하는 데 도움이 되는 모범 사례, 최적화 기술 및 문제 해결 팁을 다룹니다.
머신러닝 모델을 훈련하는 방법
컴퓨터 비전 모델은 오류를 최소화하기 위해 내부 매개변수를 조정하여 학습합니다. 처음에는 모델에 라벨이 지정된 대규모 이미지 세트가 제공됩니다. 이 이미지에 무엇이 있는지 예측하고 예측을 실제 라벨이나 내용과 비교하여 오차를 계산합니다. 이러한 오차는 모델의 예측이 실제 값과 얼마나 차이가 나는지를 보여줍니다.
학습하는 동안 모델은 반복적으로 예측을 하고, 오류를 계산하고, 역전파라는 프로세스를 통해 매개변수를 업데이트합니다. 이 과정에서 모델은 내부 파라미터(weights and biases)를 조정하여 오류를 줄입니다. 이 과정을 여러 번 반복함으로써 모델은 점차 정확도를 향상시킵니다. 시간이 지남에 따라 모양, 색상, 질감과 같은 복잡한 패턴을 인식하는 방법을 학습합니다.
이러한 학습 과정을 통해 컴퓨터 비전 모델은 객체 감지, 인스턴스 분할, 이미지 분류 등 다양한 작업을 수행할 수 있습니다. 궁극적인 목표는 보이지 않는 새로운 이미지에 대한 학습을 일반화하여 실제 애플리케이션에서 시각적 데이터를 정확하게 이해할 수 있는 모델을 만드는 것입니다.
이제 모델을 훈련할 때 뒤에서 어떤 일이 일어나는지 알았으니 이제 모델을 훈련할 때 고려해야 할 사항을 살펴보겠습니다.
대규모 데이터 세트에 대한 교육
대규모 데이터 세트를 사용하여 모델을 학습시키려는 경우 고려해야 할 몇 가지 측면이 있습니다. 예를 들어 배치 크기를 조정하고, GPU 활용도를 제어하고, 멀티스케일 학습을 사용하도록 선택할 수 있습니다. 이러한 각 옵션을 자세히 살펴보겠습니다.
배치 크기 및 GPU 활용도
대규모 데이터 세트에서 모델을 학습할 때는 GPU 을 효율적으로 활용하는 것이 중요합니다. 배치 크기는 중요한 요소입니다. 배치 크기는 머신러닝 모델이 한 번의 훈련 반복에서 처리하는 데이터 샘플의 수입니다. GPU 에서 지원하는 최대 배치 크기를 사용하면 기능을 최대한 활용하고 모델 학습에 걸리는 시간을 줄일 수 있습니다. 하지만 GPU 메모리가 부족해지지 않도록 주의해야 합니다. 메모리 오류가 발생하면 모델이 원활하게 학습할 때까지 배치 크기를 점진적으로 줄이세요.
Watch: 일괄 추론으로 Ultralytics YOLO11 사용하는 방법 | Python 객체 감지 속도 향상 🎉
YOLO11 와 관련하여 다음과 같이 설정할 수 있습니다. batch_size
매개변수의 교육 구성 을 GPU 용량에 맞게 설정하세요. 또한 batch=-1
교육 스크립트에서 자동으로 결정됩니다. 배치 크기 디바이스의 기능에 따라 효율적으로 처리할 수 있습니다. 배치 크기를 미세 조정하여 GPU 리소스를 최대한 활용하고 전반적인 교육 프로세스를 개선할 수 있습니다.
하위 집합 교육
하위 집합 학습은 더 큰 데이터 집합을 나타내는 작은 데이터 집합으로 모델을 학습시키는 현명한 전략입니다. 특히 초기 모델 개발 및 테스트 중에 시간과 리소스를 절약할 수 있습니다. 시간이 부족하거나 다양한 모델 구성을 실험하는 경우 하위 집합 학습이 좋은 옵션입니다.
YOLO11 의 경우 다음을 사용하여 하위 집합 교육을 쉽게 구현할 수 있습니다. fraction
매개변수를 설정합니다. 이 매개변수를 사용하면 데이터 세트의 어느 부분을 학습에 사용할지 지정할 수 있습니다. 예를 들어, 설정 fraction=0.1
는 데이터의 10%에 대해 모델을 학습시킵니다. 전체 데이터 집합을 사용하여 모델을 학습시키기 전에 이 기술을 사용하여 빠르게 반복하고 모델을 튜닝할 수 있습니다. 하위 집합 학습은 빠른 진행을 돕고 잠재적인 문제를 조기에 식별하는 데 도움이 됩니다.
다중 규모 교육
멀티스케일 트레이닝은 다양한 크기의 이미지로 모델을 훈련하여 일반화 능력을 향상시키는 기술입니다. 모델은 다양한 규모와 거리에서 물체를 감지하는 방법을 학습하여 더욱 강력해질 수 있습니다.
예를 들어 YOLO11 을 트레이닝할 때 멀티스케일 트레이닝을 활성화하려면 scale
매개변수를 설정합니다. 이 매개변수는 훈련 이미지의 크기를 지정된 계수만큼 조정하여 다양한 거리에 있는 물체를 시뮬레이션합니다. 예를 들어 scale=0.5
훈련 중에 훈련 이미지를 0.5에서 1.5 사이의 배율로 무작위로 확대합니다. 이 매개변수를 구성하면 모델이 다양한 이미지 배율을 경험하고 다양한 물체 크기와 시나리오에서 감지 기능을 향상시킬 수 있습니다.
캐싱
캐싱은 머신러닝 모델 학습의 효율성을 향상시키는 중요한 기술입니다. 캐싱은 사전 처리된 이미지를 메모리에 저장함으로써 GPU 에서 디스크에서 데이터가 로드될 때까지 기다리는 시간을 줄여줍니다. 모델은 디스크 I/O 작업으로 인한 지연 없이 지속적으로 데이터를 수신할 수 있습니다.
교육할 때 YOLO11 을 사용하여 캐싱을 제어할 수 있습니다. cache
매개변수입니다:
cache=True
: 데이터 세트 이미지를 RAM에 저장하여 가장 빠른 액세스 속도를 제공하지만 메모리 사용량이 증가합니다.cache='disk'
: 이미지를 디스크에 저장하며, RAM보다는 느리지만 매번 새 데이터를 로드하는 것보다 빠릅니다.cache=False
: 캐싱을 비활성화하여 가장 느린 옵션인 디스크 I/O에만 의존합니다.
혼합 정밀 교육
혼합 정밀도 훈련은 16비트(FP16) 및 32비트(FP32) 부동소수점 유형을 모두 사용합니다. 더 빠른 계산을 위해 FP16을 사용하고 필요한 경우 정밀도를 유지하기 위해 FP32를 사용함으로써 FP16과 FP32의 강점을 모두 활용합니다. 신경망의 대부분의 연산은 빠른 계산과 적은 메모리 사용의 이점을 위해 FP16으로 수행됩니다. 그러나 가중치 업데이트 단계에서 정확성을 보장하기 위해 모델 가중치의 마스터 사본은 FP32에 보관됩니다. 동일한 하드웨어 제약 조건 내에서 더 큰 모델이나 더 큰 배치 크기를 처리할 수 있습니다.
혼합 정밀도 훈련을 구현하려면 훈련 스크립트를 수정하고 하드웨어(예: GPU)가 이를 지원하는지 확인해야 합니다. 다음과 같은 많은 최신 딥 러닝 프레임워크는 PyTorch 및 TensorFlow와 같은 많은 최신 딥 러닝 프레임워크는 혼합 정밀도를 기본적으로 지원합니다.
혼합 정밀도 교육은 YOLO11 으로 작업할 때 간단합니다. amp
플래그를 설정합니다. 설정 amp=True
를 사용하면 자동 혼합 정밀도(AMP) 훈련이 가능합니다. 혼합 정밀도 훈련은 모델 훈련 프로세스를 최적화하는 간단하면서도 효과적인 방법입니다.
사전 학습된 가중치
사전 학습된 가중치를 사용하면 모델 학습 프로세스의 속도를 높일 수 있는 현명한 방법입니다. 사전 학습된 가중치는 이미 대규모 데이터 세트에 대해 학습된 모델에서 제공되므로 모델에 유리한 출발점을 제공합니다. 전이 학습은 사전 학습된 모델을 새로운 관련 작업에 맞게 조정합니다. 사전 학습된 모델을 미세 조정하려면 이러한 가중치로 시작한 다음 특정 데이터 세트에 대한 학습을 계속해야 합니다. 이 훈련 방법은 모델이 기본 기능에 대한 확실한 이해에서 시작하기 때문에 훈련 시간이 단축되고 성능이 향상되는 경우가 많습니다.
그리고 pretrained
매개변수를 사용하면 YOLO11 으로 쉽게 전이 학습을 할 수 있습니다. 설정 pretrained=True
는 기본 사전 학습된 가중치를 사용하거나 사용자 지정 사전 학습된 모델의 경로를 지정할 수 있습니다. 사전 학습된 가중치와 전이 학습을 사용하면 모델의 기능을 효과적으로 향상시키고 학습 비용을 절감할 수 있습니다.
대규모 데이터 집합을 처리할 때 고려해야 할 기타 기술
대규모 데이터 집합을 처리할 때 고려해야 할 몇 가지 다른 기술이 있습니다:
- 학습 속도 스케줄러: 학습 속도 스케줄러를 구현하면 학습 중에 학습 속도를 동적으로 조정할 수 있습니다. 학습 속도를 잘 조정하면 모델의 최소값 오버슈팅을 방지하고 안정성을 향상시킬 수 있습니다. YOLO11 을 훈련할 때
lrf
매개변수를 사용하면 최종 학습률을 초기 학습률의 일부분으로 설정하여 학습률 스케줄을 관리할 수 있습니다. - 분산 훈련: 대규모 데이터 세트를 처리할 때 분산 훈련은 판도를 바꿀 수 있습니다. 트레이닝 워크로드를 여러 GPU 또는 머신에 분산하여 트레이닝 시간을 단축할 수 있습니다. 이 접근 방식은 상당한 컴퓨팅 리소스가 필요한 엔터프라이즈급 프로젝트에 특히 유용합니다.
훈련할 에포크 수
모델을 학습할 때 에포크는 전체 학습 데이터 세트를 한 번 완전히 통과하는 것을 의미합니다. 에포크 동안 모델은 학습 세트의 각 예제를 한 번 처리하고 학습 알고리즘에 따라 매개 변수를 업데이트합니다. 일반적으로 모델이 시간이 지남에 따라 파라미터를 학습하고 개선하려면 여러 개의 에포크가 필요합니다.
흔히 제기되는 질문은 모델을 학습시킬 에포크 수를 결정하는 방법입니다. 좋은 시작점은 300개 에포크입니다. 모델이 조기에 과적합하면 에포크 수를 줄일 수 있습니다. 300개 에포크 이후에도 과적합이 발생하지 않으면 600개, 1200개 또는 그 이상으로 훈련을 연장할 수 있습니다.
그러나 이상적인 에포크 수는 데이터 집합의 크기와 프로젝트 목표에 따라 달라질 수 있습니다. 데이터 세트가 클수록 모델이 효과적으로 학습하기 위해 더 많은 에포크가 필요할 수 있고, 데이터 세트가 작을수록 과적합을 피하기 위해 더 적은 에포크가 필요할 수 있습니다. YOLO11 와 관련하여 epochs
매개변수를 설정합니다.
조기 중지
조기 중지는 모델 학습을 최적화하는 데 유용한 기술입니다. 유효성 검사 성능을 모니터링하여 모델 개선이 중단되면 훈련을 중단할 수 있습니다. 계산 리소스를 절약하고 과적합을 방지할 수 있습니다.
이 프로세스에는 훈련을 중지하기 전에 유효성 검사 지표가 개선될 때까지 얼마나 많은 에포크를 기다릴지 결정하는 인내심 매개변수를 설정하는 것이 포함됩니다. 이 기간 내에 모델의 성능이 개선되지 않으면 시간과 리소스 낭비를 방지하기 위해 학습이 중지됩니다.
YOLO11 의 경우 트레이닝 구성에서 인내심 매개변수를 설정하여 조기 중지를 활성화할 수 있습니다. 예를 들어 patience=5
는 5회 연속으로 유효성 검사 지표가 개선되지 않으면 트레이닝이 중단됨을 의미합니다. 이 방법을 사용하면 트레이닝 프로세스가 효율적으로 유지되고 과도한 계산 없이 최적의 성능을 달성할 수 있습니다.
클라우드 교육과 로컬 교육 중 선택
모델 트레이닝에는 클라우드 트레이닝과 로컬 트레이닝의 두 가지 옵션이 있습니다.
클라우드 트레이닝은 확장성과 강력한 하드웨어를 제공하며 대규모 데이터 세트와 복잡한 모델을 처리하는 데 이상적입니다. Google Cloud, AWS, Azure와 같은 플랫폼은 고성능 GPU와 TPU에 대한 온디맨드 액세스를 제공하여 트레이닝 시간을 단축하고 대규모 모델을 실험할 수 있게 해줍니다. 그러나 클라우드 트레이닝은 특히 장기간에 걸쳐 비용이 많이 들 수 있으며 데이터 전송으로 인해 비용과 지연 시간이 늘어날 수 있습니다.
로컬 교육을 통해 제어 및 사용자 지정 기능을 강화하여 특정 요구 사항에 맞게 환경을 조정하고 지속적인 클라우드 비용을 피할 수 있습니다. 장기 프로젝트에 더 경제적일 수 있으며 데이터가 온프레미스에 유지되므로 더 안전합니다. 하지만 로컬 하드웨어에는 리소스 제한이 있고 유지 관리가 필요할 수 있으므로 대규모 모델의 경우 교육 시간이 길어질 수 있습니다.
최적화 도구 선택
최적화 도구는 모델이 얼마나 잘 작동하는지 측정하는 손실 함수를 최소화하기 위해 신경망의 가중치를 조정하는 알고리즘입니다. 간단히 말해, 최적화 도구는 오류를 줄이기 위해 매개변수를 조정하여 모델의 학습을 돕습니다. 올바른 최적화 도구를 선택하면 모델이 얼마나 빠르고 정확하게 학습하는지에 직접적인 영향을 미칩니다.
최적화 도구 매개변수를 미세 조정하여 모델 성능을 개선할 수도 있습니다. 학습 속도를 조정하면 매개변수를 업데이트할 때 단계의 크기가 설정됩니다. 안정성을 위해 적당한 학습 속도로 시작하여 시간이 지남에 따라 점차적으로 학습 속도를 낮추어 장기적인 학습을 개선할 수 있습니다. 또한 모멘텀을 설정하면 과거 업데이트가 현재 업데이트에 얼마나 영향을 미치는지 결정할 수 있습니다. 모멘텀의 일반적인 값은 약 0.9입니다. 이 값은 일반적으로 적절한 균형을 제공합니다.
일반적인 최적화 도구
최적화 도구마다 다양한 장단점이 있습니다. 몇 가지 일반적인 최적화 도구에 대해 간략히 살펴보겠습니다.
-
SGD(확률적 그라데이션 하강):
- 매개변수에 대한 손실 함수의 기울기를 사용하여 모델 매개변수를 업데이트합니다.
- 간단하고 효율적이지만 수렴 속도가 느리고 로컬 최소값에 갇힐 수 있습니다.
-
아담 (적응형 순간 추정):
- SGD와 모멘텀 및 RMSProp의 장점을 결합합니다.
- 기울기의 첫 번째 및 두 번째 모멘트의 추정치를 기반으로 각 파라미터의 학습 속도를 조정합니다.
- 노이즈가 많은 데이터와 희박한 그라데이션에 적합합니다.
- 효율적이고 일반적으로 튜닝이 덜 필요하므로 YOLO11 에 권장되는 최적화 프로그램입니다.
-
RMSProp(루트 평균 제곱 전파):
- 기울기를 최근 기울기의 크기 평균으로 나누어 각 매개변수에 대한 학습 속도를 조정합니다.
- 소실 그라디언트 문제를 처리하는 데 도움이 되며 반복 신경망에 효과적입니다.
YOLO11 의 경우 optimizer
파라미터를 사용하면 SGD, Adam, AdamW, NAdam, RAdam, RMSProp 등 다양한 최적화 도구 중에서 선택하거나 다음과 같이 설정할 수 있습니다. auto
를 클릭하여 모델 구성에 따라 자동으로 선택할 수 있습니다.
커뮤니티와 연결하기
컴퓨터 비전 애호가 커뮤니티의 일원이 되면 문제를 해결하고 더 빨리 배우는 데 도움이 될 수 있습니다. 다음은 연결하고, 도움을 받고, 아이디어를 공유하는 몇 가지 방법입니다.
커뮤니티 리소스
- GitHub 이슈: YOLO11 GitHub 리포지토리를 방문하여 이슈 탭을 사용하여 질문하고, 버그를 신고하고, 새로운 기능을 제안하세요. 커뮤니티와 관리자는 매우 활발하게 활동하고 있으며 기꺼이 도와드릴 준비가 되어 있습니다.
- Ultralytics 디스코드 서버: Ultralytics Discord 서버에 가입하여 다른 사용자 및 개발자와 채팅하고, 지원을 받고, 경험을 공유하세요.
공식 문서
- Ultralytics YOLO11 문서: 공식 문서( YOLO11 )에서 다양한 컴퓨터 비전 프로젝트에 대한 자세한 가이드와 유용한 팁을 확인하세요.
이러한 리소스를 사용하면 문제를 해결하고 컴퓨터 비전 커뮤니티의 최신 트렌드와 사례를 최신 상태로 유지하는 데 도움이 됩니다.
주요 내용
컴퓨터 비전 모델을 훈련하려면 모범 사례를 따르고, 전략을 최적화하며, 문제가 발생하면 이를 해결해야 합니다. 배치 크기 조정, 혼합 정밀도 훈련, 사전 훈련된 가중치로 시작하기와 같은 기술을 사용하면 모델의 성능을 개선하고 더 빠르게 훈련할 수 있습니다. 하위 집합 훈련 및 조기 중단과 같은 방법은 시간과 리소스를 절약하는 데 도움이 됩니다. 커뮤니티와 소통하고 새로운 트렌드를 파악하면 모델 트레이닝 기술을 계속 향상시키는 데 도움이 됩니다.
자주 묻는 질문
Ultralytics YOLO 로 대규모 데이터 집합을 학습할 때 GPU 활용도를 높이려면 어떻게 해야 하나요?
GPU 활용도를 높이려면 batch_size
매개변수를 GPU 에서 지원하는 최대 크기로 설정하세요. 이렇게 하면 GPU 의 기능을 최대한 활용하여 트레이닝 시간을 단축할 수 있습니다. 메모리 오류가 발생하면 트레이닝이 원활하게 실행될 때까지 배치 크기를 점진적으로 줄이세요. YOLO11 의 경우 설정 batch=-1
를 교육 스크립트에 추가하면 효율적인 처리를 위한 최적의 배치 크기가 자동으로 결정됩니다. 자세한 내용은 교육 구성.
혼합 정밀 훈련이란 무엇이며 YOLO11 에서 어떻게 활성화하나요?
혼합 정밀도 훈련은 16비트(FP16) 및 32비트(FP32) 부동 소수점 유형을 모두 활용하여 계산 속도와 정밀도의 균형을 맞춥니다. 이 접근 방식은 모델 성능 저하 없이 학습 속도를 높이고 메모리 사용량을 줄입니다. 정확성. YOLO11 에서 혼합 정밀도 훈련을 활성화하려면 amp
매개변수를 True
을 트레이닝 구성에 추가합니다. 이렇게 하면 자동 혼합 정밀도(AMP) 훈련이 활성화됩니다. 이 최적화 기법에 대한 자세한 내용은 교육 구성.
멀티스케일 트레이닝은 YOLO11 모델 성능을 어떻게 향상하나요?
멀티스케일 학습은 다양한 크기의 이미지를 학습하여 모델 성능을 향상시켜 모델이 다양한 규모와 거리에서 더 잘 일반화할 수 있도록 합니다. YOLO11 에서 멀티스케일 트레이닝을 사용하도록 설정하려면 scale
매개변수를 설정할 수 있습니다. 예를 들어 scale=0.5
은 이미지 크기를 절반으로 줄이고 scale=2.0
를 두 배로 늘립니다. 이 기술은 다양한 거리에 있는 물체를 시뮬레이션하여 다양한 시나리오에서 모델을 더욱 강력하게 만듭니다. 설정 및 자세한 내용은 교육 구성.
YOLO11 에서 사전 훈련된 웨이트를 사용하여 훈련 속도를 높이려면 어떻게 해야 하나요?
사전 학습된 가중치를 사용하면 이미 기본 기능을 이해하고 있는 모델에서 시작하여 학습 시간을 크게 줄이고 모델 성능을 향상시킬 수 있습니다. YOLO11 에서 pretrained
매개변수를 True
를 선택하거나 학습 구성에서 미리 학습된 사용자 지정 가중치에 대한 경로를 지정할 수 있습니다. 전이 학습이라고 하는 이 접근 방식은 대규모 데이터 세트의 지식을 활용하여 특정 작업에 맞게 조정합니다. 사전 학습된 가중치와 그 장점에 대해 자세히 알아보기 여기.
모델 학습에 권장되는 에포크 수는 얼마인가요, YOLO11 에서 어떻게 설정하나요?
에포크 수는 모델 학습 중 학습 데이터 세트의 전체 통과 횟수를 나타냅니다. 일반적인 시작점은 300개 에포크입니다. 모델이 조기에 과적합하면 그 수를 줄일 수 있습니다. 또는 과적합이 관찰되지 않는 경우 600개, 1200개 또는 그 이상의 에포크로 훈련을 확장할 수 있습니다. 이를 설정하려면 YOLO11 에서 epochs
매개변수를 설정하세요. 이상적인 에포크 수를 결정하는 방법에 대한 추가 도움말은 다음 섹션을 참조하세요. 에포크 수.