YOLOv5 với Comet
Hướng dẫn này sẽ đề cập đến cách sử dụng YOLOv5 với Comet
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 đẩy nhanh và tối ưu hóa các mô hình học máy và học sâu .
Theo dõi và trực quan hóa số liệu mô hình theo thời gian thực, lưu siêu tham số, tập dữ liệu và điểm kiểm tra mô hình và trực quan hóa 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 và giúp bạn dễ dàng chia sẻ kết quả cũng như cộng tác giữa các nhóm ở mọi quy mô!
Bắt đầu
Cài đặt Comet
Cấu hình Comet Chứng chỉ
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 Comet 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 tin trong thư mục làm việc của bạn và thiết lập thông tin đăng nhập tại đó.
Comet Tập tin cấu hình
[comet]
api_key=<Your Comet API Key>
project_name=<Your Comet Project Name> # This will default to 'yolov5'
Chạy tập lệnh đào tạo
# 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ể hình dung và phân tích các lần chạy của mình trong Comet Giao diện người dùng
Hãy thử một ví dụ!
Kiểm tra ví dụ về một lần chạy hoàn thành tại đây
Hoặc tốt hơn nữa, hãy tự mình thử nghiệm trong Sổ tay Colab này
Đăng nhập tự động
Theo mặc định, Comet sẽ ghi lại các mục sau
Số liệu
- Mất hộp, mất đối tượng, mất phân loại cho dữ liệu đào tạo và xác thực
- mAP_0.5, mAP_0.5:0.95 số liệu thống kê cho dữ liệu xác thực.
- Độ chính xác và khả năng thu hồi dữ liệu xác thực
Các 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
Hình ảnh hóa
- Ma trận nhầm lẫn của các dự đoán mô hình trên dữ liệu xác thực
- Biểu đồ cho các đườ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 Comet Ghi nhật ký
Comet có thể được cấu hình để ghi lại dữ liệu bổ sung thông qua cờ dòng lệnh được truyền tới tập lệnh đào tạo 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=<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 predictions
Ghi nhật ký các điểm kiểm tra với Comet
Ghi nhật ký mô hình để Comet bị vô hiệu hóa theo mặc định. Để bật nó, hãy chuyển save-period
đối số cho tập lệnh đào tạo. Điều này sẽ lưu các điểm kiểm tra đã ghi nhật ký 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
Dự đoán mô hình ghi nhật ký
Theo mặc định, các dự đoán của mô hình (hình ảnh, nhãn thực tế và hộp giới hạn) sẽ được ghi vào Comet .
Bạn có thể kiểm soát tần suất dự đoán được ghi lại và 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 hình dung bằng cách sử dụng Comet 'S 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 thời đại. Trong ví dụ dưới đây, chúng tôi đang ghi nhật ký mỗi đợt dữ liệu thứ 2 cho mỗi kỷ nguyên.
Lưu ý: YOLOv5 Trình tải dữ liệu xác thực sẽ mặc định kích thước lô là 32, do đó bạn sẽ phải đặt tần suất ghi nhật ký cho phù hợp.
Đây là một dự án ví dụ 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 Hình ảnh Dự đoán được ghi vào Comet
Khi ghi nhật ký dự đoán từ YOLOv5 , Comet sẽ ghi lại các hình ảnh liên quan đến từng bộ 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 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ý số liệu cấp lớp
Sử dụng COMET_LOG_PER_CLASS_METRICS
biến môi trường để ghi nhật ký mAP, độ chính xác, nhớ lạ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 lên một tập dữ liệu tới Comet Hiện vật
Nếu bạn muốn lưu trữ dữ liệu của mình bằng cách sử dụng Comet Hiện vật, bạn có thể làm như vậy bằng cách sử dụng upload_dataset
lá cờ.
Bộ dữ liệu được tổ chức theo cách được mô tả trong YOLOv5 tài liệu. Cấu hình tập 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ài liệu.
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 Comet Không gian làm việc
Bạn có thể xem trước dữ liệu trực tiếp trong Comet Giao diện người dùng.
Các hiện vật được quản lý 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 dữ liệu của bạn yaml
tài liệu
Sử dụng một hiện vật đã lưu
Nếu bạn muốn sử dụng một tập dữ liệu từ Comet Hiện vật, thiết lập path
biến trong tập 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 đến tập lệnh đào tạo của bạn theo cách sau
Các hiện vật cũng cho phép bạn theo dõi dòng dõi 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 biểu đồ hiển thị tất cả các thử nghiệm đã sử dụng tập dữ liệu bạn đã tải lên.
Tiếp tục chạy luyện tập
Nếu quá trình luyện tập của bạn bị gián đoạn vì bất kỳ lý do nào, ví dụ như 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
cờ và Comet Đường chạy.
Đường chạy có định dạng sau comet://<your workspace name>/<your 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ố đào tạo cũng như tải xuống Comet bộ dữ liệu Artifacts nếu chúng được sử dụng trong lần chạy ban đầu. Lần chạy được tiếp tục sẽ tiếp tục ghi vào Thí nghiệm hiện có trong Comet Giao diện người dùng
Tìm kiếm siêu tham số với Comet Trình tối ưu hóa
YOLOv5 cũng được tích hợp với Comet 'S Optimizer, giúp dễ dàng hình dung các lần quét siêu tham số trong Comet Giao diện người dùng.
Cấu hình quét Optimizer
Để cấu hình Comet Optimizer, bạn sẽ phải tạo một tệp JSON có thông tin về quá trình 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"
Các hpo.py
kịch bản chấp nhận các đối số giống như train.py
. Nếu bạn muốn truyền thêm đối số vào lệnh quét của mình, chỉ cần thêm chúng vào 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
Chạy quét song song
comet optimizer -j <set number of workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.json"
Hình dung kết quả
Comet cung cấp một số cách để trực quan hóa kết quả quét của bạn. Hãy xem một dự án với một lần quét hoàn thành tại đây