Cách sử dụng Ultralytics YOLOv5 với Comet

Đội ngũ Ultralytics

5 phút đọc

Ngày 11 tháng 10 năm 2022

Khám phá cách Ultralytics hợp tác với Comet để tối ưu hóa mô hình YOLOv5 của Ultralytics: theo dõi thời gian thực, hợp tác hợp lý và khả năng tái tạo được cải thiện.

Tại Ultralytics, chúng tôi hợp tác thương mại với các công ty khởi nghiệp khác để giúp chúng tôi tài trợ cho hoạt động nghiên cứu và phát triển các công cụ nguồn mở tuyệt vời của mình, như YOLOv5, để giữ chúng 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 các đố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 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.

Comet là một công cụ mạnh mẽ để theo dõi các mô hình, tập dữ liệu và số liệu của bạn. Nó thậm chí còn ghi lại các biến hệ thống và môi trường của bạn để đảm bảo khả năng tái tạo và gỡ lỗi trơn tru cho từng lần chạy. Giống như có một trợ lý ảo biết cách kỳ diệu để ghi chú những gì. 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 các siêu tham số, tập dữ liệu và điểm kiểm tra mô hình của bạn và trực quan hóa các dự đoán mô hình của bạn với Comet Custom Panels !

Hơn nữa, 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ô!

YOLOv5 là điểm khởi đầu tuyệt vời cho hành trình thị giác máy tính của bạn. Để cải thiện hiệu suất mô hình và sẵn sàng đưa vào sản xuất, bạn sẽ cần ghi lại kết quả trong công cụ theo dõi thử nghiệm như Comet .

Sự tích hợp Comet và YOLOv5 cung cấp 3 tính năng chính :

  • Tính năng ghi nhật ký tự động và ghi nhật ký tùy chỉnh
  • Lưu các tập dữ liệu và mô hình dưới dạng hiện vật để gỡ lỗi và tái tạo
  • Tổ chức chế độ xem của bạn bằng các bảng điều khiển 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.

Vậy, bạn đã sẵn sàng theo dõi các thí nghiệm của mình theo thời gian thực chưa? Hãy bắt đầu thôi!

Bắt đầu

1. Cài đặt Comet

Pip cài đặt comet_ml

2. 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 của mình 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 và thiết lập thông tin xác thực tại đó.


Biến môi trường

export COMET_API_KEY=export COMET_PROJECT_NAME= # Mặc định sẽ là 'yolov5'


Tệp cấu hình Comet

