Khắc phục các sự cố YOLO thường gặp#
Hướng dẫn này đề cập đến những vấn đề phổ biến nhất bạn có thể gặp khi làm việc với Ultralytics YOLO26, được nhóm theo nơi chúng xảy ra: cài đặt, huấn luyện model, dự đoán và triển khai. Chuyển đến danh mục tương ứng với lỗi của bạn hoặc xem FAQ để tìm 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 sự cố thường gặp#
Lỗi cài đặt#
Lỗi cài đặt có thể phát sinh do nhiều nguyên nhân, chẳng hạn như phiên bản không tương thích, thiếu dependency 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 và đảm bảo bạn đang thực hiện những việc sau:
- Bạn đang sử dụng Python 3.8 trở lên như khuyến nghị.
- Đảm bảo bạn đã cài đặt đúng phiên bản PyTorch (1.8 trở lên).
- Cân nhắc sử dụng virtual environment để tránh xung đột.
- Thực hiện từng bước theo hướng dẫn cài đặt chính thức.
Ngoài ra, dưới đây là các giải pháp cho những sự cố cài đặt thường gặp.
Nhiều lỗi import, GPU và export có thể đượ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 rằng các phiên bản PyTorch và CUDA của bạn tương thích trước khi tiến hành debug chuyên sâu hơn.
Lỗi import hoặc vấn đề về dependency#
Nếu bạn gặp lỗi khi import YOLO26 hoặc gặp xung đột dependency, hãy thử các bước sau:
- Cài đặt mới: Bắt đầu bằng một lần cài đặt sạch có thể giải quyết các sự cố không mong muốn, đặc biệt sau những bản cập nhật làm thay đổi cấu trúc hoặc chức năng của package.
- Cập nhật thường xuyên: Sử dụng phiên bản mới nhất của library, vì các bản phát hành cũ có thể không tương thích với những bản cập nhật gần đây.
- Kiểm tra dependency: Xác minh rằng tất cả dependency 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 các thay đổi: Nếu bạn đã cài đặt phiên bản cũ, hãy tham khảo tài liệu chính thức hoặc changelog để hiểu những thay đổi lớn về cấu trúc.
Chạy YOLO26 trên GPU#
Nếu bạn gặp khó khăn khi chạy YOLO26 trên GPU, hãy cân nhắc các bước khắc phục sau:
- Xác minh khả năng 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 lệnh
nvidia-smiđể kiểm tra trạng thái của GPU NVIDIA và phiên bản CUDA. - 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 terminal Python. Nếu kết quả trả về là '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ả package cần thiết đã được cài đặt.
- Cập nhật package: Các package lỗi thời có thể không tương thích với GPU của bạn. Hãy luôn cập nhật chúng.
- Cấu hình chương trình: Kiểm tra xem code của bạn có yêu cầu sử dụng GPU hay không. Bạn có thể thiết lập argument
devicekhi chạy huấn luyện hoặc dự đoán (ví dụ:device=0).
cuDNN 9.11.0 đã ngừng hỗ trợ các kiến trúc GPU trước Turing — compute capability (SM) thấp hơn 7.5, chẳng hạn 1080 Ti. Với GPU cũ hơn, bạn có thể cần bản 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}")Các vấn đề về huấn luyện model#
Các vấn đề huấn luyện thường gặp và cách khắc phục được trình bày dưới đây.
Xác minh cài đặt cấu hình#
Vấn đề: Bạn không chắc các cài đặt cấu hình trong file .yaml có được áp dụng chính xác trong quá trình huấn luyện model hay không.
Giải pháp: Các cài đặt cấu hình trong file .yaml sẽ được áp dụng khi sử dụng function model.train(). Để đảm bảo các cài đặt này được áp dụng chính xác, hãy thực hiện các bước sau:
-
Xác nhận đường dẫn đến file cấu hình
.yamllà chính xác. -
Đảm bảo bạn truyền đường dẫn đến file
.yamldưới dạng argumentdatakhi gọimodel.train(), như minh họa dưới đây:model.train(data="/path/to/your/data.yaml", batch=4)
Tăng tốc huấn luyện với nhiều GPU#
Vấn đề: Huấn luyện trên một GPU bị chậm và bạn muốn tăng tốc quy trình bằ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 cần cân nhắc dung lượng bộ nhớ GPU. Để tăng tốc huấn luyện với nhiều GPU, hãy thực hiện các bước sau:
-
Đảm bảo bạn có nhiều GPU khả dụng.
-
Đặt argument
devicethành danh sách các chỉ số GPU, ví dụ:device=[0,1,2,3]. -
Tăng batch size tương ứng để tận dụng đầy đủ nhiều GPU mà không vượt quá giới hạn bộ nhớ.
-
Điều chỉnh lệnh huấn luyệ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, device=[0, 1, 2, 3])
Các tham số cần theo dõi liên tục#
Vấn đề: Bạn muốn biết nên liên tục theo dõi những tham số nào trong quá trình huấn luyện, ngoài loss.
Giải pháp: Mặc dù loss là một metric quan trọng cần theo dõi, việc tracking các metric khác cũng cần thiết để tối ưu hiệu suất model. Một số metric chính cần theo dõi trong quá trình huấn luyện gồm:
- Precision
- Recall
- Độ chính xác trung bình (mAP)
Bạn có thể truy cập các số liệu 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 Weights & Biases để trực quan hóa. Việc triển khai tính năng dừng sớm dựa trên các số liệu này có thể giúp bạn đạt được kết quả tốt hơn.
Các tool theo dõi tiến trình huấn luyện#
Vấn đề: Bạn đang tìm kiếm các đề xuất về tool để 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 tool sau:
- TensorBoard: TensorBoard là lựa chọn phổ biến để trực quan hóa các metric huấn luyện, bao gồm loss, độ chính xác và nhiều metric khác. Bạn có thể tích hợp TensorBoard với quy trình huấn luyện YOLO26.
- Comet: Comet cung cấp bộ tool toàn diện để tracking và so sánh experiment. Tool này cho phép bạn theo dõi metric, hyperparameter và cả trọng số model. Việc tích hợp với các model YOLO cũng đơn giản, cung cấp cho bạn cái nhìn tổng quan đầy đủ về vòng đời experiment.
- Ultralytics Platform: Ultralytics Platform cung cấp môi trường chuyên biệt để tracking các model YOLO, mang đến một nền tảng duy nhất để quản lý metric, dataset và cộng tác với team. Nhờ tập trung riêng vào YOLO, nền tảng này cung cấp các tùy chọn tracking được tùy chỉnh tốt hơn.
Cách kiểm tra huấn luyện có đang diễn ra trên GPU hay không#
Vấn đề: Giá trị 'device' trong training log là 'null' và bạn không chắc 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à quy trình huấn luyện được thiết lập để tự động chọn 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 thiết lập argument device khi bắt đầu huấn luyện. device là một training argument, vì vậy việc thiết lập nó trong .yaml của dataset sẽ không có tác dụng:
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)Theo dõi thư mục 'runs' để xem log và metric, từ đó giám sát hiệu quả tiến trình huấn luyện.
Các điểm cần lưu ý để huấn luyện model hiệu quả#
Dưới đây là một số điều cần lưu ý nếu bạn đang gặp vấn đề liên quan đến huấn luyện model.
Định dạng dataset và label
- Tầm quan trọng: Nền tảng của mọi model machine learning nằm ở chất lượng và định dạng của dữ liệu mà model được huấn luyện.
- Khuyến nghị: Đảm bảo dataset tùy chỉnh và các label đi kèm tuân thủ định dạng được yêu cầu. Việc xác minh annotation chính xác và có chất lượng cao là rất quan trọng. Annotation không chính xác hoặc kém chất lượng có thể làm chệch hướng quá trình học của model, dẫn đến kết quả khó dự đoán.
Hội tụ model
- Tầm quan trọng: Đạt được sự hội tụ của model đảm bảo model đã học đầy đủ từ training data.
- Khuyến nghị: Khi huấn luyện model 'from scratch', điều quan trọng là đảm bảo model đạt mức hội tụ thỏa đáng. Việc này có thể cần thời gian huấn luyện lâu hơn, với nhiều epoch hơn, so với khi fine-tune một model hiện có.
Learning Rate và Batch Size
- Tầm quan trọng: Các hyperparameter này đóng vai trò then chốt trong việc quyết định cách model 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 dataset cụ thể của bạn hay chưa. Các tham số không phù hợp với đặc điểm dataset có thể cản trở hiệu suất của model.
Phân bố class
- Tầm quan trọng: Phân bố class trong dataset có thể ảnh hưởng đến xu hướng dự đoán của model.
- Khuyến nghị: Thường xuyên đánh giá phân bố class trong dataset. Nếu xảy ra mất cân bằng class, model có nguy cơ phát triển bias về class xuất hiện phổ biến hơn. Bias này có thể thể hiện trong confusion matrix, khi model chủ yếu dự đoán class chiếm đa số.
Đối chiếu với trọng số pretrained
- Tầm quan trọng: Tận dụng trọng số pretrained có thể cung cấp điểm khởi đầu vững chắc cho quá trình huấn luyện model, đặc biệt khi dữ liệu hạn chế.
- Khuyến nghị: Ở bước chẩn đoán, hãy cân nhắc huấn luyện model bằng cùng dữ liệu nhưng khởi tạo với trọng số pretrained. Nếu cách tiếp cận này tạo ra confusion matrix có cấu trúc tốt, điều đó có thể cho thấy model 'from scratch' cần được huấn luyện thêm hoặc điều chỉnh.
Các vấn đề liên quan đến dự đoán của model#
Các vấn đề thường gặp trong quá trình dự đoán bằng model và cách khắc phục được trình bày dưới đây.
Nhận dự đoán bounding box với model YOLO26 tùy chỉnh#
Vấn đề: Khi chạy dự đoán với model YOLO26 tùy chỉnh, bạn gặp khó khăn với định dạng và việc 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 dưới dạng giá trị pixel tuyệt đối. Để chuyển đổi sang tọa độ tương đối (trong khoảng từ 0 đến 1), bạn cần chia cho kích thước ảnh. Ví dụ, giả sử kích thước ảnh là 640x640. Khi đó, 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 file: Để lấy tên file của ảnh đang được dự đoán, hãy truy cập trực tiếp đường dẫn file ảnh từ object kết quả bên trong prediction loop.
Lọc object trong dự đoán YOLO26#
Vấn đề: Gặp khó khăn khi lọc và chỉ hiển thị các object cụ thể trong kết quả dự đoán khi chạy YOLO26 bằng Ultralytics library.
Giải pháp: Để phát hiện các class cụ thể, hãy sử dụng argument classes để chỉ định những class bạn muốn đưa vào output. Ví dụ, để chỉ phát hiện ô tô (giả sử 'cars' có class index là 2):
yolo segment predict model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2Tìm hiểu các metric precision trong YOLO26#
Vấn đề: Nhầm lẫn về sự khác biệt giữa precision của box, precision của mask và precision của confusion matrix trong YOLO26.
Giải pháp: Precision của box đo độ chính xác của bounding box được dự đoán so với box ground truth thực tế bằng IoU (Intersection over Union) làm metric. Precision của mask đánh giá mức độ khớp giữa mask segmentation được dự đoán và mask ground truth trong việc phân loại object theo từng pixel. Trong khi đó, precision 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ả class và không xét đến độ chính xác hình học của 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 class sai, dẫn đến sự khác biệt giữa precision của box và precision của confusion matrix. Các metric này đánh giá những khía cạnh riêng biệt về hiệu suất model, phản ánh nhu cầu sử dụng các metric đánh giá khác nhau cho từng tác vụ.
Trích xuất kích thước object trong YOLO26#
Vấn đề: Khó lấy chiều dài và chiều cao của các object được phát hiện trong YOLO26, đặc biệt khi có nhiều object được phát hiện trong một ảnh.
Giải pháp: Để lấy kích thước bounding box, trước tiên hãy sử dụng model Ultralytics YOLO26 để dự đoán object trong ảnh. Sau đó, trích xuất thông tin chiều rộng và chiều cao của 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 khi triển khai#
Các vấn đề khi triển khai trên GPU#
Vấn đề: Triển khai model trong môi trường nhiều GPU đôi khi có thể dẫn đến các hành vi không mong muốn, chẳng hạ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 việc khởi tạo GPU mặc định. Một số framework, chẳng hạn như PyTorch, có thể khởi tạo các thao tác CUDA trên GPU mặc định trước khi chuyển sang các GPU được chỉ định. Để tránh việc khởi tạo mặc định không mong muốn, hãy chỉ định trực tiếp GPU trong quá trình triển khai và dự đoán. Sau đó, sử dụng các tool để theo dõi mức sử dụng GPU và bộ nhớ nhằm xác định mọi bất thường theo 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 library.
Các vấn đề khi chuyển đổi/export model#
Vấn đề: Trong quá trình chuyển đổi hoặc export model machine learning sang các định dạng hoặc nền tảng khác nhau, 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à tùy chọn riêng cho từng định dạng trong tài liệu về Export mode, sau đó thực hiện các bước kiểm tra sau:
- Kiểm tra khả năng tương thích: Đảm bảo bạn đang sử dụng các phiên bản library và framework tương thích với nhau. 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. Việc bắt đầu lạ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 tool hoặc library bạn đang sử dụng để chuyển đổi. Tài liệu thường chứa các hướng dẫn cụ thể và phương pháp tốt nhất cho việc export model.
- Hỗ trợ cộng đồng: Kiểm tra repository chính thức của library hoặc framework để tìm các vấn đề tương tự do người dùng khác báo cáo. Maintainer hoặc cộng đồng có thể đã cung cấp giải pháp hay cách khắc phục trong các thread thảo luận.
- 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 công cụ hoặc thư viện. Các nhà phát triển thường xuyên phát hành 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 thử từng bước: Trước khi thực hiện chuyển đổi toàn bộ, hãy kiểm thử quy trình với model hoặc dataset nhỏ hơn để sớm xác định các vấn đề tiềm ẩn.
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 sau.
Diễn đàn và Kênh để Nhận Trợ giúp#
GitHub Issues: Kho lưu trữ Ultralytics 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à những người duy trì hoạt động rất tích cực tại đây, và đây là nơi tuyệt vời để nhận trợ giúp về các vấn đề cụ thể.
Máy chủ Discord của Ultralytics: 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 developer.
Tài liệu và Tài nguyên Chính thức#
Tài liệu Ultralytics YOLO26: Tài liệu chính thức cung cấp tổng quan toàn diện về YOLO26, cùng với các hướng dẫn cài đặt, sử dụng và khắc phục sự cố.
Kết luận#
Hầu hết các vấn đề với 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 dataset và cấu hình GPU. Khi gặp lỗi chưa được đề cập tại đây, hãy tìm kiếm trong tab GitHub Issues hoặc đặt câu hỏi trên server Discord — nhiều khả năng đã có người giải quyết vấn đề đó. Đối với các vấn đề training chuyên sâu hơn, hãy xem hướng dẫn Mẹo Training Model để nhận các lời khuyên thực tế nhằm đạt kết quả tốt hơn với các dự án computer vision của bạn.
FAQ#
Lỗi cài đặt thường có thể do các vấn đề về khả năng tương thích hoặc thiếu dependency. Đảm bảo bạn sử dụng Python 3.8 trở lên và đã cài đặt PyTorch 1.8 trở lên. Sử dụng môi trường ảo sẽ giúp tránh xung đột. Để xem 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 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.
Training trên một GPU duy nhất có thể chậm do batch size lớn hoặc không đủ bộ nhớ. Để tăng tốc training, hãy sử dụng nhiều GPU. Đảm bảo hệ thống có sẵn nhiều GPU và đặt argument
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ớ. Ví dụ lệnh:model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])Nếu giá trị 'device' hiển thị là 'null' trong log training, điều này thường có nghĩa là quy trình training được thiết lập để tự động chọn GPU khả dụng. Để chỉ định rõ một GPU cụ thể, hãy truyền argument
devicekhi bắt đầu training, chẳng hạnyolo train data=path/to/data.yaml device=0cho GPU đầu tiên. Sử dụng lệnhnvidia-smiđể xác nhận thiết lập CUDA của bạn.Có thể quản lý hiệu quả việc theo dõi và trực quan hóa tiến trình training thông qua các công cụ như TensorBoard, Comet và Ultralytics Platform. Các công cụ này cho phép bạn ghi log và trực quan hóa các metric như loss, precision, recall và mAP. Việc triển khai early stopping dựa trên các metric này cũng có thể giúp đạt kết quả training tốt hơn.
Đảm bảo dataset và label của bạn tuân thủ định dạng được yêu cầu. Xác minh rằng các annotation chính xác và có chất lượng cao. Nếu gặp vấn đề, hãy tham khảo hướng dẫn Thu thập và Annotation Dữ liệu để biết các phương pháp hay nhất. Để có hướng dẫn cụ thể hơn cho từng dataset, hãy xem phần Datasets trong tài liệu.