YOLO Vision 2026:

Khắc phục sự cố thường gặp với YOLO#

YOLO common training and deployment issues

Hướng dẫn này bao gồm các sự cố phổ biến nhất mà bạn sẽ gặp phải khi làm việc với Ultralytics YOLO26, được nhóm theo vị trí xảy ra: installation, model training, predictiondeployment. Hãy chuyển đến danh mục tương ứng với lỗi của bạn, hoặc quét qua FAQ để có câu trả lời nhanh. Mỗi mục nêu rõ vấn đề và cách khắc phục cụ thể mà bạn có thể áp dụng trực tiếp.



Watch: Ultralytics YOLO26 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 như phiên bản không tương thích, thiếu các thành phần phụ thuộc (dependencies) 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 bạn đang thực hiện các bước sau:

  • Bạn đang sử dụng Python 3.8 hoặc mới hơn theo khuyến nghị.
  • Đảm bảo rằng bạn đã cài đặt đúng phiên bản của PyTorch (1.8 hoặc mới hơn).
  • Cân nhắc sử dụng môi trường ảo để tránh xung đột.
  • Thực hiện theo official installation guide từng bước một.

Ngoài ra, dưới đây là các giải pháp cho các vấn đề cài đặt thường gặp.

Luôn cập nhật Ultralytics và các phụ thuộc của nó

Nhiều lỗi import, GPU và export được khắc phục đơn giản bằng cách nâng cấp. Chạy pip install -U ultralytics và xác nhận các phiên bản PyTorch và CUDA của bạn tương thích trước khi gỡ lỗi sâu hơn.

Lỗi Import hoặc Vấn đề về Phụ thuộc#

Nếu bạn gặp lỗi khi import YOLO26 hoặc xung đột phụ thuộc, hãy thử các bước sau:

  • Cài đặt mới: Bắt đầu bằng một bản cài đặt sạch có thể giải quyết các vấn đề không mong muốn, đặc biệt là sau các bản cập nhật thay đổi cấu trúc hoặc chức năng của gói.
  • Cập nhật thường xuyên: Sử dụng phiên bản mới nhất của thư viện, vì các bản phát hành cũ hơn có thể không tương thích với các bản cập nhật gần đây.
  • Kiểm tra phụ thuộc: Xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách và có phiên bản tương thích.
  • Xem lại các thay đổi: Nếu bạn đã cài đặt phiên bản cũ hơn, hãy tham khảo tài liệu chính thức hoặc nhật ký thay đổi (changelog) để hiểu bất kỳ thay đổi cấu trúc lớn nào.

Chạy YOLO26 trên GPU#

Nếu bạn gặp khó khăn khi chạy YOLO26 trên GPU, hãy xem xét các bước xử lý sự cố sau:

  • Xác minh tính tương thích và cài đặt của 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 lệnh nvidia-smi để kiểm tra trạng thái GPU NVIDIA và phiên bản CUDA của bạn.
  • Kiểm tra tích hợp PyTorch và CUDA: Đảm bảo PyTorch có thể sử dụng CUDA bằng cách chạy import torch; print(torch.cuda.is_available()) trong một terminal Python. Nếu 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 ở đúng môi trường nơi tất cả các gói cần thiết đã được cài đặt.
  • Cập nhật các 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. Hãy giữ chúng luôn cập nhật.
  • Cấu hình chương trình: Kiểm tra xem mã của bạn có yêu cầu sử dụng GPU hay không. Bạn có thể đặt tham số device khi chạy huấn luyện hoặc dự đoán (ví dụ: device=0).
Các GPU cũ hơn và cuDNN 9.11.0+

Hỗ trợ cho các kiến trúc GPU cũ hơn Turing — khả năng tính toán (SM) dưới 7.5, chẳng hạn như 1080 Ti — đã bị loại bỏ trong cuDNN 9.11.0. Trên GPU cũ hơn, bạn có thể cần một bản build của PyTorch được biên dịch với phiên bản CUDA/cuDNN cũ hơn. Kiểm tra thiết lập của bạn bằng:

