Meet YOLO26: next-gen vision AI.

Logo Comet ML để theo dõi thử nghiệm học máy

Link to this sectionYOLOv5 với Comet#

Hướng dẫn này sẽ đề cập đến cách sử dụng YOLOv5 với Comet, một công cụ mạnh mẽ để theo dõi, so sánh và tối ưu hóa các thử nghiệm học máy.

Link to this sectionGiới thiệu về Comet#

Comet xây dựng các công cụ giúp các nhà khoa học dữ liệu, kỹ sư và trưởng nhóm tăng tốc và tối ưu hóa các mô hình học máyhọc sâu.

Theo dõi và trực quan hóa các chỉ số mô hình theo thời gian thực, lưu trữ siêu tham số, tập dữ liệu và checkpoint mô hình, đồng thời trực quan hóa các dự đoán của mô hình bằng Comet Custom Panels! Comet đảm bảo bạn không bao giờ mất dấu công việc của mình và giúp dễ dàng chia sẻ kết quả và cộng tác giữa các nhóm với mọi quy mô!

Link to this sectionBắt đầu#

Link to this sectionCài đặt Comet#

pip install comet_ml

Link to this sectionCấ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 của mình thông qua các biến môi trường:

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'

Hoặc tạo tệp .comet.config trong thư mục làm việc của bạn và thiết lập thông tin xác thực tại đó:

Tệp cấu hình Comet

