콘텐츠로 건너뛰기

일반적인 YOLO 문제 해결

YOLO 일반적인 문제 이미지

소개

This guide serves as a comprehensive aid for troubleshooting common issues encountered while working with YOLO11 on your Ultralytics projects. Navigating through these issues can be a breeze with the right guidance, ensuring your projects remain on track without unnecessary delays.



Watch: Ultralytics YOLO11 Common Issues | Installation Errors, Model Training Issues

일반적인 문제

설치 오류

설치 오류는 호환되지 않는 버전, 종속성 누락, 잘못된 환경 설정 등 다양한 원인으로 인해 발생할 수 있습니다. 먼저 다음을 수행하고 있는지 확인하세요:

  • 권장되는 Python 3.8 이상을 사용 중입니다.

  • Ensure that you have the correct version of PyTorch (1.8 or later) installed.

  • 충돌을 피하기 위해 가상 환경을 사용하는 것을 고려하세요.

  • 공식 설치 가이드를 단계별로 따라하세요.

또한 사용자들이 흔히 겪는 설치 문제와 각각의 해결 방법은 다음과 같습니다:

  • Import Errors or Dependency Issues - If you're getting errors during the import of YOLO11, or you're having issues related to dependencies, consider the following troubleshooting steps:

    • 새로 설치: 새로 설치하면 예기치 않은 문제를 해결할 수 있는 경우가 있습니다. 특히 Ultralytics 와 같은 라이브러리의 경우 업데이트로 인해 파일 트리 구조나 기능이 변경될 수 있습니다.

    • 정기적으로 업데이트합니다: 최신 버전의 라이브러리를 사용하고 있는지 확인하세요. 이전 버전은 최신 업데이트와 호환되지 않아 잠재적인 충돌이나 문제가 발생할 수 있습니다.

    • 종속성을 확인합니다: 필요한 모든 종속성이 올바르게 설치되어 있고 호환되는 버전인지 확인합니다.

    • 변경 사항 검토: 이전 버전을 처음 복제하거나 설치한 경우, 중요한 업데이트가 라이브러리의 구조나 기능에 영향을 미칠 수 있다는 점에 유의하세요. 항상 공식 문서나 변경 로그를 참조하여 주요 변경 사항을 파악하세요.

    • 원활하고 오류 없는 경험을 위해서는 라이브러리와 종속성을 최신 상태로 유지하는 것이 중요합니다.

  • Running YOLO11 on GPU - If you're having trouble running YOLO11 on GPU, consider the following troubleshooting steps:

    • 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 과 호환되지 않을 수 있습니다. 계속 업데이트하세요.

    • Program Configuration: Check if the program or code specifies GPU usage. In YOLO11, this might be in the settings or configuration.

모델 교육 문제

이 섹션에서는 교육 중에 직면하는 일반적인 문제와 그에 대한 설명 및 해결 방법을 다룹니다.

구성 설정 확인

이슈: 구성 설정이 올바른지 확실하지 않습니다. .yaml 파일이 모델 학습 중에 올바르게 적용되고 있는지 확인합니다.

솔루션: 구성 설정의 .yaml 파일을 사용할 때 적용해야 합니다. model.train() 기능을 사용하세요. 이러한 설정이 올바르게 적용되었는지 확인하려면 다음 단계를 따르세요:

  • 경로가 .yaml 구성 파일이 올바른지 확인합니다.
  • 경로를 전달해야 합니다. .yaml 파일을 data 인수를 호출할 때 model.train()를 클릭합니다:
model.train(data="/path/to/your/data.yaml", batch=4)

다중 GPU로 훈련 가속화

문제: 단일 GPU 에서 트레이닝 속도가 느리고 여러 GPU를 사용하여 프로세스 속도를 높이고 싶습니다.

Solution: Increasing the batch size can accelerate training, but it's essential to consider GPU memory capacity. To speed up training with multiple GPUs, follow these steps:

  • 여러 개의 GPU를 사용할 수 있는지 확인합니다.

  • .yaml 구성 파일을 수정하여 사용할 GPU 수(예: 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)

연속 모니터링 매개변수

문제: 손실과는 별도로 훈련 중에 지속적으로 모니터링해야 하는 매개변수를 알고 싶습니다.

