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

Khám phá cách Ultralytics hợp tác với Comet để tối ưu hóa mô hình Ultralytics YOLOv5: theo dõi thời gian thực, hợp tác hiệu quả và tăng cường khả năng tái tạo.
Tại Ultralytics, chúng tôi hợp tác thương mại với các startup khác để giúp tài trợ cho việc nghiên cứu và phát triển các công cụ mã nguồn mở tuyệt vời của chúng tôi, như YOLOv5, để giữ cho chúng miễn phí cho tất cả 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 tăng tốc và tối ưu hóa các mô hình machine learning và deep learning.
Comet là một công cụ mạnh mẽ để theo dõi các mô hình, bộ 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 suôn sẻ cho mọi lần chạy. Nó giống như có một trợ lý ảo, người biết kỳ diệu những ghi chú nào cần giữ. Theo dõi và trực quan hóa các số liệu mô hình trong thời gian thực, lưu các siêu tham số, bộ dữ liệu và điểm kiểm tra mô hình của bạn, đồ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!
Hơn nữa, Comet đảm bảo bạn không bao giờ bị 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ô!
YOLOv5 là một đ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à đưa nó vào trạng thái sẵn sàng sản xuất, bạn cần ghi lại kết quả trong một công cụ theo dõi thử nghiệm như Comet.
Tích hợp Comet và YOLOv5 cung cấp 3 tính năng chính:
Hướng dẫn này sẽ trình bày cách sử dụng YOLOv5 với Comet.
Bạn đã sẵn sàng theo dõi các thử nghiệm của mình trong thời gian thực chưa? Hãy bắt đầu nào!
Pip install comet_ml
Có hai cách để định 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 hoặc tạo tệp .comet.config trong thư mục làm việc của bạn và đặt thông tin xác thực của bạn ở đó.
export COMET_API_KEY=export COMET_PROJECT_NAME= # Giá trị mặc định sẽ là 'yolov5'
[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'
# Huấn luyện 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, 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 Comet UI.
Xem một 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ử trong Colab Notebook này.
Theo mặc định, Comet sẽ ghi lại các mục sau:
Comet có thể được cấu hình để ghi nhật ký 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 các biến môi trường.
export COMET_MODE=online # Đặt chế độ chạy Comet là 'online' hoặc 'offline'. 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 nhật ký vào Comet. Mặc định là 100.export COMET_LOG_PER_CLASS_METRICS=true # Đặt để ghi nhật ký các số liệu đánh giá cho mỗi lớp được phát hiện khi kết thúc quá trình huấn luyện. Mặc định là falseexport COMET_DEFAULT_CHECKPOINT_FILENAME= # Đặt giá trị này nếu bạn muốn tiếp tục huấn luyện từ một điểm kiểm tra khác. Mặc định là 'last.pt'export COMET_LOG_BATCH_LEVEL_METRICS=true # Đặt giá trị này nếu bạn muốn ghi nhật ký các số liệu huấn luyện ở cấp độ lô. Mặc định là false.export COMET_LOG_PREDICTIONS=true # Đặt giá trị này thành false để tắt ghi nhật ký dự đoán mô hình
Tính năng ghi nhật ký mô hình vào Comet bị tắt 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 đ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
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 vào Comet. Bạn có thể kiểm soát tần suất của các dự đoán được ghi và các hình ảnh liên quan bằng cách chuyển đối số dòng lệnh bbox_interval. Có thể trực quan hóa các dự đoán bằng Bảng điều khiển 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 trên mỗi epoch. Trong ví dụ bên dưới, chúng tôi đang ghi lại mọi lô dữ liệu thứ 2 cho mỗi epoch.
Lưu ý: Trình tải dữ liệu xác thực YOLOv5 sẽ mặc định kích thước batch 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 dự án mẫu sử dụng Panel.
python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt \--bbox_interval 2
Khi ghi lại các dự đoán từ YOLOv5, Comet sẽ ghi lại các hình ảnh được liên kết với mỗi tập hợ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 cách sử dụ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
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
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 việc này bằng cách sử dụng flag upload_dataset.
Tập 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 tập 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 bộ dữ liệu đã tải lên trong tab Artifacts (Hiện vật) trong Comet Workspace của bạn.
Bạn có thể xem trước dữ liệu trực tiếp trong giao diện người dùng 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ừ tệp yaml bộ dữ liệu của bạn.
Nếu bạn muốn sử dụng một bộ dữ liệu từ Comet Artifacts, hãy đặt biến đường dẫn trong tệp yaml bộ dữ liệu của bạn để 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 cho script 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ữ liệu khi nó chảy qua quy trình làm việc Experimentation 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.
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 quá trình chạy bằng cách sử dụng flag resume và Comet Run Path.
Đường dẫn Run Path có định dạng như sau: comet://.//.
Thao tác này sẽ khôi phục 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ố 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. Lần chạy được tiếp tục sẽ tiếp tục ghi nhật ký vào Experiment hiện có trong Comet UI.
python train.py \--resume "comet://"
YOLOv5 cũng được tích hợp với Comet's Optimizer, giúp bạn dễ dàng trực quan hóa các lượt quét siêu tham số trong Comet UI.
Để định cấu hình Comet Optimizer, bạn sẽ phải tạo một tệp JSON với 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"
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 chuyển các đối số bổ sung vào 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
comet optimizer -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ả sweep của bạn. Hãy xem một dự án với một sweep đã hoàn thành tại đây:
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 huấn luyện đế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ẻ các mẹo về huấn luyện, xác thực và triển khai YOLOv5.