Tạo Ví dụ tái hiện tối thiểu cho Báo cáo lỗi#
Khi gửi báo cáo lỗi cho các repository Ultralytics YOLO, điều cần thiết là cung cấp một Ví dụ tái hiện tối thiểu (MRE). MRE là một đoạn code nhỏ, độc lập, minh họa vấn đề bạn đang gặp phải. Việc cung cấp MRE giúp các maintainer và contributor hiểu vấn đề, đồng thời xử lý bản sửa 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 repository Ultralytics YOLO.
1. Cô lập vấn đề#
Bước đầu tiên khi tạo MRE là cô lập vấn đề. Xóa mọi đoạn code hoặc dependency không liên quan trực tiếp đến vấn đề. Tập trung vào phần code cụ thể gây ra vấn đề và loại bỏ các phần không liên quan.
2. Sử dụng model và dataset công khai#
Khi tạo MRE, hãy sử dụng các model và dataset công khai để tái hiện vấn đề. Ví dụ, sử dụng model yolo26n.pt và dataset coco8.yaml. Điều này đảm bảo maintainer và contributor có thể dễ dàng chạy ví dụ của bạn và điều tra vấn đề 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.
3. Bao gồm tất cả dependency cần thiết#
Đảm bảo MRE của bạn bao gồm tất cả dependency cần thiết. Nếu code phụ thuộc vào các thư viện bên ngoài, hãy chỉ định các package bắt buộc và phiên bản tương ứng. Tốt nhất, hãy liệt kê dependency trong báo cáo lỗi bằng yolo checks nếu bạn đã cài đặt ultralytics, hoặc bằng pip list cho các công cụ khác.
4. Viết mô tả rõ ràng về vấn đề#
Cung cấp mô tả rõ ràng và súc tích về vấn đề bạn đang gặp phải. Giải thích hành vi dự kiến và hành vi thực tế mà bạn quan sát được. Nếu phù hợp, hãy thêm các thông báo lỗi hoặc log liên quan.
5. Định dạng code đúng cách#
Định dạng code đúng cách bằng cách sử dụng các code block trong phần mô tả issue. Điều này giúp người khác dễ đọc và hiểu code của bạn hơn. Trong GitHub, bạn có thể tạo code block bằng cách bao quanh code bằng ba dấu backtick (```) và chỉ định ngôn ngữ:
```python
# Your Python code goes here
```6. Kiểm thử MRE#
Trước khi gửi MRE, hãy kiểm thử để đảm bảo MRE tái hiện chính xác vấn đề. Đảm bảo người khác có thể chạy ví dụ của bạn mà không gặp vấn đề hoặc cần sửa đổi.
Ví dụ về MRE#
Dưới đâ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 ảnh có 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 insteadDependency:
torch==2.8.0ultralytics==8.4.142
Trong ví dụ này, MRE minh họa vấn đề bằng lượng code tối thiểu, sử dụng một model công khai ("yolo26n.pt"), bao gồm tất cả dependency cần thiết và cung cấp mô tả rõ ràng về vấn đề cùng với thông báo lỗi.
Bằng cách làm theo các hướng dẫn này, bạn sẽ giúp maintainer và contributor của các repository Ultralytics YOLO hiểu và giải quyết vấn đề của bạn hiệu quả hơn.
FAQ#
Để tạo một Ví dụ tái hiện tối thiểu (MRE) hiệu quả cho báo cáo lỗi trong các repository Ultralytics YOLO, hãy làm theo các bước sau:
- Cô lập vấn đề: Xóa mọi đoạn code hoặc dependency không liên quan trực tiếp đến vấn đề.
- Sử dụng model và dataset công khai: Sử dụng các tài nguyên công khai như
yolo26n.ptvàcoco8.yamlđể dễ dàng tái hiện hơn. - Bao gồm tất cả dependency cần thiết: Chỉ định các package bắt buộc và phiên bản tương ứng. Bạn có thể liệt kê dependency bằng
yolo checksnếu đã cài đặtultralytics, hoặc bằngpip list. - Viết mô tả rõ ràng về vấn đề: Giải thích hành vi dự kiến và hành vi thực tế, bao gồm mọi thông báo lỗi hoặc log.
- Định dạng code đúng cách: Sử dụng code block để định dạng code, giúp code dễ đọc hơn.
- Kiểm thử MRE: Đảm bảo MRE tái hiện vấn đề mà không cần sửa đổi.
Để xem hướng dẫn chi tiết, hãy tham khảo Tạo Ví dụ tái hiện tối thiểu.
Việc sử dụng model và dataset công khai trong MRE đảm bảo maintainer 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 issue nhanh chóng 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 quy trình debug. Tìm hiểu thêm về model và dataset công khai trong phần Sử dụng model và dataset công khai.Một báo cáo lỗi đầy đủ cho Ultralytics YOLO nên bao gồm:
- Mô tả rõ ràng: Giải thích vấn đề, hành vi dự kiến và hành vi thực tế.
- Thông báo lỗi: Bao gồm mọi thông báo lỗi hoặc log liên quan.
- Dependency: Liệt kê các dependency bắt buộc và phiên bản tương ứng.
- MRE: Cung cấp một Ví dụ tái hiện tối thiểu.
- Các bước tái hiện: Nêu các bước cần thiết để tái hiện vấn đề.
Để xem checklist đầy đủ, hãy tham khảo phần Viết mô tả rõ ràng về vấn đề.
Để định dạng code đúng cách khi gửi báo cáo lỗi trên GitHub:
- Sử dụng ba dấu backtick (```) để tạo code block.
- Chỉ định ngôn ngữ lập trình để tô sáng cú pháp, ví dụ: ```python.
- Đảm bảo code được thụt lề đúng cách để dễ đọc.
Ví dụ:
```python # Your Python code goes here ```Để xem thêm mẹo về định dạng code, hãy tham khảo Định dạng code đúng cách.
Trước khi gửi MRE, hãy đảm bảo bạn đã:
- Xác minh rằng vấn đề có thể được tái hiện.
- Đảm bảo tất cả dependency đã được liệt kê và chính xác.
- Xóa mọi đoạn code không cần thiết.
- Kiểm thử MRE để đảm bảo MRE tái hiện vấn đề mà không cần sửa đổi.
Để xem checklist chi tiết, hãy truy cập phần Kiểm thử MRE.