솔루션: 손실은 모니터링해야 할 중요한 지표이지만, 모델 성능 최적화를 위해 다른 지표도 추적하는 것이 필수적입니다. 훈련 중에 모니터링해야 할 몇 가지 주요 지표는 다음과 같습니다:

이러한 메트릭은 트레이닝 로그에서 또는 시각화를 위해 TensorBoard 또는 wandb와 같은 도구를 사용하여 액세스할 수 있습니다. 이러한 메트릭을 기반으로 조기 중지를 구현하면 더 나은 결과를 얻을 수 있습니다.

교육 진행 상황을 추적하는 도구

이슈: 교육 진행 상황을 추적할 수 있는 도구에 대한 추천을 찾고 있습니다.

솔루션: 교육 진행 상황을 추적하고 시각화하려면 다음 도구를 사용하는 것을 고려해 볼 수 있습니다:

  • TensorBoard: TensorBoard is a popular choice for visualizing training metrics, including loss, accuracy, and more. You can integrate it with your YOLO11 training process.
  • CometComet 에서는 실험 추적 및 비교를 위한 광범위한 툴킷을 제공합니다. 이를 통해 메트릭, 하이퍼파라미터, 모델 가중치까지 추적할 수 있습니다. YOLO 모델과의 통합도 간단하여 실험 주기에 대한 전체 개요를 제공합니다.
  • Ultralytics 허브: Ultralytics 허브는 YOLO 모델 추적에 특화된 환경을 제공하여 메트릭, 데이터 세트를 관리하고 팀과 협업할 수 있는 원스톱 플랫폼을 제공합니다. YOLO 에 초점을 맞춘 맞춤형 추적 옵션을 제공합니다.

이러한 도구는 각각 고유한 장점을 제공하므로 선택할 때 프로젝트의 특정 요구 사항을 고려할 수 있습니다.

교육이 진행 중인지 확인하는 방법 GPU

문제입니다: 트레이닝 로그의 '장치' 값이 'null'이며, GPU 에서 트레이닝이 진행되고 있는지 확실하지 않습니다.

해결 방법: 'device' 값이 'null'이라는 것은 일반적으로 트레이닝 프로세스가 기본 동작인 사용 가능한 GPU 을 자동으로 사용하도록 설정되어 있음을 의미합니다. 특정 GPU 에서 교육이 이루어지도록 하려면 .yaml 구성 파일에서 'device' 값을 GPU 인덱스(예: 첫 번째 GPU 의 경우 '0')로 수동으로 설정할 수 있습니다:

device: 0

이렇게 하면 지정된 GPU 에 교육 프로세스가 명시적으로 할당됩니다. CPU 에서 교육하려면 'device'를 'cpu'로 설정합니다.

'실행' 폴더에서 로그와 메트릭을 주시하여 교육 진행 상황을 효과적으로 모니터링하세요.

효과적인 모델 트레이닝을 위한 주요 고려 사항

다음은 모델 트레이닝과 관련된 문제에 직면했을 때 염두에 두어야 할 몇 가지 사항입니다.

데이터 세트 형식 및 레이블

  • Importance: The foundation of any machine learning model lies in the quality and format of the data it is trained on.

  • 권장 사항: 사용자 지정 데이터 집합과 관련 레이블이 예상 형식을 준수하는지 확인하세요. 주석이 정확하고 고품질인지 확인하는 것이 중요합니다. 주석이 부정확하거나 수준 이하의 주석은 모델의 학습 프로세스를 방해하여 예측할 수 없는 결과를 초래할 수 있습니다.

모델 컨버전스

  • Importance: Achieving model convergence ensures that the model has sufficiently learned from the training data.

  • Recommendation: When training a model 'from scratch', it's vital to ensure that the model reaches a satisfactory level of convergence. This might necessitate a longer training duration, with more epochs, compared to when you're fine-tuning an existing model.

Learning Rate and Batch Size

  • 중요성: 이러한 하이퍼파라미터는 학습 중에 모델이 가중치를 업데이트하는 방법을 결정하는 데 중추적인 역할을 합니다.

  • 권장 사항: 선택한 학습 속도와 배치 크기가 특정 데이터 세트에 최적인지 정기적으로 평가하세요. 데이터 세트의 특성과 일치하지 않는 매개변수는 모델의 성능을 저해할 수 있습니다.