import torch

cap = torch.cuda.get_device_capability(0) if torch.cuda.is_available() else (0, 0)
cudnn = torch.backends.cudnn.version() or 0
ok = "not compatible" if cudnn >= 91100 and (cap[0] < 7 or (cap[0] == 7 and cap[1] < 5)) else "should be ok"
print(f"Compute capability: SM {cap[0]}.{cap[1]}, cuDNN: {cudnn} => {ok}")

Sự cố khi huấn luyện mô hình#

Các vấn đề huấn luyện thường gặp và cách khắc phục được trình bày bên dưới.

Xác minh các thiết lập cấu hình#

Vấn đề: Bạn không chắc liệu các cài đặt cấu hình trong tệp .yaml có đang được áp dụng đúng cách trong quá trình huấn luyện mô hình hay không.

Giải pháp: Các cài đặt cấu hình trong tệp .yaml phải được áp dụng khi sử dụng hàm model.train(). Để đảm bảo các cài đặt này được áp dụng đúng cách, hãy làm theo các bước sau:

  • Xác nhận rằng đường dẫn đến tệp cấu hình .yaml của bạn là chính xác.

  • Đảm bảo bạn truyền đường dẫn đến tệp .yaml của mình làm tham số data khi gọi model.train(), như hiển thị bên dưới:

    model.train(data="/path/to/your/data.yaml", batch=4)

Tăng tốc huấn luyện với nhiều GPU#

Sự cố: Quá trình huấn luyện diễn ra chậm trên một GPU đơn lẻ và bạn muốn tăng tốc quy trình bằng cách sử dụng nhiều GPU.

Giải pháp: Tăng batch size có thể đẩy nhanh quá trình huấn luyện, nhưng điều quan trọng là phải xem xét dung lượng bộ nhớ GPU. Để tăng tốc độ huấn luyện với multiple GPUs, hãy làm theo các bước sau:

  • Đảm bảo rằng bạn có sẵn nhiều GPU.

  • Đặt tham số device thành một danh sách các chỉ mục GPU, ví dụ: device=[0,1,2,3].

  • Tăng batch size phù hợp để tận dụng tối đa nhiều GPU mà không vượt quá giới hạn bộ nhớ.

  • Sửa đổi lệnh huấn luyện của bạn để tận 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, device=[0, 1, 2, 3])

Thông số giám sát liên tục#

Sự cố: Bạn muốn biết những thông số nào nên được giám sát liên tục trong quá trình huấn luyện, ngoài loss.

Giải pháp: Mặc dù loss là một chỉ số quan trọng cần giám sát, nhưng cũng rất cần thiết để theo dõi các chỉ số khác nhằm tối ưu hóa hiệu suất mô hình. Một số chỉ số chính cần theo dõi trong khi huấn luyện bao gồm:

Bạn có thể truy cập các chỉ số này từ nhật ký huấn luyện 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 early stopping 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 huấn luyện#

Sự cố: Bạn đang tìm kiếm các đề xuất về công cụ để theo dõi tiến trình huấn luyện.

Giải pháp: Để theo dõi và trực quan hóa tiến trình huấn luyện, 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 chỉ số huấn luyện, bao gồm loss, accuracy và nhiều hơn nữa. Bạn có thể tích hợp nó với quy trình huấn luyện YOLO26 của mình.
  • 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 các chỉ số, siêu tham số và thậm chí cả trọng số mô hình. Việc tích hợp với các mô hình YOLO cũng rất đơn giản, cung cấp cho bạn cái nhìn tổng quan hoàn chỉnh về chu kỳ thử nghiệm của mình.
  • Ultralytics Platform: Ultralytics Platform cung cấp một môi trường chuyên biệt để theo dõi các mô hình YOLO, mang đến cho bạn một nền tảng một cửa để quản lý các chỉ số, tập 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 tùy chỉnh dành riêng cho YOLO, nền tảng này cung cấp nhiều tùy chọn theo dõi tùy chỉnh hơn.

