Khắc phục sự cố thường gặp YOLO Vấn đề
Giới thiệu
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.
Xem: Ultralytics YOLO11 Common Issues | Installation Errors, Model Training Issues
Các vấn đề thường gặp
Lỗi cài đặt
Lỗi cài đặt có thể phát sinh do nhiều lý do, chẳng hạn như phiên bản không tương thích, thiếu phụ thuộc hoặc thiết lập môi trường không chính xác. Trước tiên, hãy kiểm tra để đảm bảo rằng bạn đang làm như sau:
-
Bạn đang sử dụng Python 3.8 trở lên theo khuyến nghị.
-
Ensure that you have the correct version of PyTorch (1.8 or later) installed.
-
Cân nhắc sử dụng môi trường ảo để tránh xung đột.
-
Làm theo hướng dẫn cài đặt chính thức từng bước.
Ngoài ra, đây là một số sự cố cài đặt phổ biến mà người dùng gặp phải, cùng với các giải pháp tương ứng của họ:
-
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:
-
Cài đặt mới: Đôi khi, bắt đầu với một cài đặt mới có thể giải quyết các vấn đề không mong muốn. Đặc biệt là với các thư viện như Ultralytics, nơi các bản cập nhật có thể đưa ra các thay đổi đối với cấu trúc hoặc chức năng của cây tệp.
-
Cập nhật thường xuyên: Đảm bảo bạn đang sử dụng phiên bản mới nhất của thư viện. Các phiên bản cũ hơn có thể không tương thích với các bản cập nhật gần đây, dẫn đến xung đột hoặc sự cố tiềm ẩn.
-
Kiểm tra phần phụ thuộc: Xác minh rằng tất cả các phụ thuộc bắt buộc được cài đặt chính xác và có phiên bản tương thích.
-
Xem lại Thay đổi: Nếu ban đầu bạn sao chép hoặc cài đặt phiên bản cũ hơn, hãy lưu ý rằng các bản cập nhật quan trọng có thể ảnh hưởng đến cấu trúc hoặc chức năng của thư viện. Luôn tham khảo tài liệu chính thức hoặc nhật ký thay đổi để hiểu bất kỳ thay đổi lớn nào.
-
Hãy nhớ rằng, giữ cho các thư viện và phụ thuộc của bạn được cập nhật là rất quan trọng để có trải nghiệm mượt mà và không có lỗi.
-
-
Running YOLO11 on GPU - If you're having trouble running YOLO11 on GPU, consider the following troubleshooting steps:
-
Xác minh CUDA Khả năng tương thích và cài đặt: Đảm bảo GPU Là CUDA tương thích và điều đó CUDA được cài đặt chính xác. Sử dụng
nvidia-smi
lệnh để kiểm tra trạng thái của NVIDIA GPU và CUDA Phiên bản. -
Kiểm PyTorch và CUDA Tích hợp:Bảo đảm PyTorch có thể sử dụng CUDA bằng cách chạy
import torch; print(torch.cuda.is_available())
trong một Python Terminal. Nếu nó trả về 'True', PyTorch được thiết lập để sử dụng CUDA. -
Kích hoạt môi trường: Đảm bảo bạn đang ở trong môi trường chính xác, nơi tất cả các gói cần thiết được cài đặt.
-
Cập nhật gói của bạn: Các gói lỗi thời có thể không tương thích với GPU. Luôn cập nhật chúng.
-
Program Configuration: Check if the program or code specifies GPU usage. In YOLO11, this might be in the settings or configuration.
-
Các vấn đề đào tạo mô hình
Phần này sẽ giải quyết các vấn đề phổ biến phải đối mặt trong khi đào tạo và các giải thích và giải pháp tương ứng của họ.
Xác minh cài đặt cấu hình
Phát: Bạn không chắc chắn liệu cài đặt cấu hình trong .yaml
Tệp đang được áp dụng chính xác trong quá trình đào tạo mô hình.
Giải pháp: Cài đặt cấu hình trong .yaml
tập tin nên được áp dụng khi sử dụng model.train()
chức năng. Để đảm bảo rằng các cài đặt này được áp dụng chính xác, hãy làm theo các bước sau:
- Xác nhận rằng đường dẫn đến
.yaml
Tệp cấu hình là chính xác. - Hãy chắc chắn rằng bạn vượt qua con đường dẫn đến
.yaml
dưới dạngdata
Tranh luận khi gọimodel.train()
, như hình dưới đây:
Tăng tốc đào tạo với nhiều GPU
Vấn đề: Đào tạo chậm trên một đơn lẻ GPUvà bạn muốn tăng tốc quá trình sử dụng nhiều 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:
-
Đảm bảo rằng bạn có sẵn nhiều GPU.
-
Sửa đổi tệp cấu hình .yaml của bạn để chỉ định số lượng GPU sẽ sử dụng, ví dụ: GPU: 4.
-
Tăng kích thước lô cho phù hợp để sử dụng đầy đủ nhiều GPU mà không vượt quá giới hạn bộ nhớ.
-
Sửa đổi lệnh đào tạo của bạn để sử dụng nhiều 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)
Thông số giám sát liên tục
Vấn đề: Bạn muốn biết thông số nào cần được theo dõi liên tục trong quá trình đào tạo, ngoài tổn thất.
Giải pháp: Mặc dù tổn thất là một số liệu quan trọng cần theo dõi, nhưng việc theo dõi các số liệu khác để tối ưu hóa hiệu suất mô hình cũng rất cần thiết. Một số chỉ số chính cần theo dõi trong quá trình đào tạo bao gồm:
- Chính xác
- Nhớ
- Mean Average Precision (mAP)
Bạn có thể truy cập các số liệu này từ nhật ký đào tạo hoặc bằng cách sử dụng các công cụ như TensorBoard hoặc wandb để trực quan hóa. Việc triển khai dừng sớm dựa trên các chỉ số này có thể giúp bạn đạt được kết quả tốt hơn.
Công cụ theo dõi tiến trình đào tạo
Vấn đề: Bạn đang tìm kiếm các đề xuất về các công cụ để theo dõi tiến trình đào tạo.
Giải pháp: Để theo dõi và trực quan hóa tiến trình đào tạo, bạn có thể cân nhắc sử dụng các công cụ sau:
- TensorBoard: TensorBoard is a popular choice for visualizing training metrics, including loss, accuracy, and more. You can integrate it with your YOLO11 training process.
- Comet: Comet Cung cấp một bộ công cụ mở rộng để theo dõi và so sánh thử nghiệm. Nó cho phép bạn theo dõi số liệu, siêu tham số và thậm chí cả trọng lượng mô hình. Tích hợp với YOLO Các mô hình cũng đơn giản, cung cấp cho bạn cái nhìn tổng quan đầy đủ về chu kỳ thử nghiệm của bạn.
- Ultralytics TRUNG TÂM: Ultralytics HUB cung cấp một môi trường chuyên biệt để theo dõi YOLO mô hình, cung cấp cho bạn nền tảng một cửa để quản lý số liệu, bộ dữ liệu và thậm chí cộng tác với nhóm của bạn. Với trọng tâm phù hợp của nó vào YOLO, nó cung cấp nhiều tùy chọn theo dõi tùy chỉnh hơn.
Mỗi công cụ này cung cấp một bộ lợi thế riêng, vì vậy bạn có thể muốn xem xét các nhu cầu cụ thể của dự án khi đưa ra lựa chọn.
Cách kiểm tra xem đào tạo có đang diễn ra trên không GPU
Vấn đề: Giá trị 'thiết bị' trong nhật ký đào tạo là 'null' và bạn không chắc liệu quá trình đào tạo có đang diễn ra trên GPU.
Giải pháp: Giá trị 'thiết bị' là 'null' thường có nghĩa là quy trình đào tạo được đặt để tự động sử dụng giá trị có sẵn GPU, là hành vi mặc định. Để đảm bảo đào tạo xảy ra trên một cụ thể GPU, bạn có thể đặt giá trị 'thiết bị' theo cách thủ công thành GPU chỉ mục (ví dụ: '0' cho lần đầu tiên GPU) trong tệp cấu hình .yaml của bạn:
Điều này sẽ chỉ định rõ ràng quá trình đào tạo cho quy định GPU. Nếu bạn muốn đào tạo trên CPU, đặt 'thiết bị' thành 'cpu'.
Theo dõi thư mục 'chạy' để biết nhật ký và số liệu để theo dõi tiến trình đào tạo một cách hiệu quả.
Những cân nhắc chính để đào tạo mô hình hiệu quả
Dưới đây là một số điều cần lưu ý, nếu bạn đang phải đối mặt với các vấn đề liên quan đến đào tạo mô hình.
Định dạng tập dữ liệu và nhãn
-
Importance: The foundation of any machine learning model lies in the quality and format of the data it is trained on.
-
Đề xuất: Đảm bảo rằng tập dữ liệu tùy chỉnh và các nhãn được liên kết tuân thủ định dạng mong đợi. Điều quan trọng là phải xác minh rằng các chú thích là chính xác và có chất lượng cao. Chú thích không chính xác hoặc không chính xác có thể làm hỏng quá trình học tập của mô hình, dẫn đến kết quả không thể đoán trước.
Hội tụ mô hình
-
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
-
Tầm quan trọng: Các siêu tham số này đóng một vai trò quan trọng trong việc xác định cách mô hình cập nhật trọng số của nó trong quá trình đào tạo.
-
Khuyến nghị: Thường xuyên đánh giá xem tỷ lệ học tập và kích thước lô đã chọn có tối ưu cho tập dữ liệu cụ thể của bạn hay không. Các tham số không hài hòa với các đặc tính của tập dữ liệu có thể cản trở hiệu suất của mô hình.
Phân phối lớp học
-
Tầm quan trọng: Sự phân bố các lớp trong tập dữ liệu của bạn có thể ảnh hưởng đến xu hướng dự đoán của mô hình.
-
Khuyến nghị: Thường xuyên đánh giá sự phân bố của các lớp trong tập dữ liệu của bạn. Nếu có sự mất cân bằng giai cấp, có nguy cơ mô hình sẽ phát triển thiên vị đối với lớp phổ biến hơn. Sự thiên vị này có thể được thể hiện rõ trong ma trận nhầm lẫn, trong đó mô hình có thể chủ yếu dự đoán tầng lớp đa số.
Kiểm tra chéo với tạ được đào tạo trước
-
Tầm quan trọng: Tận dụng các trọng lượng được đào tạo trước có thể cung cấp một điểm khởi đầu vững chắc cho việc đào tạo mô hình, đặc biệt là khi dữ liệu bị hạn chế.
-
Khuyến nghị: Là một bước chẩn đoán, hãy xem xét đào tạo mô hình của bạn bằng cách sử dụng cùng một dữ liệu nhưng khởi tạo nó với trọng lượng được đào tạo trước. Nếu cách tiếp cận này mang lại một ma trận nhầm lẫn được hình thành tốt, nó có thể gợi ý rằng mô hình 'từ đầu' có thể yêu cầu đào tạo hoặc điều chỉnh thêm.
Các vấn đề liên quan đến dự đoán mô hình
Phần này sẽ giải quyết các vấn đề phổ biến gặp phải trong quá trình dự đoán mô hình.
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.
Giải pháp:
- 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
- Tên tệp: Để lấy tên tệp của hình ảnh bạn đang dự đoán, hãy truy cập đường dẫn tệp hình ảnh trực tiếp từ đối tượng kết quả trong vòng lặp dự đoán của bạn.
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.
Giải pháp: Để phát hiện các lớp cụ thể, hãy sử dụng đối số lớp để chỉ định các lớp bạn muốn đưa vào đầu ra. Ví dụ: để chỉ phát hiện ô tô (giả sử 'ô tô' có chỉ số loại 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}")
Thách thức triển khai
GPU Vấn đề triển khai
Phát: Triển khai các mô hình trong một multi-GPU Môi trường đôi khi có thể dẫn đến các hành vi không mong muốn như sử dụng bộ nhớ không mong muốn, kết quả không nhất quán trên các GPU, v.v.
Giải pháp: Kiểm tra mặc định GPU Khởi. Một số framework, như PyTorch, có thể khởi tạo CUDA Hoạt động trên mặc định GPU trước khi chuyển sang GPU được chỉ định. Để bỏ qua các khởi tạo mặc định không mong muốn, hãy chỉ định GPU trực tiếp trong quá trình triển khai và dự báo. Sau đó, sử dụng các công cụ để theo dõi GPU sử dụng và sử dụng bộ nhớ để xác định bất kỳ sự bất thường nào trong thời gian thực. Ngoài ra, hãy đảm bảo bạn đang sử dụng phiên bản mới nhất của framework hoặc thư viện.
Các vấn đề về chuyển đổi / xuất mô hình
Phát: Trong quá trình chuyển đổi hoặc xuất các mô hình học máy sang các định dạng hoặc nền tảng khác nhau, người dùng có thể gặp phải lỗi hoặc hành vi không mong muốn.
Giải pháp:
-
Kiểm tra tính tương thích: Đảm bảo rằng bạn đang sử dụng các phiên bản thư viện và khung tương thích với nhau. Các phiên bản không khớp có thể dẫn đến lỗi không mong muốn trong quá trình chuyển đổi.
-
Đặt lại môi trường: Nếu bạn đang sử dụng môi trường tương tác như Jupyter hoặc Colab, hãy cân nhắc khởi động lại môi trường của bạn sau khi thực hiện các thay đổi hoặc cài đặt quan trọng. Một khởi đầu mới đôi khi có thể giải quyết các vấn đề cơ bản.
-
Tài liệu chính thức: Luôn tham khảo tài liệu chính thức của công cụ hoặc thư viện bạn đang sử dụng để chuyển đổi. Nó thường chứa các hướng dẫn cụ thể và thực tiễn tốt nhất để xuất mô hình.
-
Hỗ trợ cộng đồng: Kiểm tra kho lưu trữ chính thức của thư viện hoặc khung để biết các vấn đề tương tự được báo cáo bởi những người dùng khác. Người bảo trì hoặc cộng đồng có thể đã cung cấp các giải pháp hoặc cách giải quyết trong các chủ đề thảo luận.
-
Cập nhật thường xuyên: Đảm bảo rằng bạn đang sử dụng phiên bản mới nhất của công cụ hoặc thư viện. Các nhà phát triển thường xuyên phát hành các bản cập nhật để sửa các lỗi đã biết hoặc cải thiện chức năng.
-
Kiểm tra tăng dần: Trước khi thực hiện chuyển đổi đầy đủ, hãy kiểm tra quy trình với mô hình hoặc tập dữ liệu nhỏ hơn để xác định sớm các vấn đề tiềm ẩn.
Cộng đồng và Hỗ trợ
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.
Diễn đàn và kênh để nhận trợ giúp
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 Máy chủ Discord: Ultralytics có một máy chủ Discord , nơi bạn có thể tương tác với những người dùng khác và các nhà phát triển.
Tài liệu và tài nguyên chính thức
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.
Kết thúc
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.
Hãy nhớ rằng, các Ultralytics Cộng đồng là một nguồn tài nguyên quý giá. Tham gia với các nhà phát triển và chuyên gia đồng nghiệp có thể cung cấp thông tin chi tiết và giải pháp bổ sung có thể không được đề cập trong tài liệu tiêu chuẩn. Luôn không ngừng học hỏi, thử nghiệm và chia sẻ kinh nghiệm để đóng góp vào kiến thức chung của cộng đồng.
Chúc bạn khắc phục sự cố vui vẻ!
FAQ
How do I resolve installation errors with YOLO11?
Lỗi cài đặt thường có thể là do vấn đề tương thích hoặc thiếu phụ thuộc. Đảm bảo bạn sử dụng Python 3.8 trở lên và có PyTorch 1.8 hoặc mới hơn được cài đặt. Thật có lợi khi sử dụng môi trường ảo để tránh xung đột. Để biết hướng dẫn cài đặt từng bước, hãy làm theo hướng dẫn cài đặt chính thức của chúng tôi. Nếu bạn gặp lỗi nhập, hãy thử cài đặt mới hoặc cập nhật thư viện lên phiên bản mới nhất.
Why is my YOLO11 model training slow on a single GPU?
Đào tạo trên một đĩa đơn GPU Có thể chậm do kích thước lô lớn hoặc không đủ bộ nhớ. Để tăng tốc độ đào tạo, hãy sử dụng nhiều GPU. Đảm bảo hệ thống của bạn có sẵn nhiều GPU và điều chỉnh .yaml
tệp cấu hình để chỉ định số lượng GPU, ví dụ: gpus: 4
. Tăng kích thước lô cho phù hợp để sử dụng đầy đủ GPU mà không vượt quá giới hạn bộ nhớ. Lệnh ví dụ:
How can I ensure my YOLO11 model is training on the GPU?
Nếu giá trị "thiết bị" hiển thị "null" trong nhật ký đào tạo, điều đó thường có nghĩa là quy trình đào tạo được đặt thành tự động sử dụng giá trị có sẵn GPU. Để chỉ định rõ ràng một cụ thể GPU, đặt giá trị 'thiết bị' trong .yaml
tệp cấu hình. Chẳng hạn:
Điều này đặt quá trình đào tạo thành đầu tiên GPU. Tham khảo ý kiến nvidia-smi
lệnh để xác nhận CUDA Thiết lập.
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?
Đảm bảo tập dữ liệu và nhãn của bạn phù hợp với định dạng dự kiến. Xác minh rằng chú thích là chính xác và có chất lượng cao. Nếu bạn gặp bất kỳ vấn đề nào, hãy tham khảo hướng dẫn Thu thập và Chú thích dữ liệu để biết các phương pháp hay nhất. Để biết thêm hướng dẫn cụ thể về tập dữ liệu, hãy kiểm tra phần Tập dữ liệu trong tài liệu.