Cách sử dụng Ultralytics YOLOv5 với Comet
Khám phá cách Ultralytics hợp tác với Comet để tối ưu hóa model Ultralytics YOLOv5: theo dõi theo thời gian thực, cộng tác tinh gọn và tăng khả năng tái lập.

Tại Ultralytics, chúng tôi hợp tác thương mại với các startup khác để huy động kinh phí cho hoạt động nghiên cứu và phát triển các công cụ mã nguồn mở tuyệt vời như YOLOv5, nhằm duy trì việc cung cấp miễn phí cho mọi người. Bài viết này có thể chứa các liên kết liên kết đến những đối tác đó.
Đối tác mới nhất của chúng tôi, Comet, xây dựng các công cụ giúp nhà khoa học dữ liệu, kỹ sư và trưởng nhóm đẩy nhanh cũng như tối ưu hóa các model machine learning và deep learning.
Comet là công cụ mạnh mẽ để theo dõi model, bộ dữ liệu và metric của bạn. Comet thậm chí còn ghi lại các biến hệ thống và môi trường để đảm bảo khả năng tái lập và hỗ trợ gỡ lỗi suôn sẻ cho từng lần chạy. Công cụ này giống như một trợ lý ảo kỳ diệu luôn biết cần lưu lại ghi chú nào. Theo dõi và trực quan hóa metric của model theo thời gian thực, lưu hyperparameter, bộ dữ liệu và checkpoint của model, đồng thời trực quan hóa dự đoán của model bằng Comet Custom Panels!
Ngoài ra, Comet đảm bảo bạn không bao giờ mất dấu công việc của mình, đồng thời giúp bạn dễ dàng chia sẻ kết quả và cộng tác giữa các nhóm ở mọi quy mô!
YOLOv5 là điểm khởi đầu tuyệt vời cho hành trình computer vision của bạn. Để cải thiện hiệu suất model và đưa model vào môi trường production, bạn cần ghi lại kết quả bằng một công cụ theo dõi thí nghiệm như Comet.
Tích hợp Comet và YOLOv5 cung cấp 3 tính năng chính:
- Tính năng tự động ghi log và ghi log tùy chỉnh
- Lưu bộ dữ liệu và model dưới dạng artifact để gỡ lỗi và đảm bảo khả năng tái lập
- Sắp xếp chế độ xem bằng các panel tùy chỉnh của Comet
Hướng dẫn này sẽ trình bày cách sử dụng YOLOv5 với Comet.
Bạn đã sẵn sàng theo dõi thí nghiệm theo thời gian thực chưa? Bắt đầu thôi!
Bắt Đầu#
1. Cài đặt Comet#
pip install comet_ml2. Cấu hình thông tin xác thực Comet#
Có hai cách cấu hình Comet với YOLOv5.
Bạn có thể thiết lập thông tin xác thực thông qua biến môi trường hoặc tạo tệp .comet.config trong thư mục làm việc rồi thiết lập thông tin xác thực trong tệp đó.
Biến môi trường#
export COMET_API_KEY=<Your API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'Tệp cấu hình Comet#
[comet]
api_key=<Your API Key>
project_name=<Your Comet Project Name> # This will default to 'yolov5'3. Chạy script huấn luyện#
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.ptVậy là xong!
Comet sẽ tự động ghi log hyperparameter, đối số dòng lệnh, metric huấn luyện và xác thực. Bạn có thể trực quan hóa và phân tích các lần chạy trong giao diện người dùng Comet.

