Tạo Ví dụ Tối thiểu Có thể Tái lập cho Báo cáo Lỗi#
Khi gửi báo cáo lỗi cho các kho lưu trữ Ultralytics YOLO, điều cần thiết là cung cấp một Minimum Reproducible Example (MRE). MRE là một đoạn mã nhỏ, độc lập để minh họa vấn đề bạn đang gặp phải. Việc cung cấp MRE giúp những người duy trì và đóng góp hiểu rõ vấn đề và khắc phục lỗi hiệu quả hơn. Hướng dẫn này giải thích cách tạo MRE khi gửi báo cáo lỗi cho các kho lưu trữ Ultralytics YOLO.
Cô lập vấn đề#
Bước đầu tiên trong việc tạo MRE là cô lập vấn đề. Loại bỏ mọi mã hoặc phụ thuộc không cần thiết không liên quan trực tiếp đến vấn đề. Tập trung vào phần mã cụ thể gây ra vấn đề và loại bỏ các phần không liên quan.
Sử dụng các Model và Tập dữ liệu công khai#
Khi tạo MRE, hãy sử dụng các model và dataset có sẵn công khai để tái hiện sự cố. Ví dụ, hãy sử dụng model yolo26n.pt và dataset coco8.yaml. Điều này đảm bảo rằng những người duy trì và đóng góp có thể dễ dàng chạy ví dụ của bạn và điều tra sự cố mà không cần quyền truy cập vào dữ liệu độc quyền hoặc model tùy chỉnh.
Bao gồm tất cả các phụ thuộc cần thiết#
Đảm bảo tất cả các phần phụ thuộc cần thiết đều được bao gồm trong MRE của bạn. Nếu mã của bạn dựa vào các thư viện bên ngoài, hãy chỉ định các gói bắt buộc và phiên bản của chúng. Lý tưởng nhất là liệt kê các phần phụ thuộc trong báo cáo lỗi của bạn bằng cách sử dụng yolo checks nếu bạn đã cài đặt ultralytics hoặc pip list cho các công cụ khác.
Viết mô tả rõ ràng về vấn đề#
Cung cấp mô tả rõ ràng và ngắn gọn về vấn đề bạn đang gặp phải. Giải thích hành vi mong đợi và hành vi thực tế mà bạn đang gặp phải. Nếu có thể, hãy bao gồm bất kỳ thông báo lỗi hoặc nhật ký liên quan nào.
Định dạng mã của bạn đúng cách#
Định dạng mã của bạn đúng cách bằng cách sử dụng các khối mã trong mô tả vấn đề. Điều này giúp người khác dễ đọc và hiểu mã của bạn hơn. Trong GitHub, bạn có thể tạo một khối mã bằng cách bao quanh mã của mình bằng ba dấu backtick (```) và chỉ định ngôn ngữ:
```python
# Your Python code goes here
```Kiểm tra MRE của bạn#
Trước khi gửi MRE, hãy kiểm tra nó để đảm bảo rằng nó tái lập chính xác vấn đề. Đảm bảo rằng người khác có thể chạy ví dụ của bạn mà không gặp bất kỳ vấn đề hoặc sửa đổi nào.
Ví dụ về MRE#
Đây là một ví dụ về MRE cho một báo cáo lỗi giả định:
Mô tả lỗi:
Khi chạy inference trên một hình ảnh 0 kênh, tôi nhận được lỗi liên quan đến kích thước của tensor đầu vào.
MRE:
import torch
from ultralytics import YOLO
# Load the model
model = YOLO("yolo26n.pt")
# Load a 0-channel image
image = torch.rand(1, 0, 640, 640)
# Run the model
results = model(image)Thông báo lỗi:
RuntimeError: Expected input[1, 0, 640, 640] to have 3 channels, but got 0 channels insteadPhụ thuộc:
torch==2.3.0ultralytics==8.2.0
Trong ví dụ này, MRE minh họa sự cố với lượng mã tối thiểu, sử dụng model công khai ("yolo26n.pt"), bao gồm tất cả các phần phụ thuộc cần thiết và cung cấp mô tả rõ ràng về sự cố cùng với thông báo lỗi.
Bằng cách tuân theo các nguyên tắc này, bạn sẽ giúp những người duy trì và contributors của các kho lưu trữ Ultralytics YOLO hiểu và giải quyết sự cố của bạn hiệu quả hơn.
Câu hỏi thường gặp#
Để tạo một Ví dụ Tối thiểu Có thể Tái lập (MRE) hiệu quả cho các báo cáo lỗi trong các kho lưu trữ Ultralytics YOLO, hãy làm theo các bước sau:
- Cô lập vấn đề: Loại bỏ bất kỳ mã hoặc phụ thuộc nào không liên quan trực tiếp đến vấn đề.
- Use Public Models and Datasets: Tận dụng các tài nguyên công khai như
yolo26n.ptvàcoco8.yamlđể dễ dàng tái hiện lỗi hơn. - Include All Necessary Dependencies: Chỉ định các gói bắt buộc và phiên bản của chúng. Bạn có thể liệt kê các phần phụ thuộc bằng cách sử dụng
yolo checksnếu bạn đã cài đặtultralyticshoặcpip list. - Viết mô tả rõ ràng về vấn đề: Giải thích hành vi mong đợi và thực tế, bao gồm bất kỳ thông báo lỗi hoặc nhật ký nào.
- Định dạng mã của bạn đúng cách: Sử dụng các khối mã để định dạng mã, giúp việc đọc dễ dàng hơn.
- Kiểm tra MRE của bạn: Đảm bảo MRE của bạn tái lập vấn đề mà không cần sửa đổi.
Để có hướng dẫn chi tiết, hãy xem Creating a Minimum Reproducible Example.
Việc sử dụng các model và dataset có sẵn công khai trong MRE của bạn đảm bảo rằng những người duy trì có thể dễ dàng chạy ví dụ của bạn mà không cần quyền truy cập vào dữ liệu độc quyền. Điều này cho phép giải quyết sự cố nhanh hơn và hiệu quả hơn. Ví dụ: sử dụng model
yolo26n.ptvà datasetcoco8.yamlgiúp chuẩn hóa và đơn giản hóa quá trình gỡ lỗi. Tìm hiểu thêm về các model và dataset công khai trong phần Use Public Models and Datasets.Một báo cáo lỗi toàn diện cho Ultralytics YOLO nên bao gồm:
- Mô tả rõ ràng: Giải thích vấn đề, hành vi mong đợi và hành vi thực tế.
- Thông báo lỗi: Bao gồm bất kỳ thông báo lỗi hoặc nhật ký liên quan nào.
- Phụ thuộc: Liệt kê các phụ thuộc bắt buộc và phiên bản của chúng.
- MRE: Cung cấp một Ví dụ Tối thiểu Có thể Tái lập.
- Các bước tái lập: Phác thảo các bước cần thiết để tái lập vấn đề.
Để có danh sách kiểm tra hoàn chỉnh, hãy tham khảo phần Write a Clear Description of the Issue.
Để định dạng mã của bạn đúng cách khi gửi báo cáo lỗi trên GitHub:
- Sử dụng ba dấu backtick (```) để tạo các khối mã.
- Chỉ định ngôn ngữ lập trình để tô sáng cú pháp, ví dụ: ```python.
- Đảm bảo mã của bạn được thụt lề chính xác để dễ đọc.
Ví dụ:
```python # Your Python code goes here ```Để biết thêm các mẹo về định dạng mã, hãy xem phần Format Your Code Properly.
Trước khi gửi MRE của bạn, hãy đảm bảo:
- Xác minh vấn đề có thể tái lập.
- Đảm bảo tất cả các phụ thuộc được liệt kê và chính xác.
- Loại bỏ bất kỳ mã không cần thiết nào.
- Kiểm tra MRE để đảm bảo nó tái lập vấn đề mà không cần sửa đổi.
Để có danh sách kiểm tra chi tiết, hãy truy cập phần Test Your MRE.