Bỏ để qua phần nội dung

Khắc phục sự cố thường gặp YOLO Vấn đề

YOLO Hình ảnh các vấn đề thường gặp

Giới thiệu

Hướng dẫn này đóng vai trò trợ giúp toàn diện để khắc phục sự cố thường gặp khi làm việc với YOLOv8 trên của bạn Ultralytics Dự án. Điều hướng qua những vấn đề này có thể dễ dàng với hướng dẫn phù hợp, đảm bảo các dự án của bạn vẫn đi đúng hướng mà không bị chậm trễ không cần thiết.



Xem: Ultralytics YOLOv8 Các vấn đề thường gặp | Lỗi cài đặt, sự cố đào tạo mô hình

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ị.

  • Đảm bảo rằng bạn có phiên bản chính xác của PyTorch (1.8 trở lên) được cài đặt.

  • 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ọ:

  • Nhập lỗi hoặc các vấn đề phụ thuộc - Nếu bạn gặp lỗi trong quá trình nhập YOLOv8hoặc bạn đang gặp sự cố liên quan đến quan hệ phụ thuộc, hãy xem xét các bước khắc phục sự cố sau:

    • 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.

  • Chạy YOLOv8 trên GPU - Nếu bạn gặp sự cố khi chạy YOLOv8 trên GPU, hãy xem xét các bước khắc phục sự cố sau:

    • Xác minh tính tương thích và cài đặt CUDA: Đảm bảo GPU của bạn tương thích với CUDA và 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 GPU NVIDIA và phiên bản CUDA của bạn.

    • Kiểm PyTorch và Tích hợp CUDA: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 của bạn. Luôn cập nhật chúng.

    • Cấu hình chương trình: Kiểm tra xem chương trình hoặc mã có chỉ định sử dụng GPU hay không. Trong YOLOv8, điều này có thể nằm trong cài đặt hoặc cấu hình.

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ạng data Tranh luận khi gọi model.train(), như hình dưới đây:
model.train(data="/path/to/your/data.yaml", batch=4)

Tăng tốc đào tạo với nhiều GPU

Vấn đề: Quá trình đào tạo chậm trên một GPU duy nhất và bạn muốn tăng tốc quá trình sử dụng nhiều GPU.

Giải pháp: Tăng kích thước lô có thể đẩy nhanh quá trình đào tạo, nhưng điều cần thiết là phải xem xét dung lượng bộ nhớ GPU. Để tăng tốc độ đào tạo với nhiều GPU, hãy làm theo các bước sau:

  • Đả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ớ
  • Độ chính xác trung bình trung bình (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 là một lựa chọn phổ biến để trực quan hóa các số liệu đào tạo, bao gồm tổn thất, độ chính xác và hơn thế nữa. Bạn có thể tích hợp nó với YOLOv8 quá trình đào tạo.
  • 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 việc đào tạo có đang diễn ra trên GPU hay không

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 hay không.

Giải pháp: Giá trị 'thiết bị' là 'null' thường có nghĩa là quá trình đào tạo được đặt để tự động sử dụng GPU có sẵn, đây là hành vi mặc định. Để đảm bảo quá trình đào tạo diễn ra trên một GPU cụ thể, bạn có thể đặt thủ công giá trị 'thiết bị' thành chỉ mục GPU (ví dụ: '0' cho GPU đầu tiên) trong tệp cấu hình .yaml của mình:

device: 0

Điều này sẽ chỉ định rõ ràng quá trình đào tạo cho GPU được chỉ định. Nếu bạn muốn đào tạo trên CPU, hãy đặ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

  • Tầm quan trọng: Nền tảng của bất kỳ mô hình học máy nào nằm ở chất lượng và định dạng của dữ liệu mà nó được đào tạo.

  • Đề 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

  • Tầm quan trọng: Đạt được sự hội tụ mô hình đảm bảo rằng mô hình đã học được đầy đủ từ dữ liệu đào tạo.

  • Khuyến nghị: Khi đào tạo một mô hình 'từ đầu', điều quan trọng là phải đảm bảo rằng mô hình đạt đến mức hội tụ thỏa đáng. Điều này có thể đòi hỏi thời gian đào tạo dài hơn, với nhiều kỷ nguyên hơn, so với khi bạn tinh chỉnh một mô hình hiện có.

Tỷ lệ học tập và quy mô hàng loạt

  • 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.

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.

Nhận dự đoán hộp giới hạn với YOLOv8 Mô hình tùy chỉnh

Vấn đề: Khi chạy dự đoán có tùy chỉnh YOLOv8 mô hình, có những thách thức với định dạng và trực quan hóa tọa độ hộp giới hạn.

Giải pháp:

  • Coordinate Format: YOLOv8 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.

Lọc đối tượng trong YOLOv8 Dự đoán

Vấn đề: Đối mặt với các vấn đề về cách lọc và chỉ hiển thị các đối tượng cụ thể trong kết quả dự đoán khi chạy YOLOv8 Sử dụng Ultralytics thư viện.

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):

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