Cách kiểm tra xem quá trình huấn luyện có đang diễn ra trên GPU hay không#

Sự cố: Giá trị 'device' trong nhật ký huấn luyện là 'null' và bạn không chắc liệu quá trình huấn luyện có đang diễn ra trên GPU hay không.

Giải pháp: Giá trị 'device' là 'null' thường có nghĩa là quá trình huấn luyện được đặt để tự động chọn một GPU khả dụng, đây là hành vi mặc định. Để huấn luyện trên một GPU cụ thể, hãy đặt tham số device khi bạn bắt đầu huấn luyện. device là một tham số huấn luyện, vì vậy việc đặt nó trong tệp cấu hình tập dữ liệu .yaml của bạn sẽ không có hiệu lực:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Use GPU 0; device=[0, 1] for multiple GPUs, device="cpu" for CPU
model.train(data="path/to/data.yaml", device=0)

Hãy để mắt đến thư mục 'runs' để xem nhật ký và chỉ số nhằm giám sát tiến trình huấn luyện một cách hiệu quả.

Các cân nhắc chính để huấn luyện mô hình hiệu quả#

Dưới đây là một số điều cần lưu ý nếu bạn đang gặp sự cố liên quan đến huấn luyện mô hình.

Định dạng bộ dữ liệu và nhãn

  • Tầm quan trọng: Nền tảng của bất kỳ mô hình machine learning nào nằm ở chất lượng và định dạng của dữ liệu dùng để huấn luyện nó.
  • Khuyến nghị: Đảm bảo bộ dữ liệu tùy chỉnh của bạn và các nhãn liên quan tuân thủ đúng định dạng mong đợi. Điều quan trọng là phải xác minh rằng các chú thích (annotations) là chính xác và có chất lượng cao. Các chú thích không chính xác hoặc kém chất lượng có thể làm trật bánh quá trình học tập của mô hình, dẫn đến những kết quả khó lường.

Sự hội tụ của mô hình

  • Tầm quan trọng: Đạt được sự hội tụ của mô hình đảm bảo rằng mô hình đã học đủ từ training data.
  • Khuyến nghị: Khi huấn luyện một mô hình 'từ đầu', điều quan trọng là đảm bảo 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 huấn luyện lâu hơn, với nhiều epochs hơn so với khi bạn đang tinh chỉnh (fine-tuning) một mô hình hiện có.

Learning Rate và Batch Size

  • Tầm quan trọng: Các siêu tham số này đóng vai trò then chốt trong việc xác định cách mô hình cập nhật trọng số trong quá trình huấn luyện.
  • Khuyến nghị: Thường xuyên đánh giá xem learning rate và batch size đã chọn có tối ưu cho bộ 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 điểm của bộ dữ liệu có thể cản trở hiệu suất của mô hình.

Phân phối lớp (Class Distribution)

  • Tầm quan trọng: Sự phân phối các lớp trong bộ 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 phối các lớp trong bộ dữ liệu của bạn. Nếu có sự mất cân bằng giữa các lớp, có nguy cơ mô hình sẽ phát triển thiên kiến đối với lớp phổ biến hơn. Thiên kiến này có thể thấy rõ trong confusion matrix, nơi mô hình có thể dự đoán chủ yếu lớp chiếm đa số.

Kiểm tra chéo với trọng số đã huấn luyện sẵn (Pretrained Weights)

  • Tầm quan trọng: Tận dụng các trọng số đã huấn luyện sẵn có thể cung cấp điểm khởi đầu vững chắc cho việc huấn luyện mô hình, đặc biệt là khi dữ liệu hạn chế.
  • Khuyến nghị: Là một bước chẩn đoán, hãy cân nhắc huấn luyện mô hình của bạn bằng cùng dữ liệu nhưng khởi tạo nó với các trọng số đã huấn luyện sẵn. Nếu cách tiếp cận này tạo ra một confusion matrix được hình thành tốt, điều đó có thể cho thấy mô hình 'từ đầu' có thể cần huấn luyện hoặc điều chỉnh thêm.