클래스 배포

  • 중요성: 데이터 집합의 클래스 분포는 모델의 예측 경향에 영향을 미칠 수 있습니다.

  • 권장 사항: 데이터 집합 내의 클래스 분포를 정기적으로 평가하세요. 클래스 불균형이 있는 경우, 모델이 더 많이 분포하는 클래스에 편향될 위험이 있습니다. 이러한 편향은 혼동 행렬에서 분명하게 드러날 수 있으며, 여기서 모델은 주로 다수 클래스를 예측할 수 있습니다.

사전 학습된 가중치로 교차 확인

  • 중요성: 사전 학습된 가중치를 활용하면 특히 데이터가 제한적인 경우 모델 학습을 위한 확실한 출발점을 제공할 수 있습니다.

  • 권장 사항: 진단 단계로 동일한 데이터를 사용하여 모델을 훈련하되 미리 훈련된 가중치로 초기화하는 것을 고려해 보세요. 이 접근 방식을 통해 혼동 행렬이 잘 형성되면 '처음부터' 모델에 추가 학습이나 조정이 필요할 수 있음을 시사할 수 있습니다.

이 섹션에서는 모델 예측 중에 직면하는 일반적인 문제를 다룹니다.

Getting Bounding Box Predictions With Your YOLO11 Custom Model

Issue: When running predictions with a custom YOLO11 model, there are challenges with the format and visualization of the bounding box coordinates.

솔루션:

  • Coordinate Format: YOLO11 provides bounding box coordinates in absolute pixel values. To convert these to relative coordinates (ranging from 0 to 1), you need to divide by the image dimensions. For example, let's say your image size is 640x640. Then you would do the following:
# 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
  • 파일 이름: 예측 대상 이미지의 파일 이름을 얻으려면 예측 루프 내의 결과 개체에서 직접 이미지 파일 경로에 액세스합니다.

Filtering Objects in YOLO11 Predictions

Issue: Facing issues with how to filter and display only specific objects in the prediction results when running YOLO11 using the Ultralytics library.

해결 방법: 특정 클래스를 감지하려면 classes 인수를 사용하여 출력에 포함할 클래스를 지정합니다. 예를 들어, 자동차만 감지하려면('cars'의 클래스 인덱스가 2라고 가정):

yolo task=detect mode=segment model=yolo11n-seg.pt source='path/to/car.mp4' show=True classes=2

Understanding Precision Metrics in YOLO11

Issue: Confusion regarding the difference between box precision, mask precision, and confusion matrix precision in YOLO11.

Solution: Box precision measures the accuracy of predicted bounding boxes compared to the actual ground truth boxes using IoU (Intersection over Union) as the metric. Mask precision assesses the agreement between predicted segmentation masks and ground truth masks in pixel-wise object classification. Confusion matrix precision, on the other hand, focuses on overall classification accuracy across all classes and does not consider the geometric accuracy of predictions. It's important to note that a bounding box can be geometrically accurate (true positive) even if the class prediction is wrong, leading to differences between box precision and confusion matrix precision. These metrics evaluate distinct aspects of a model's performance, reflecting the need for different evaluation metrics in various tasks.

Extracting Object Dimensions in YOLO11

Issue: Difficulty in retrieving the length and height of detected objects in YOLO11, especially when multiple objects are detected in an image.

Solution: To retrieve the bounding box dimensions, first use the Ultralytics YOLO11 model to predict objects in an image. Then, extract the width and height information of bounding boxes from the prediction results.

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과 같은 대화형 환경을 사용하는 경우에는 중요한 변경이나 설치 후 환경을 다시 시작하는 것이 좋습니다. 새로 시작하면 근본적인 문제를 해결할 수 있는 경우가 있습니다.

  • 공식 문서: 변환에 사용 중인 도구 또는 라이브러리의 공식 문서를 항상 참조하세요. 여기에는 모델 내보내기에 대한 구체적인 지침과 모범 사례가 포함되어 있는 경우가 많습니다.

  • 커뮤니티 지원: 라이브러리 또는 프레임워크의 공식 리포지토리에서 다른 사용자가 보고한 유사한 문제를 확인하세요. 유지 관리자나 커뮤니티에서 토론 스레드에서 해결책이나 해결 방법을 제공했을 수도 있습니다.

  • 정기적으로 업데이트합니다: 최신 버전의 도구 또는 라이브러리를 사용하고 있는지 확인하세요. 개발자는 알려진 버그를 수정하거나 기능을 개선하는 업데이트를 자주 릴리스합니다.

  • 점진적으로 테스트하세요: 전체 변환을 수행하기 전에 더 작은 모델이나 데이터 세트로 프로세스를 테스트하여 잠재적인 문제를 조기에 파악하세요.

