Chuyển đến nội dung

Comet

YOLOv5 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.

Giớ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 máy họchọc sâu.

Theo dõi và trực quan hóa các số liệu mô hình theo thời gian thực, lưu trữ các siêu tham số, bộ dữ liệu và điểm kiểm tra mô hình, đồng thời trực quan hóa các dự đoán mô hình của bạn 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 bạn dễ dàng chia sẻ kết quả và cộng tác giữa các nhóm thuộc mọi quy mô!

Bắt đầu

Cài đặt Comet

pip install comet_ml

Cấu hình Thông tin đăng nhập Comet

Có hai cách để cấu hình Comet với YOLOv5.

Bạn có thể đặt thông tin xác thực của mình thông qua các biến môi trường:

Các 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 một .comet.config tệp trong thư mục làm việc của bạn và thiết lập thông tin đăng nhập của bạn ở đó:

Tệp Cấu hình Comet

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

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.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 đào tạo 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 người dùng Comet.

Giao diện người dùng Comet với huấn luyện YOLOv5

Hãy thử một ví dụ!

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

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

Mở Trong Colab

Tự động ghi nhật ký

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

Các độ đo

Tham 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

Trực quan hóa

  • Ma trận nhầm lẫn (Confusion Matrix) của các dự đoán mô hình trên dữ liệu xác thực
  • Đồ thị cho các đường cong PR và F1 trên tất cả các lớp
  • Tương quan biểu đồ của Nhãn lớp

Cấu hình Ghi nhật ký Comet

Comet có thể được định cấu hình để ghi lại 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 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

Ghi nhật ký điểm kiểm tra với Comet

Ghi nhật ký mô hình vào Comet bị tắt theo mặc định. Để bật nó, hãy chuyển save-period đối số cho script huấn luyện. Điều này sẽ lưu các điểm kiểm tra đã ghi vào Comet dựa trên giá trị khoảng thời gian được cung cấp bởi save-period:

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

Ghi nhật ký dự đoán mô hình

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

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

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

Đây là một ví dụ dự án sử dụng Panel

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

Kiểm soát số lượng Ảnh Dự đoán được ghi vào Comet

Khi ghi nhật ký các dự đoán từ YOLOv5, Comet sẽ ghi nhật ký các hình ảnh được liên kết với mỗi bộ dự đoán. Theo mặc định, tối đa 100 hình ảnh xác thực được ghi nhật ký. Bạn có thể tăng hoặc giảm số này bằng cách sử dụng COMET_MAX_IMAGE_UPLOADS biến môi trường:

env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --bbox_interval 1

Ghi nhật ký các số liệu cấp lớp

Sử dụng COMET_LOG_PER_CLASS_METRICS biến môi trường để ghi lại mAP, độ chính xác, độ thu hồi, 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

Tải Bộ 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 cách sử dụng Các Artifact Comet, bạn có thể thực hiện việc này bằng cách sử dụng upload_dataset flag.

Bộ dữ liệu nên được tổ chức như được mô tả trong Tài liệu YOLOv5. Cấu hình bộ dữ liệu yaml tập tin phải tuân theo cùng một định dạng như của coco128.yaml tập tin.

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 dataset đã tải lên trong tab Artifacts trong Comet Workspace của bạn:

Tab Artifacts của Comet

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

Xem trước dữ liệu 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ừ bộ dữ liệu của bạn yaml tệp:

Siêu dữ liệu Artifact của Comet

Sử dụng Artifact đã lưu

Nếu bạn muốn sử dụng một bộ dữ liệu từ Comet Artifacts, hãy đặt path biến trong bộ dữ liệu của bạn yaml tệp để 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 đó, chuyể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ác thành phần) cũng cho phép bạn theo dõi dòng dữ liệu khi nó chảy qua quy trình làm việc thử nghiệm của bạn. Tại đây, bạn có thể thấy một biểu đồ hiển thị tất cả các thử nghiệm đã sử dụng bộ dữ liệu bạn đã tải lên:

Đồ thị dòng dõi Artifact của Comet

Tiếp tục Lượt 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ách sử dụng resume flag và Comet Run Path.

Đường dẫn chạy có định dạng như 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ừ điểm kiểm tra, khôi phục tất cả các siêu tham số và đối số huấn luyện, đồng thời tải xuống Comet dataset Artifacts nếu chúng được sử dụng trong lần chạy ban đầu. Quá trình chạy được tiếp tục sẽ tiếp tục ghi nhật ký vào Experiment hiện có trong giao diện người dùng Comet:

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

Tì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 lượt quét siêu tham số trong giao diện người dùng Comet.

Định cấu hình Quét Tối ưu hóa

Để định cấu hình Comet Optimizer, bạn sẽ phải tạo một tệp JSON chứa thông tin về sweep. 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"

Hàm hpo.py script chấp nhận các tham số tương tự như train.py. Nếu bạn muốn chuyển các đối số bổ sung vào sweep của mình, 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 1

Trực quan hóa kết quả

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

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



📅 Đã tạo 1 năm trước ✏️ Cập nhật 2 tháng trước

Bình luận