Các vấn đề liên quan đến dự đoán mô hình#

Các vấn đề thường gặp trong quá trình dự đoán mô hình và cách khắc phục được trình bày bên dưới.

Nhận dự đoán Bounding Box với mô hình YOLO26 tùy chỉnh của bạn#

Sự cố: Khi chạy dự đoán với mô hình YOLO26 tùy chỉnh, có những thách thức về định dạng và trực quan hóa tọa độ bounding box.

Giải pháp:

  • Định dạng tọa độ: YOLO26 cung cấp tọa độ bounding box theo giá trị pixel tuyệt đối. Để chuyển đổi chúng sang tọa độ tương đối (từ 0 đến 1), bạn cần chia cho kích thước hình ảnh. Ví dụ, giả sử kích thước hình ảnh của bạn là 640x640. Sau đó, bạn sẽ thực hiện như sau:

    # 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 trực tiếp đường dẫn tệp hình ảnh từ đối tượng kết quả trong vòng lặp dự đoán của bạn.

Lọc các đối tượng trong dự đoán YOLO26#

Sự cố: Gặp sự cố 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 YOLO26 bằng thư viện Ultralytics.

Giải pháp: Để phát hiện các lớp cụ thể, hãy sử dụng đối số classes để chỉ định các lớp bạn muốn bao gồm trong đầu ra. Ví dụ, để chỉ phát hiện ô tô (giả sử 'ô tô' có chỉ mục lớp là 2):

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

Hiểu về các chỉ số Precision trong YOLO26#

Vấn đề: Sự nhầm lẫn về sự khác biệt giữa độ chính xác của hộp (box precision), độ chính xác của mặt nạ (mask precision) và độ chính xác của confusion matrix trong YOLO26.

Giải pháp: Độ chính xác của hộp đo lường tính chính xác của các bounding box được dự đoán so với các hộp ground truth thực tế bằng cách sử dụng IoU (Intersection over Union) làm chỉ số. Độ chính xác của mặt nạ đánh giá mức độ trùng khớp giữa các segmentation mask được dự đoán và các mặt nạ ground truth trong phân loại đối tượng theo từng pixel. Ngược lại, độ chính xác của confusion matrix 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 bounding box có thể chính xác về mặt hình học (true positive) 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 confusion matrix. Các chỉ số này đánh giá các khía cạnh khác nhau về hiệu suất của mô hình, phản ánh nhu cầu sử dụng các chỉ số đánh giá khác nhau trong các tác vụ khác nhau.

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

Sự cố: 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 YOLO26, đặc biệt là khi có 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 của bounding box, trước tiên hãy sử dụng mô hình Ultralytics YOLO26 để predict objects 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 bounding box từ kết quả dự đoán.

from ultralytics import YOLO

# Load a pretrained YOLO26 model
model = YOLO("yolo26n.pt")

# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"

# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.25)

# 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#

Sự cố: Triển khai 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ư mức sử dụng bộ nhớ bất thường, kết quả không nhất quán giữa 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 thao tác CUDA trên một GPU mặc định trước khi chuyển sang các 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ụ để giám sát mức sử dụng GPU và mức sử dụng bộ nhớ để xác định bất kỳ điểm 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.

Sự cố chuyển đổi/xuất mô hình#

Sự cố: Trong quá trình chuyển đổi hoặc xuất các mô hình machine learning sang các định dạng hoặc nền tảng khác, người dùng có thể gặp lỗi hoặc hành vi không mong muốn.

Giải pháp: Xem lại các định dạng được hỗ trợ và các tùy chọn theo từng định dạng trong tài liệu Export mode, sau đó thực hiện các bước kiểm tra sau:

  • 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à framework 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 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 đề tiềm ẩ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à các phương pháp thực tiễn tốt nhất để xuất mô hình.
  • Hỗ trợ từ cộng đồng: Kiểm tra kho lưu trữ chính thức của thư viện hoặc framework để xem các vấn đề tương tự do những người dùng khác báo cáo. Những người duy 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 giúp 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 toàn bộ, hãy kiểm tra quy trình với một mô hình hoặc bộ dữ liệu nhỏ hơn để xác định các vấn đề tiềm ẩn từ sớm.