Hiểu các chỉ số chính xác trong YOLOv8

Vấn đề: Sự nhầm lẫn về sự khác biệt giữa độ chính xác của hộp, độ chính xác của mặt nạ và độ chính xác của ma trận nhầm lẫn trong YOLOv8.

Giải pháp: Độ chính xác của hộp đo độ chính xác của các hộp giới hạn dự đoán so với các hộp sự thật mặt đất thực tế sử dụng IoU (Giao lộ trên Liên minh) làm số liệu. Độ chính xác của mặt nạ đánh giá sự phù hợp giữa mặt nạ phân đoạn dự đoán và mặt nạ sự thật mặt đất trong phân loại đối tượng theo pixel. Mặt khác, độ chính xác của ma trận nhầm lẫn tập trung vào độ chính xác phân loại tổng thể trên tất cả các lớp và không xem xét độ chính xác hình học của các dự đoán. Điều quan trọng cần lưu ý là một hộp giới hạn có thể chính xác về mặt hình học (dương tính thật) ngay cả khi dự đoán lớp sai, dẫn đến sự khác biệt giữa độ chính xác của hộp và độ chính xác của ma trận nhầm lẫn. Các số liệu này đánh giá các khía cạnh riêng biệt về hiệu suất của mô hình, phản ánh nhu cầu về các số liệu đánh giá khác nhau trong các nhiệm vụ khác nhau.

Trích xuất kích thước đối tượng trong YOLOv8

Vấn đề: Khó khăn trong việc truy xuất chiều dài và chiều cao của các đối tượng được phát hiện trong YOLOv8, đặc biệt là khi nhiều đối tượng được phát hiện trong một hình ảnh.

Giải pháp: Để truy xuất kích thước hộp giới hạn, trước tiên hãy sử dụng Ultralytics YOLOv8 Mô hình hóa để dự đoán các đối tượng trong một hình ảnh. Sau đó, trích xuất thông tin chiều rộng và chiều cao của các hộp giới hạn từ kết quả dự đoán.

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.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

Sự cố triển khai GPU

Phát: Việc triển khai các mô hình trong môi trường đa GPU đô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 khởi tạo GPU mặc định. Một số framework, như PyTorch, có thể khởi tạo các hoạt động CUDA trên GPU mặc định 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ự đoán. Sau đó, sử dụng các công cụ để theo dõi việc sử dụng GPU 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ợ

Tham gia với một cộng đồng gồm những cá nhân có cùng chí hướng có thể nâng cao đáng kể kinh nghiệm và thành công của bạn khi làm việc với YOLOv8. Dưới đây là một số kênh và tài nguyên bạn có thể thấy hữu ích.

Diễn đàn và kênh để nhận trợ giúp

GitHub Issues: The YOLOv8 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 YOLOv8 Tài liệu: Tài liệu chính thức cung cấp tổng quan toàn diện về YOLOv8, cùng với hướng dẫn cài đặt, sử dụng và khắc phục sự cố.

Những tài nguyên này sẽ cung cấp một nền tảng vững chắc để khắc phục sự cố và cải thiện YOLOv8 các dự án, cũng như kết nối với những người khác trong YOLOv8 cộng đồng.

Kết thúc

Khắc phục sự cố là một phần không thể thiếu trong bất kỳ quá trình phát triển nào và được trang bị kiến thức phù hợp có thể giảm đáng kể thời gian và công sức dành cho việc giải quyết vấn đề. Hướng dẫn này nhằm giải quyết những thách thức phổ biến nhất mà người dùng YOLOv8 Mô hình trong Ultralytics hệ sinh thái. Bằng cách hiểu và giải quyết những vấn đề phổ biến này, bạn có thể đảm bảo tiến độ dự án mượt mà hơn và đạt được kết quả tốt hơn với các nhiệm vụ thị giác máy tính của mình.

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ẻ!



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (5), RizwanMunawar (1)

Ý kiến