Tự Mình Thử Nào!#
Xem ví dụ về một lần chạy đã hoàn tất tại đây.
Hoặc tốt hơn, hãy tự mình thử trong Notebook Colab này.
Tự Động Ghi Log#
Theo mặc định, Comet sẽ ghi log các mục sau:
Metric#
- Box Loss, Object Loss và Classification Loss cho dữ liệu huấn luyện và xác thực
- Các metric mAP_0.5, mAP_0.5:0.95 cho dữ liệu xác thực
- Precision và Recall cho dữ liệu xác thực
Tham số#
- Hyperparameter của model
- Tất cả tham số được truyền qua các tùy chọn dòng lệnh
Trực quan hóa#
- Ma trận nhầm lẫn của các dự đoán từ model trên dữ liệu xác thực
- Biểu đồ đường cong PR và F1 trên tất cả các lớp
- Biểu đồ tương quan của nhãn lớp
Cấu Hình Ghi Log Comet#
Có thể cấu hình Comet để ghi log dữ liệu bổ sung thông qua các flag dòng lệnh được truyền cho script huấn luyện hoặc thông qua biến môi trường.
export COMET_MODE=online # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online
export COMET_MODEL_NAME=<your model name> # Set the name for the saved model. Defaults to yolov5
export COMET_LOG_CONFUSION_MATRIX=false # Set to disable logging a Comet Confusion Matrix. Defaults to true
export COMET_MAX_IMAGE_UPLOADS=<number of allowed images to upload to Comet> # Controls how many total image predictions to log to Comet. Defaults to 100.
export COMET_LOG_PER_CLASS_METRICS=true # Set to log evaluation metrics for each detected class at the end of training. Defaults to false
export COMET_DEFAULT_CHECKPOINT_FILENAME=<your checkpoint filename> # Set this if you would like to resume training from a different checkpoint. Defaults to 'last.pt'
export COMET_LOG_BATCH_LEVEL_METRICS=true # Set this if you would like to log training metrics at the batch level. Defaults to false.
export COMET_LOG_PREDICTIONS=true # Set this to false to disable logging model predictionsGhi Log Checkpoint Bằng Comet#
Theo mặc định, tính năng ghi log model lên Comet bị tắt. Để bật tính năng này, hãy truyền đối số save-period cho script huấn luyện. Thao tác này sẽ lưu các checkpoint được ghi log lên Comet dựa trên giá trị khoảng thời gian được cung cấp cho save-period.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1Ghi Log Dự Đoán Của Model#
Theo mặc định, các dự đoán của model (ảnh, nhãn ground truth và bounding box) sẽ được ghi log lên Comet. Bạn có thể kiểm soát tần suất ghi log dự đoán và các ảnh liên quan bằng cách truyền đối số dòng lệnh bbox_interval. Có thể trực quan hóa dự đoán bằng Object Detection Custom Panel của Comet. Tần suất này tương ứng với mỗi batch dữ liệu thứ N trong một epoch. Trong ví dụ bên dưới, chúng tôi ghi log mỗi batch dữ liệu thứ 2 của từng epoch.
Lưu ý: Data loader xác thực của YOLOv5 mặc định có batch size là 32, vì vậy bạn cần thiết lập tần suất ghi log cho phù hợp.
Đây là một dự án mẫu sử dụng Panel.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2Kiểm Soát Số Lượng Ảnh Dự Đoán Được Ghi Log Lên Comet#
Khi ghi log dự đoán từ YOLOv5, Comet sẽ ghi log các ảnh liên quan đến từng nhóm dự đoán. Theo mặc định, tối đa 100 ảnh xác thực sẽ được ghi log. Bạn có thể tăng hoặc giảm số lượng này bằng biến môi trường COMET_MAX_IMAGE_UPLOADS.
env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1Ghi Log Metric Theo Lớp#
Sử dụng biến môi trường COMET_LOG_PER_CLASS_METRICS để ghi log mAP, precision, recall và f1 cho từng lớp.
env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.ptTải Bộ Dữ Liệu Lên Comet Artifacts#
Nếu muốn lưu trữ dữ liệu bằng Comet Artifacts, bạn có thể thực hiện việc đó bằng flag upload_dataset.
Bộ dữ liệu được sắp xếp theo cách mô tả trong tài liệu YOLOv5. Tệp cấu hình yaml của bộ dữ liệu phải tuân theo cùng định dạng với tệp coco128.yaml.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_datasetBạn có thể tìm bộ dữ liệu đã tải lên trong tab Artifacts của Comet Workspace.

Bạn có thể xem trước dữ liệu trực tiếp trong giao diện Comet.

Artifacts được quản lý phiên bản và cũng hỗ trợ thêm metadata về bộ dữ liệu. Comet sẽ tự động ghi lại metadata từ file yaml của bộ dữ liệu.

Sử dụng Artifact đã lưu#
Nếu muốn sử dụng bộ dữ liệu từ Comet Artifacts, hãy đặt biến path trong file yaml của bộ dữ liệu trỏ đến URL tài nguyên Artifact sau đây.
# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"Sau đó, truyền file này cho script training theo cách sau:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.ptArtifacts cũng cho phép bạn theo dõi lineage của dữ liệu khi dữ liệu đi qua quy trình Experimentation. Tại đây, bạn có thể xem biểu đồ hiển thị tất cả experiment đã sử dụng bộ dữ liệu bạn tải lên.

Tiếp tục một lượt training#
Nếu lượt training bị gián đoạn vì bất kỳ lý do nào, chẳng hạn như kết nối internet bị ngắt, bạn có thể tiếp tục lượt chạy bằng cờ resume và Comet Run Path.
Run Path có định dạng sau comet://<your workspace name>/<your project name>/<experiment id>.
Thao tác này sẽ khôi phục lượt chạy về trạng thái trước khi bị gián đoạn, bao gồm khôi phục model từ checkpoint, khôi phục toàn bộ hyperparameter và tham số training, cũng như tải xuống các Artifact bộ dữ liệu Comet nếu chúng đã được sử dụng trong lượt chạy ban đầu. Lượt chạy được tiếp tục sẽ ghi log vào Experiment hiện có trong giao diện Comet.
python train.py \
--resume "comet://<your run path>"Tìm kiếm hyperparameter bằng Comet Optimizer#
YOLOv5 cũng được tích hợp với Optimizer của Comet, giúp bạn dễ dàng trực quan hóa các lượt quét hyperparameter trong giao diện Comet.
Cấu hình lượt quét Optimizer#
Để cấu hình Comet Optimizer, bạn cần tạo file JSON chứa thông tin về lượt quét.
File mẫu được cung cấp trong utils/loggers/comet/optimizer_config.json.
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json"Script hpo.py chấp nhận các tham số tương tự train.py. Nếu muốn truyền thêm tham số vào lượt quét, chỉ cần thêm chúng sau script.
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
--save-period 1 \
--bbox_interval 1Chạy lượt quét song song#
comet optimizer -j <num_workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.jsonComet cung cấp nhiều cách để trực quan hóa kết quả lượt quét. Hãy xem dự án có lượt quét đã hoàn tất tại đây:

Giữ liên lạc#
Bắt đầu sử dụng tích hợp của chúng tôi với Comet để quản lý, trực quan hóa và tối ưu hóa các model YOLOv5 — từ lượt training đến giám sát trong môi trường production.
Và tất nhiên, hãy tham gia Cộng đồng Ultralytics – nơi bạn có thể đặt câu hỏi và chia sẻ mẹo về training, validation và deployment YOLOv5.










