YOLOv5 với Comet
Hướng dẫn này sẽ bao gồm cách sử dụng YOLOv5 với Comet
Về Comet
Comet builds tools that help data scientists, engineers, and team leaders accelerate and optimize machine learning and deep learning models.
Theo dõi và trực quan hóa các chỉ số mô hình trong 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, đồng thời trực quan hóa các dự đoán mô hình của bạn với Comet Bảng điều khiển tùy chỉnh! 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
Cấu hình Comet Ủy nhiệm
Có hai cách để cấu hình Comet với YOLOv5.
Bạn có thể đặt thông tin đăng nhập 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
trong thư mục làm việc của bạn và đặt thông tin đăng nhập của bạn ở đó.
Comet Tệp 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
Đó là nó! 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 hoạt động của mình trong Comet UI
Hãy thử một ví dụ!
Xem 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ử nó trong Colab Notebook này
Đăng nhập tự động
Theo mặc định, Comet sẽ ghi lại các mục sau
Metrics
- Box Loss, Object Loss, Classification Loss for the training and validation data
- mAP_0.5, mAP_0.5:0.95 số liệu cho dữ liệu xác thực.
- Độ chính xác và Nhớ lại dữ liệu xác thực
Thông số
- Mô hình siêu tham số
- Tất cả các tham số được truyền qua các tùy chọn dòng lệnh
Visualizations
- Confusion Matrix of the model predictions on the validation data
- Biểu đồ cho các đường cong PR và F1 trên tất cả các lớp
- Correlogram của nhãn lớp
Cấu hình Comet Đăng nhập
Comet có thể được cấu hình để ghi dữ liệu bổ sung thông qua cờ dòng lệnh được chuyển đến 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
Mô hình ghi nhật ký để Comet bị tắt theo mặc định. Để kích hoạt nó, hãy vượt qua save-period
lập luận cho kịch bản đào tạo. Thao tác này sẽ lưu các điểm kiểm tra đã đăng nhập 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 mô hình (hình ảnh, nhãn sự thật cơ bản 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 đã đăng nhập và các hình ảnh liên quan bằng cách chuyển bbox_interval
command line argument. Predictions can be visualized using Comet's Phát hiện đối tượng Custom Panel. This frequency corresponds to every Nth batch of data per epoch. In the example below, we are logging every 2nd batch of data for each epoch.
Note: The YOLOv5 validation dataloader will default to a batch size of 32, so you will have to set the logging frequency accordingly.
Dưới đâ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
Kiểm soát số lượng Hình ảnh dự đoán được ghi vào Comet
Khi ghi lại 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ố 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
environment variable to log mAP, precision, recall, f1 for each class.
env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt
Tả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 cách sử dụng Comet Artifacts, bạn có thể làm như vậy bằng cách sử dụng upload_dataset
cờ.
Tập dữ liệu được tổ chức theo cách được mô tả trong YOLOv5 tư liệu. Cấu hình tập dữ liệu yaml
Tệp phải tuân theo cùng định dạng với định dạng của tệp coco128.yaml
tệp.
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 Cấu phần phần mềm trong Comet Workspace
Bạn có thể xem trước dữ liệu trực tiếp trong Comet UI.
Các thành phần lạ được lập 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ệp
Sử dụng thành phần lạ đã lưu
Nếu bạn muốn sử dụng tập dữ liệu từ Comet Hiện vật, đặt path
biến trong tập dữ liệu của bạn yaml
để trỏ đến URL tài nguyên cấu phần mềm 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 đào tạo của bạn theo cách sau
Thành phần lạ cũng cho phép bạn theo dõi dòng dữ liệu khi dữ liệu 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ị cho bạn tất cả các thử nghiệm đã sử dụng tập dữ liệu đã tải lên của bạn.
Tiếp tục chạy đào tạo
Nếu quá trình đào tạo 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
cờ và Comet Chạy đường dẫn.
Đường dẫn chạy có định dạng sau comet://<your workspace name>/<your project name>/<experiment id>
.
Điều 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 và tải xuống Comet tập dữ liệu Artifacts nếu chúng được sử dụng trong lần 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 Comet UI
Tìm kiếm siêu tham số với Comet Tối ưu hóa
YOLOv5 cũng được tích hợp với CometTrình tối ưu hóa của Optimizer, làm cho đơn giản để hình dung các lần quét siêu tham số trong Comet UI.
Định cấu hình quét trình tối ưu hóa
Để cấu hình Comet Trình tối ưu hóa, bạn sẽ phải tạo một tệp JSON với thông tin về việc 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
script chấp nhận các đối số tương tự như train.py
. Nếu bạn muốn chuyển các đối số bổ sung vào 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
Chạy quét song song
comet optimizer -j <set number of workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.json"
Trực quan hóa kết quả
Comet Cung cấp một số cách để hình dung kết quả quét của bạn. Hãy xem một dự án với một quét hoàn thành ở đây