일반적인 YOLO 문제 해결
소개
이 가이드는 Ultralytics 프로젝트에서 YOLO11을 사용하는 동안 발생하는 일반적인 문제를 해결하기 위한 포괄적인 지원 역할을 합니다. 올바른 지침을 통해 이러한 문제를 쉽게 해결할 수 있으므로 프로젝트가 불필요한 지연 없이 순조롭게 진행될 수 있습니다.
참고: Ultralytics YOLO11 일반적인 문제 | 설치 오류, 모델 훈련 문제
일반적인 문제
설치 오류
설치 오류는 호환되지 않는 버전, 누락된 종속성 또는 잘못된 환경 설정과 같은 다양한 이유로 발생할 수 있습니다. 먼저 다음 사항을 확인하십시오.
- 권장 사항에 따라 python 3.8 이상을 사용하고 있습니다.
- 올바른 버전의 PyTorch(1.8 이상)가 설치되어 있는지 확인하십시오.
- 충돌을 피하기 위해 가상 환경을 사용하는 것을 고려하십시오.
- 공식 설치 가이드를 단계별로 따라 하세요.
또한 사용자들이 겪었던 일반적인 설치 문제와 그 해결 방법은 다음과 같습니다.
-
가져오기 오류 또는 종속성 문제 - YOLO11을 가져오는 동안 오류가 발생하거나 종속성과 관련된 문제가 있는 경우 다음 문제 해결 단계를 고려하십시오.
-
새로 설치: 때로는 새로 설치하는 것으로 예상치 못한 문제를 해결할 수 있습니다. 특히 업데이트로 인해 파일 트리 구조 또는 기능에 변경 사항이 생길 수 있는 Ultralytics와 같은 라이브러리의 경우 더욱 그렇습니다.
-
정기적인 업데이트: 라이브러리의 최신 버전을 사용하고 있는지 확인하십시오. 이전 버전은 최신 업데이트와 호환되지 않아 잠재적인 충돌이나 문제가 발생할 수 있습니다.
-
종속성 확인: 필요한 모든 종속성이 올바르게 설치되었고 호환되는 버전인지 확인합니다.
-
변경 사항 검토: 초기에 이전 버전을 복제하거나 설치한 경우, 중요한 업데이트가 라이브러리의 구조나 기능에 영향을 줄 수 있다는 점에 유의하십시오. 주요 변경 사항을 이해하려면 항상 공식 문서 또는 변경 로그를 참조하십시오.
-
라이브러리 및 종속성을 최신 상태로 유지하는 것이 원활하고 오류 없는 경험을 위해 중요하다는 점을 기억하십시오.
-
-
GPU에서 YOLO11 실행 - GPU에서 YOLO11을 실행하는 데 문제가 있는 경우 다음 문제 해결 단계를 고려하십시오.
-
CUDA 호환성 및 설치 확인: GPU가 CUDA와 호환되고 CUDA가 올바르게 설치되었는지 확인합니다. 다음을 사용하십시오.
nvidia-smi
NVIDIA GPU 및 CUDA 버전의 상태를 확인하는 명령어입니다. -
PyTorch 및 CUDA 통합 확인: PyTorch가 CUDA를 활용할 수 있는지 확인하려면 다음을 실행하십시오.
import torch; print(torch.cuda.is_available())
python 터미널에서 실행합니다. 'True'를 반환하면 PyTorch가 CUDA를 사용하도록 설정된 것입니다. -
환경 활성화: 필요한 모든 패키지가 설치된 올바른 환경에 있는지 확인하십시오.
-
패키지 업데이트: 오래된 패키지는 GPU와 호환되지 않을 수 있습니다. 최신 상태로 유지하십시오.
-
프로그램 구성: 프로그램 또는 코드가 GPU 사용을 지정하는지 확인하십시오. YOLO11에서는 설정 또는 구성에 있을 수 있습니다.
-
모델 학습 문제
이 섹션에서는 훈련 중에 발생하는 일반적인 문제와 그에 대한 설명 및 해결 방법을 다룹니다.
구성 설정 확인
이슈: 다음의 구성 설정이 확실하지 않습니다. .yaml
파일이 모델 학습 중에 올바르게 적용되고 있는지 확인하십시오.
솔루션: 다음의 구성 설정 .yaml
파일은 다음을 사용할 때 적용해야 합니다. model.train()
함수입니다. 이러한 설정이 올바르게 적용되었는지 확인하려면 다음 단계를 따르세요.
- 경로를 확인하십시오.
.yaml
구성 파일이 올바른지 확인하십시오. -
경로를 전달해야 합니다.
.yaml
파일을 다음으로 사용하십시오.data
호출 시 인수:model.train()
, 아래와 같습니다:model.train(data="/path/to/your/data.yaml", batch=4)
다중 GPU를 사용한 학습 가속화
문제: 단일 GPU에서 훈련 속도가 느리며, 다중 GPU를 사용하여 프로세스 속도를 높이고 싶습니다.
해결 방법: 배치 크기를 늘리면 학습 속도를 높일 수 있지만 GPU 메모리 용량을 고려해야 합니다. 여러 GPU로 학습 속도를 높이려면 다음 단계를 따르십시오.
- 여러 개의 GPU를 사용할 수 있는지 확인하십시오.
- 사용할 GPU 수를 지정하도록 .yaml 구성 파일을 수정합니다 (예: gpus: 4).
- 메모리 제한을 초과하지 않으면서 여러 GPU를 최대한 활용하기 위해 배치 크기를 적절히 늘립니다.
-
여러 GPU를 활용하도록 학습 명령을 수정합니다.
# Adjust the batch size and other settings as needed to optimize training speed model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)
지속적인 모니터링 매개변수
문제: 손실 외에 훈련 중에 지속적으로 모니터링해야 하는 매개변수를 알고 싶습니다.
해결 방법: 손실은 모니터링해야 할 중요한 지표이지만 모델 성능 최적화를 위해 다른 지표도 추적해야 합니다. 학습 중에 모니터링해야 할 주요 지표는 다음과 같습니다.
- 정밀도
- 재현율
- Mean Average Precision(mAP)
이러한 지표는 학습 로그에서 액세스하거나 TensorBoard 또는 wandb와 같은 도구를 사용하여 시각화할 수 있습니다. 이러한 지표를 기반으로 조기 중단을 구현하면 더 나은 결과를 얻을 수 있습니다.
학습 진행률 추적 도구
문제: 훈련 진행 상황을 추적할 수 있는 도구에 대한 권장 사항을 찾고 있습니다.
해결 방법: 학습 진행 상황을 추적하고 시각화하기 위해 다음 도구를 사용하는 것을 고려할 수 있습니다.
- TensorBoard: TensorBoard는 손실, 정확도 등을 포함한 훈련 메트릭 시각화에 널리 사용됩니다. YOLO11 훈련 과정과 통합할 수 있습니다.
- Comet: Comet은 실험 추적 및 비교를 위한 광범위한 툴킷을 제공합니다. 메트릭, 하이퍼파라미터, 심지어 모델 가중치까지 추적할 수 있습니다. YOLO 모델과의 통합도 간단하여 실험 주기에 대한 완전한 개요를 제공합니다.
- Ultralytics HUB: Ultralytics HUB는 YOLO 모델 추적을 위한 특화된 환경을 제공하여 메트릭, 데이터 세트를 관리하고 팀과 협업할 수 있는 원스톱 플랫폼을 제공합니다. YOLO에 특화된 플랫폼이므로 더욱 사용자 정의된 추적 옵션을 제공합니다.
이러한 각 도구는 자체적인 장점을 제공하므로 선택할 때 프로젝트의 특정 요구 사항을 고려할 수 있습니다.
GPU에서 훈련이 진행 중인지 확인하는 방법
문제: 훈련 로그의 'device' 값이 'null'이며, GPU에서 훈련이 진행되고 있는지 확실하지 않습니다.
해결 방법: 'device' 값이 'null'인 것은 일반적으로 학습 프로세스가 사용 가능한 GPU를 자동으로 사용하도록 설정되었음을 의미하며, 이는 기본 동작입니다. 특정 GPU에서 학습이 이루어지도록 하려면 .yaml 구성 파일에서 'device' 값을 GPU 인덱스(예: 첫 번째 GPU의 경우 '0')로 수동으로 설정할 수 있습니다.
device: 0
이렇게 하면 학습 프로세스가 지정된 GPU에 명시적으로 할당됩니다. CPU에서 학습하려면 'device'를 'cpu'로 설정하세요.
로그 및 메트릭에 대한 'runs' 폴더를 주시하여 학습 진행 상황을 효과적으로 모니터링하십시오.
효과적인 모델 학습을 위한 주요 고려 사항
모델 학습과 관련된 문제에 직면한 경우 명심해야 할 몇 가지 사항이 있습니다.
데이터세트 형식 및 레이블
- 중요성: 모든 머신 러닝 모델의 기반은 학습에 사용되는 데이터의 품질과 형식에 있습니다.
- 권장 사항: 사용자 정의 데이터 세트와 관련 레이블이 예상되는 형식을 준수하는지 확인하십시오. 어노테이션이 정확하고 고품질인지 확인하는 것이 중요합니다. 부정확하거나 수준 이하의 어노테이션은 모델의 학습 과정을 방해하여 예측 불가능한 결과를 초래할 수 있습니다.
모델 수렴
- 중요성: 모델 수렴을 달성하면 모델이 학습 데이터로부터 충분히 학습되었음을 보장할 수 있습니다.
- 권장 사항: 모델을 '처음부터' 학습할 때는 모델이 만족스러운 수준의 수렴에 도달했는지 확인하는 것이 중요합니다. 이를 위해서는 기존 모델을 미세 조정할 때보다 더 긴 학습 시간, 즉 더 많은 에포크가 필요할 수 있습니다.
Learning Rate 및 Batch Size
- 중요성: 이러한 하이퍼파라미터는 모델이 학습 중에 가중치를 업데이트하는 방식을 결정하는 데 중요한 역할을 합니다.
- 권장 사항: 선택한 학습률과 배치 크기가 특정 데이터 세트에 최적인지 정기적으로 평가하십시오. 데이터 세트의 특성과 조화를 이루지 못하는 파라미터는 모델 성능을 저해할 수 있습니다.
클래스 분포
- 중요성: 데이터 세트의 클래스 분포는 모델의 예측 경향에 영향을 줄 수 있습니다.
- 권장 사항: 데이터 세트 내에서 클래스 분포를 정기적으로 평가하십시오. 클래스 불균형이 있는 경우 모델이 더 일반적인 클래스에 편향될 위험이 있습니다. 이러한 편향은 모델이 주로 다수 클래스를 예측하는 오차 행렬에서 분명하게 나타날 수 있습니다.
사전 훈련된 가중치와의 교차 검사
- 중요성: 사전 학습된 가중치를 활용하면 특히 데이터가 제한적일 때 모델 학습을 위한 견고한 시작점을 제공할 수 있습니다.
- 권장 사항: 진단 단계로, 동일한 데이터를 사용하여 모델을 학습하되, 사전 학습된 가중치로 초기화하는 것을 고려해 보십시오. 이 접근 방식이 잘 구성된 오차 행렬을 생성한다면, '처음부터' 모델은 추가 학습 또는 조정이 필요할 수 있음을 시사할 수 있습니다.
모델 예측 관련 이슈
이 섹션에서는 모델 예측 중에 발생하는 일반적인 문제에 대해 설명합니다.
YOLO11 사용자 정의 모델로 경계 상자 예측 얻기
문제: 사용자 정의 YOLO11 모델로 예측을 실행할 때 경계 상자 좌표의 형식 및 시각화에 문제가 있습니다.
해결 방법:
-
좌표 형식: YOLO11은 절대 픽셀 값으로 경계 상자 좌표를 제공합니다. 이를 상대 좌표(0~1 범위)로 변환하려면 이미지 크기로 나누어야 합니다. 예를 들어 이미지 크기가 640x640이라고 가정해 보겠습니다. 그런 다음 다음을 수행합니다.
# Convert absolute coordinates to relative coordinates x1 = x1 / 640 # Divide x-coordinates by image width x2 = x2 / 640 y1 = y1 / 640 # Divide y-coordinates by image height y2 = y2 / 640
-
파일 이름: 예측 중인 이미지의 파일 이름을 얻으려면 예측 루프 내의 결과 객체에서 이미지 파일 경로에 직접 액세스하십시오.
YOLO11 예측에서 객체 필터링
문제: Ultralytics 라이브러리를 사용하여 YOLO11을 실행할 때 예측 결과에서 특정 객체만 필터링하고 표시하는 방법에 대한 문제 발생.
해결 방법: 특정 클래스를 감지하려면 클래스 인수를 사용하여 출력에 포함할 클래스를 지정합니다. 예를 들어 자동차만 감지하려면('자동차'의 클래스 인덱스가 2라고 가정):
yolo task=detect mode=segment model=yolo11n-seg.pt source='path/to/car.mp4' show=True classes=2
YOLO11의 정밀도 지표 이해
문제: YOLO11에서 박스 정밀도, 마스크 정밀도 및 혼동 행렬 정밀도 간의 차이에 대한 혼동.
해결 방법: 박스 정밀도는 IoU(Intersection over Union)를 메트릭으로 사용하여 실제 Ground Truth 박스와 비교하여 예측된 경계 상자의 정확도를 측정합니다. 마스크 정밀도는 픽셀 단위 객체 분류에서 예측된 분할 마스크와 Ground Truth 마스크 간의 일치도를 평가합니다. 반면에 혼동 행렬 정밀도는 모든 클래스에서 전체 분류 정확도에 중점을 두며 예측의 기하학적 정확도는 고려하지 않습니다. 경계 상자는 클래스 예측이 잘못된 경우에도 기하학적으로 정확할 수 있으며(True Positive) 박스 정밀도와 혼동 행렬 정밀도 간에 차이가 발생할 수 있습니다. 이러한 메트릭은 모델 성능의 고유한 측면을 평가하여 다양한 작업에서 다양한 평가 메트릭의 필요성을 반영합니다.
YOLO11에서 객체 크기 추출
문제: YOLO11에서 감지된 객체의 길이와 높이를 검색하는 데 어려움이 있으며, 특히 이미지에서 여러 객체가 감지될 때 더욱 그렇습니다.
해결 방법: 경계 상자 크기를 검색하려면 먼저 Ultralytics YOLO11 모델을 사용하여 이미지에서 객체를 예측합니다. 그런 다음 예측 결과에서 경계 상자의 너비 및 높이 정보를 추출합니다.
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")
# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"
# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.5)
# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
x, y, w, h = box
print(f"Width of Box: {w}, Height of Box: {h}")
배포 문제
GPU 배포 문제
문제: 다중 GPU 환경에서 모델을 배포할 때 예기치 않은 메모리 사용량, GPU 간의 일관성 없는 결과 등과 같은 예상치 못한 동작이 발생할 수 있습니다.
해결 방법: 기본 GPU 초기화를 확인하십시오. PyTorch와 같은 일부 프레임워크는 지정된 GPU로 전환하기 전에 기본 GPU에서 CUDA 연산을 초기화할 수 있습니다. 예기치 않은 기본 초기화를 방지하려면 배포 및 예측 중에 GPU를 직접 지정하십시오. 그런 다음 도구를 사용하여 GPU 사용률 및 메모리 사용량을 모니터링하여 실시간으로 이상 징후를 식별합니다. 또한 최신 버전의 프레임워크 또는 라이브러리를 사용하고 있는지 확인하십시오.
모델 변환/내보내기 문제
문제: 머신러닝 모델을 다양한 형식이나 플랫폼으로 변환하거나 내보내는 과정에서 오류나 예상치 못한 동작이 발생할 수 있습니다.
해결 방법:
- 호환성 점검: 서로 호환되는 라이브러리 및 프레임워크 버전을 사용하고 있는지 확인하십시오. 버전이 일치하지 않으면 변환 중에 예기치 않은 오류가 발생할 수 있습니다.
- 환경 재설정: Jupyter 또는 Colab과 같은 대화형 환경을 사용하는 경우 중요한 변경이나 설치 후 환경을 다시 시작하는 것을 고려하십시오. 새로 시작하면 때때로 근본적인 문제를 해결할 수 있습니다.
- 공식 문서: 변환에 사용 중인 도구 또는 라이브러리의 공식 문서를 항상 참조하십시오. 여기에는 모델 내보내기를 위한 특정 지침 및 모범 사례가 포함되어 있는 경우가 많습니다.
- 커뮤니티 지원: 라이브러리 또는 프레임워크의 공식 리포지토리에서 다른 사용자가 보고한 유사한 문제를 확인하십시오. 유지 관리자 또는 커뮤니티가 토론 스레드에서 해결 방법 또는 임시 해결책을 제공했을 수 있습니다.
- 정기적으로 업데이트: 최신 버전의 도구 또는 라이브러리를 사용하고 있는지 확인하십시오. 개발자는 알려진 버그를 수정하거나 기능을 개선하는 업데이트를 자주 릴리스합니다.
- 점진적 테스트: 전체 변환을 수행하기 전에 더 작은 모델 또는 데이터 세트로 프로세스를 테스트하여 잠재적인 문제를 조기에 식별합니다.
커뮤니티 및 지원
같은 생각을 가진 사람들의 커뮤니티와 교류하면 YOLO11 작업 경험과 성공을 크게 향상시킬 수 있습니다. 다음은 도움이 될 수 있는 몇 가지 채널 및 리소스입니다.
도움말을 얻기 위한 포럼 및 채널
GitHub 이슈: GitHub의 YOLO11 저장소에는 이슈 탭이 있어 질문을 하거나 버그를 보고하고 새로운 기능을 제안할 수 있습니다. 커뮤니티와 유지 관리 담당자가 활발하게 활동하고 있으며, 특정 문제에 대한 도움을 받을 수 있는 좋은 곳입니다.
Ultralytics Discord 서버: Ultralytics에는 다른 사용자 및 개발자와 상호 작용할 수 있는 Discord 서버가 있습니다.
공식 문서 및 자료
Ultralytics YOLO11 문서: 공식 문서는 YOLO11에 대한 포괄적인 개요와 설치, 사용법 및 문제 해결에 대한 가이드를 제공합니다.
이러한 리소스는 YOLO11 프로젝트의 문제를 해결하고 개선하기 위한 견고한 기반을 제공하고 YOLO11 커뮤니티의 다른 사람들과 연결하는 데 도움이 될 것입니다.
결론
문제 해결은 모든 개발 프로세스의 필수적인 부분이며, 올바른 지식을 갖추면 문제 해결에 소요되는 시간과 노력을 크게 줄일 수 있습니다. 이 가이드는 Ultralytics 생태계 내에서 YOLO11 모델 사용자가 직면하는 가장 일반적인 문제점을 해결하는 것을 목표로 합니다. 이러한 일반적인 문제를 이해하고 해결함으로써 프로젝트를 더 원활하게 진행하고 컴퓨터 비전 작업에서 더 나은 결과를 얻을 수 있습니다.
Ultralytics 커뮤니티는 매우 유용한 리소스입니다. 동료 개발자 및 전문가와 교류하면 표준 문서에서 다루지 않는 추가적인 통찰력과 솔루션을 얻을 수 있습니다. 항상 배우고, 실험하고, 경험을 공유하여 커뮤니티의 집단적 지식에 기여하십시오.
문제 해결에 행운을 빕니다!
FAQ
YOLO11 설치 오류를 어떻게 해결합니까?
설치 오류는 종종 호환성 문제나 누락된 종속성 때문에 발생할 수 있습니다. Python 3.8 이상을 사용하고 PyTorch 1.8 이상이 설치되어 있는지 확인하십시오. 충돌을 피하기 위해 가상 환경을 사용하는 것이 좋습니다. 단계별 설치 안내는 공식 설치 가이드를 참조하십시오. 가져오기 오류가 발생하면 새로 설치하거나 라이브러리를 최신 버전으로 업데이트하십시오.
단일 GPU에서 YOLO11 모델 학습이 느린 이유는 무엇인가요?
단일 GPU에서 학습하는 것은 큰 배치 크기 또는 메모리 부족으로 인해 느릴 수 있습니다. 학습 속도를 높이려면 여러 GPU를 사용하십시오. 시스템에 여러 GPU가 있는지 확인하고 다음을 조정하십시오. .yaml
GPU 수를 지정하기 위한 구성 파일(예: gpus: 4
. 메모리 제한을 초과하지 않고 GPU를 완전히 활용하려면 배치 크기를 적절히 늘리십시오. 명령 예:
model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)
YOLO11 모델이 GPU에서 훈련되고 있는지 어떻게 확인할 수 있습니까?
학습 로그에 'device' 값이 'null'로 표시되면 일반적으로 학습 프로세스가 사용 가능한 GPU를 자동으로 사용하도록 설정되었음을 의미합니다. 특정 GPU를 명시적으로 할당하려면 'device' 값을 다음 위치에 설정하십시오. .yaml
구성 파일입니다. 예:
device: 0
이렇게 하면 훈련 프로세스가 첫 번째 GPU로 설정됩니다. 다음을 참조하십시오. nvidia-smi
CUDA 설정을 확인하는 명령어입니다.
YOLO11 모델 훈련 진행 상황을 어떻게 모니터링하고 추적할 수 있습니까?
TensorBoard, Comet, Ultralytics HUB와 같은 도구를 통해 학습 진행 상황을 효율적으로 추적하고 시각화할 수 있습니다. 이러한 도구를 사용하면 손실, 정밀도, 재현율 및 mAP와 같은 지표를 기록하고 시각화할 수 있습니다. 이러한 지표를 기반으로 조기 중단을 구현하면 더 나은 학습 결과를 얻을 수 있습니다.
YOLO11이 데이터 세트 형식을 인식하지 못하는 경우 어떻게 해야 합니까?
데이터 세트와 레이블이 예상 형식에 맞는지 확인하십시오. 어노테이션이 정확하고 품질이 높은지 검증하십시오. 문제가 발생하면 데이터 수집 및 어노테이션 가이드에서 모범 사례를 참조하십시오. 더 자세한 데이터 세트별 지침은 문서의 데이터 세트 섹션을 확인하십시오.