Cộng đồng và hỗ trợ#

Nhận trợ giúp và chia sẻ giải pháp thông qua các kênh và tài nguyên này.

Các diễn đàn và kênh để nhận hỗ trợ#

GitHub Issues: Repository YOLO26 trên GitHub có một tab Issues nơi bạn có thể đặt câu hỏi, báo cáo lỗi và đề xuất tính năng mới. Cộng đồng và các maintainer hoạt động rất tích cực ở đây, và đây là một nơi tuyệt vời để nhận trợ giúp về các vấn đề cụ thể.

Ultralytics Discord Server: Ultralytics có một Discord server nơi bạn có thể tương tác với các người dùng khác và các developer.

Tài liệu và tài nguyên chính thức#

Tài liệu Ultralytics YOLO26: official documentation cung cấp tổng quan toàn diện về YOLO26, cùng với các hướng dẫn về cài đặt, sử dụng và khắc phục sự cố.

Kết luận#

Hầu hết các sự cố YOLO26 bắt nguồn từ một số nguyên nhân chính: không tương thích phiên bản, định dạng tập dữ liệu và cấu hình GPU. Khi một lỗi không được đề cập ở đây, hãy tìm kiếm trong tab GitHub Issues hoặc hỏi trên Discord server — rất có thể ai đó đã giải quyết được vấn đề đó. Đối với các vấn đề sâu hơn về training, hãy xem hướng dẫn Model Training Tips để có lời khuyên thiết thực nhằm đạt được kết quả tốt hơn với các dự án computer vision của bạn.

Câu hỏi thường gặp#

  • Lỗi cài đặt thường có thể do sự cố tương thích hoặc thiếu các phụ thuộc. Đảm bảo bạn sử dụng Python 3.8 trở lên và đã cài đặt PyTorch 1.8 trở lên. Việc sử dụng các môi trường ảo là rất có lợi để tránh xung đột. Để có hướng dẫn cài đặt từng bước, hãy làm theo official installation guide của chúng tôi. Nếu bạn gặp lỗi import, 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.

  • Huấn luyện trên một GPU đơn lẻ có thể chậm do batch size lớn hoặc bộ nhớ không đủ. Để tăng tốc độ huấn luyện, 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à đặt tham số device, ví dụ: device=[0,1,2,3]. Tăng batch size tương ứng để tận dụng tối đa các GPU mà không vượt quá giới hạn bộ nhớ. Lệnh ví dụ:

    model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])
  • Nếu giá trị 'device' hiển thị 'null' trong nhật ký huấn luyện, điều đó thường có nghĩa là quá trình huấn luyện được đặt để tự động chọn một GPU khả dụng. Để chỉ định rõ ràng một GPU cụ thể, hãy truyền tham số device khi bạn bắt đầu huấn luyện, ví dụ yolo train data=path/to/data.yaml device=0 cho GPU đầu tiên. Tham khảo lệnh nvidia-smi để xác nhận thiết lập CUDA của bạn.

  • Việc theo dõi và trực quan hóa tiến trình huấn luyện có thể được quản lý hiệu quả thông qua các công cụ như TensorBoard, CometUltralytics Platform. Các công cụ này cho phép bạn ghi lại và trực quan hóa các chỉ số như loss, precision, recall và mAP. Việc thực hiện early stopping dựa trên các chỉ số này cũng có thể giúp đạt được kết quả huấn luyện tốt hơn.

  • Đảm bảo tập dữ liệu và nhãn của bạn tuân thủ định dạng dự kiến. Xác minh rằng các 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 Data Collection and Annotation để biết các phương pháp hay nhất. Để có thêm hướng dẫn cụ thể về tập dữ liệu, hãy kiểm tra phần Datasets trong tài liệu.

Bình luận