[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

Link to this sectionChạy Tập lệnh 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.pt

Vậy là xong! Comet sẽ tự động ghi lại các siêu tham số, đối số dòng lệnh, số liệu huấn luyện và xác thực của bạn. Bạn có thể trực quan hóa và phân tích các lần chạy của mình trong giao diện Comet UI.

Bảng điều khiển Comet hiển thị các số liệu huấn luyện YOLOv5 và theo dõi thử nghiệm

Link to this sectionHãy thử một Ví dụ!#

Xem qua ví dụ về một lần chạy đã hoàn tất tại đây.

Hoặc tốt hơn nữa, hãy tự mình thử trong Colab Notebook này:

Mở trong Colab

Link to this sectionGhi nhật ký tự động#

Theo mặc định, Comet sẽ ghi lại các mục sau:

Link to this sectionSố liệu#

  • Box Loss, Object Loss, Classification Loss cho dữ liệu huấn luyện và dữ liệu xác thực
  • Các số liệu mAP_0.5, mAP_0.5:0.95 cho dữ liệu xác thực
  • PrecisionRecall cho dữ liệu xác thực

Link to this sectionTham số#

  • Siêu tham số mô hình
  • Tất cả các tham số được truyền qua các tùy chọn dòng lệnh

Link to this sectionTrực quan hóa#

  • Ma trận nhầm lẫn về các dự đoán mô hình trên dữ liệu xác thực
  • Các biểu đồ cho đường cong PR và F1 trên tất cả các lớp
  • Correlogram của Nhãn lớp

Link to this sectionCấu hình ghi nhật ký Comet#

Comet có thể được cấu hình để ghi lại dữ liệu bổ sung thông qua các cờ dòng lệnh được truyền tới tập lệnh huấn luyện hoặc thông qua các 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="yolov5"                   # 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=30                  # 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="last.pt" # 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 predictions

Link to this sectionGhi nhật ký Checkpoint với Comet#

Việc ghi nhật ký các mô hình vào Comet bị vô hiệu hóa theo mặc định. Để bật tính năng này, hãy truyền đối số save-period vào tập lệnh huấn luyện. Thao tác này sẽ lưu các checkpoint đã ghi vào Comet dựa trên giá trị khoảng thời gian do save-period cung cấp:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --save-period 1

Link to this sectionGhi nhật ký Dự đoán mô hình#

Theo mặc định, các dự đoán của mô hình (hình ảnh, nhãn ground truth và bounding box) sẽ được ghi lại vào Comet.

Bạn có thể kiểm soát tần suất ghi lại các dự đoán và hình ảnh liên quan bằng cách truyền đối số dòng lệnh bbox_interval. Các dự đoán có thể được trực quan hóa bằng Bảng điều khiển Object Detection tùy chỉnh của Comet. Tần suất này tương ứng với mỗi N lô dữ liệu trên mỗi epoch. Trong ví dụ dưới đây, chúng tôi đang ghi lại mỗi lô dữ liệu thứ 2 cho mỗi epoch.

Lưu ý: Bộ tải dữ liệu xác thực của YOLOv5 sẽ mặc định là batch size là 32, vì vậy bạn sẽ phải thiết lập tần suất ghi nhật ký cho phù hợp.

Đây là một dự án ví dụ sử dụng Bảng điều khiển

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --bbox_interval 2

Link to this sectionKiểm soát số lượng Hình ảnh dự đoán được ghi vào Comet#

Khi ghi lại các dự đoán từ YOLOv5, Comet sẽ ghi lại các hình ảnh liên quan đến mỗi tập dự đoán. Theo mặc định, tối đa 100 hình ảnh xác thực được ghi lại. 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 1

Link to this sectionGhi nhật ký số liệu theo cấp lớp#

Sử dụng biến môi trường COMET_LOG_PER_CLASS_METRICS để ghi lại mAP, precision, recall, f1 cho mỗi lớp:

env COMET_LOG_PER_CLASS_METRICS=true python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt

Link to this sectionTải tập dữ liệu lên Comet Artifacts#

Nếu bạn muốn lưu trữ dữ liệu của mình bằng Comet Artifacts, bạn có thể thực hiện bằng cách sử dụng cờ upload_dataset.

Tập dữ liệu nên được tổ chức như mô tả trong tài liệu YOLOv5. Tệp cấu hình tập dữ liệu yaml phải tuân theo định dạng tương tự như tệp coco128.yaml.

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --upload_dataset

Bạn có thể tìm thấy tập dữ liệu đã tải lên trong tab Artifacts trong Không gian làm việc (Workspace) Comet của mình:

Bảng điều khiển Comet Artifacts để tạo phiên bản tập dữ liệu

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

Xem trước tập dữ liệu và lịch sử phiên bản Comet

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

Siêu dữ liệu Comet Artifact

Link to this sectionSử dụng Artifact đã lưu#

Nếu bạn muốn sử dụng tập dữ liệu từ Comet Artifacts, hãy thiết lập biến path trong tệp yaml tập dữ liệu của bạn để trỏ đến URL tài nguyên Artifact sau:

# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"

Sau đó, truyền tệp này vào tập lệnh huấn luyện của bạn theo cách sau:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data artifact.yaml \
  --weights yolov5s.pt

Artifacts cũng cho phép bạn theo dõi dòng dõi của dữ liệu khi nó đi qua quy trình thử nghiệm của bạn. Tại đây, bạn có thể thấy biểu đồ hiển thị tất cả các thử nghiệm đã sử dụng tập dữ liệu đã tải lên của bạn:

Biểu đồ dòng dõi Comet Artifact

Link to this sectionTiếp tục chạy huấn luyện#

Nếu quá trình huấn luyện của bạn bị gián đoạn vì bất kỳ lý do gì, ví dụ: kết nối internet bị gián đoạn, bạn có thể tiếp tục chạy bằng cờ resume và Đường dẫn chạy (Run Path) Comet.

Đường dẫn chạy có định dạng sau comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

Thao tác này sẽ khôi phục quá trình chạy về trạng thái trước khi bị gián đoạn, bao gồm khôi phục mô hình từ checkpoint, khôi phục tất cả các siêu tham số và đối số huấn luyện, và tải xuống các Artifact tập dữ liệu Comet nếu chúng được sử dụng trong quá trình chạy ban đầu. Quá trình chạy tiếp tục sẽ tiếp tục ghi vào Thử nghiệm hiện có trong giao diện Comet UI:

python train.py \
  --resume "comet://YOUR_RUN_PATH"

Link to this sectionTìm kiếm siêu tham số với Comet Optimizer#

YOLOv5 cũng được tích hợp với Comet's Optimizer, giúp đơn giản hóa việc trực quan hóa các đợt quét siêu tham số trong giao diện Comet UI.

Link to this sectionCấu hình Đợt quét Optimizer#

Để cấu hình Comet Optimizer, bạn sẽ phải tạo một tệp JSON với thông tin về đợt quét. Một tệp ví dụ đã đượ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"

Tập lệnh hpo.py chấp nhận các đối số tương tự như train.py. Nếu bạn muốn truyền các đối số bổ sung cho đợt quét của mình, chỉ cần thêm chúng sau tập lệnh:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
  --save-period 1 \
  --bbox_interval 1

Link to this sectionTrực quan hóa kết quả#

Comet cung cấp một số cách để trực quan hóa kết quả đợt quét của bạn. Hãy xem dự án với đợt quét đã hoàn tất tại đây.

Trực quan hóa siêu tham số Comet

Người đóng góp

Bình luận