커뮤니티 및 지원

Engaging with a community of like-minded individuals can significantly enhance your experience and success in working with YOLO11. Below are some channels and resources you may find helpful.

도움을 받을 수 있는 포럼 및 채널

GitHub Issues: The YOLO11 repository on GitHub has an Issues tab where you can ask questions, report bugs, and suggest new features. The community and maintainers are active here, and it's a great place to get help with specific problems.

Ultralytics 디스코드 서버: Ultralytics 다른 사용자 및 개발자와 소통할 수 있는 디스코드 서버가 있습니다.

공식 문서 및 리소스

Ultralytics YOLO11 Docs: The official documentation provides a comprehensive overview of YOLO11, along with guides on installation, usage, and troubleshooting.

These resources should provide a solid foundation for troubleshooting and improving your YOLO11 projects, as well as connecting with others in the YOLO11 community.

결론

Troubleshooting is an integral part of any development process, and being equipped with the right knowledge can significantly reduce the time and effort spent in resolving issues. This guide aimed to address the most common challenges faced by users of the YOLO11 model within the Ultralytics ecosystem. By understanding and addressing these common issues, you can ensure smoother project progress and achieve better results with your computer vision tasks.

Ultralytics 커뮤니티는 귀중한 리소스임을 기억하세요. 동료 개발자 및 전문가와 소통하면 표준 문서에서 다루지 않은 추가적인 인사이트와 솔루션을 얻을 수 있습니다. 항상 배우고, 실험하고, 경험을 공유하여 커뮤니티의 집단 지식에 기여하세요.

행복한 문제 해결!

자주 묻는 질문

How do I resolve installation errors with YOLO11?

설치 오류는 호환성 문제나 종속성 누락으로 인해 발생하는 경우가 많습니다. Python 3.8 이상을 사용하고 PyTorch 1.8 이상을 설치했는지 확인하세요. 충돌을 피하려면 가상 환경을 사용하는 것이 좋습니다. 단계별 설치 가이드는 공식 설치 가이드를 참조하세요. 가져오기 오류가 발생하면 새로 설치하거나 라이브러리를 최신 버전으로 업데이트하세요.

Why is my YOLO11 model training slow on a single GPU?

배치 크기가 크거나 메모리가 부족하여 단일 GPU 에서 훈련하는 속도가 느려질 수 있습니다. 훈련 속도를 높이려면 여러 개의 GPU를 사용하세요. 시스템에 여러 개의 GPU를 사용할 수 있는지 확인하고 .yaml 구성 파일을 사용하여 GPU 수를 지정할 수 있습니다, gpus: 4. 메모리 제한을 초과하지 않고 GPU를 최대한 활용하려면 배치 크기를 적절히 늘립니다. 명령 예시:

model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)

How can I ensure my YOLO11 model is training on the GPU?

트레이닝 로그에서 'device' 값이 'null'로 표시되면 일반적으로 트레이닝 프로세스가 사용 가능한 GPU 을 자동으로 사용하도록 설정되어 있음을 의미합니다. 특정 GPU 을 명시적으로 할당하려면, 여러분의 .yaml 구성 파일을 추가합니다. 예를 들어

device: 0

이렇게 하면 교육 프로세스가 첫 번째 GPU 로 설정됩니다. 를 참조하십시오. nvidia-smi 명령을 실행하여 CUDA 설정을 확인합니다.

How can I monitor and track my YOLO11 model training progress?

Tracking and visualizing training progress can be efficiently managed through tools like TensorBoard, Comet, and Ultralytics HUB. These tools allow you to log and visualize metrics such as loss, precision, recall, and mAP. Implementing early stopping based on these metrics can also help achieve better training outcomes.

What should I do if YOLO11 is not recognizing my dataset format?

데이터 세트와 레이블이 예상되는 형식을 따르는지 확인합니다. 주석이 정확하고 고품질인지 확인합니다. 문제가 발생하면 데이터 수집 및 어노테이션 가이드에서 모범 사례를 참조하세요. 데이터 집합에 대한 자세한 지침은 문서에서 데이터 집합 섹션을 참조하세요.

📅 Created 11 months ago ✏️ Updated 22 days ago

댓글