[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'

3. Chạy tập lệnh đào tạo

# Đào tạo YOLOv5s trên COCO128 trong 5 epochspython 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, đào tạo và số liệu 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 Comet UI.

Thử nghiệm với YOLOv5 trong Comet Dashboard

Hãy tự mình thử xem!

Hãy xem ví dụ về một lượt chạy hoàn chỉ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 và 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 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 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ờ dòng lệnh được truyền tới tập lệnh đào tạo hoặc biến môi trường.

export COMET_MODE=online # Đặt chạy Comet ở chế độ 'trực tuyến' hay 'ngoại tuyến'. Mặc định là onlineexport COMET_MODEL_NAME= #Đặt tên cho mô hình đã lưu. Mặc định là yolov5export COMET_LOG_CONFUSION_MATRIX=false # Đặt để tắt ghi nhật ký Ma trận nhầm lẫn Comet. Mặc định là trueexport COMET_MAX_IMAGE_UPLOADS= # Kiểm soát tổng số dự đoán hình ảnh được ghi vào Comet. Mặc định là 100.export COMET_LOG_PER_CLASS_METRICS=true # Đặt để ghi nhật ký số liệu đánh giá cho mỗi lớp được phát hiện khi kết thúc quá trình đào tạo. Mặc định là falseexport COMET_DEFAULT_CHECKPOINT_FILENAME= # Đặt tùy chọn này nếu bạn muốn tiếp tục đào tạo từ một điểm kiểm tra khác. Mặc định là 'last.pt'export COMET_LOG_BATCH_LEVEL_METRICS=true # Đặt tùy chọn này nếu bạn muốn ghi nhật ký số liệu đào tạo ở cấp độ lô. Mặc định là false.export COMET_LOG_PREDICTIONS=true # Đặt thành false để tắt dự đoán mô hình ghi nhật ký

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

Ghi nhật ký mô hình vào Comet bị vô hiệu hóa theo mặc định. Để bật, hãy chuyển đối số save-period vào tập lệnh đào tạo. Thao tác 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 do save-period cung cấp.

python tàu hỏa.py \

--hình ảnh 640 \

--lô 16 \

--kỷ nguyên 5 \

--dữ liệu coco128.yaml \

--trọng lượng yolov5s.pt \

--lưu-giai-đoạn 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 được ghi vào và các hình ảnh liên quan bằng cách truyền tham số dòng lệnh bbox_interval. Các dự đoán có thể được trực quan hóa bằng Bảng tùy chỉnh phát hiện đối tượng của Comet. Tần suất này tương ứng với mỗi lô dữ liệu thứ N cho mỗi kỷ nguyên. Trong ví dụ bên dưới, chúng tôi đang ghi vào mỗi lô dữ liệu thứ 2 cho mỗi kỷ nguyên.

Lưu ý: Trình tải dữ liệu xác thực YOLOv5 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.

Sau đâ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 nhật ký 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 nhật ký. Bạn có thể tăng hoặc giảm số lượng này bằng cách sử dụng biến môi trường COMET_MAX_IMAGE_UPLOADS.

env COMET_MAX_IMAGE_UPLOADS=200python 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 biến môi trường COMET_LOG_PER_CLASS_METRICS để ghi lại mAP, độ chính xác, độ thu hồi và 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 vào 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.

Bộ dữ liệu được tổ chức theo cách được mô tả trong tài liệu YOLOv5 . Tệp yaml cấu hình 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_dataset

Bạn có thể tìm thấy tập dữ liệu đã tải lên trong tab Artifacts trong Comet Workspace của bạn

Tab hiện vật sao chổi, YOLOv5

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

Xem trước dữ liệu trong Comet, YOLOv5

Các hiện vật đượ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.

Ghi lại siêu dữ liệu từ tệp YAML trong Comet, YOLOv5

Sử dụng một hiện vật đã lưu

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

# nội dung của tệp artifact.yaml đường dẫn: "comet:///:"

Sau đó chuyển tệp này tới tập lệnh đào tạo của bạn theo cách sau:

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

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.

Quy trình thử nghiệm sao chổi, YOLOv5

Tiếp tục chạy tập luyện

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 cờ tiếp tục và Đường dẫn chạy Comet.

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

Thao tác này sẽ khôi phục lại lần 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 Artifacts của tập dữ liệu Comet 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 Experiment hiện có trong Comet UI.

python train.py \--tiếp tục "sao chổi://"

Tìm kiếm siêu tham số với Comet Optimizer

YOLOv5 cũng được tích hợp với Optimizer của Comet, giúp dễ dàng hình dung quá trình quét siêu tham số trong Comet UI.

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 tin 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ố giống như train.py. Nếu bạn muốn truyền thêm các đối số cho sweep 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

trình tối ưu hóa sao chổi -j utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"

Comet cung cấp nhiều cách để trực quan hóa kết quả quét của bạn. Hãy xem một dự án đã quét xong tại đây :

Hình dung kết quả quét trong Comet, YOLOv5

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 mô hình YOLOv5 của bạn, từ các lần chạy đào tạo đến giám sát sản xuất.

Và tất nhiên, hãy tham gia Cộng đồng Ultralytics – nơi để đặt câu hỏi và chia sẻ mẹo về đào tạo, xác thực và triển khai YOLOv5.

Hãy cùng xây dựng tương lai
của AI cùng nhau!

Bắt đầu hành trình của bạn với tương lai của máy học

Bắt đầu miễn phí
Liên kết đã được sao chép vào clipboard