Tùy chỉnh nâng cao
Cả hai Ultralytics YOLO dòng lệnh và Python Giao diện chỉ đơn giản là một sự trừu tượng cấp cao trên các trình thực thi công cụ cơ sở. Chúng ta hãy nhìn vào động cơ Trainer.
Xem: Làm chủ Ultralytics YOLO : Tùy chỉnh nâng cao
BaseTrainer
BaseTrainer chứa thói quen đào tạo soạn sẵn chung. Nó có thể được tùy chỉnh cho bất kỳ tác vụ nào dựa trên việc ghi đè lên các chức năng hoặc hoạt động cần thiết miễn là tuân theo các định dạng chính xác. Ví dụ: bạn có thể hỗ trợ mô hình tùy chỉnh và bộ tải dữ liệu của riêng mình bằng cách ghi đè các chức năng sau:
get_model(cfg, weights)
- Chức năng xây dựng mô hình cần đào tạoget_dataloader()
- Chức năng xây dựng bộ tải dữ liệu Thêm chi tiết và mã nguồn có thể được tìm thấy trongBaseTrainer
Tham khảo
DetectionTrainer
Sau đây là cách bạn có thể sử dụng YOLO11 DetectionTrainer
và tùy chỉnh nó.
from ultralytics.models.yolo.detect import DetectionTrainer
trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best # get best model
Tùy chỉnh DetectionTrainer
Hãy tùy chỉnh huấn luyện viên để đào tạo mô hình phát hiện tùy chỉnh không được hỗ trợ trực tiếp. Bạn có thể làm điều này bằng cách chỉ cần quá tải các get_model
Chức năng:
from ultralytics.models.yolo.detect import DetectionTrainer
class CustomTrainer(DetectionTrainer):
def get_model(self, cfg, weights):
"""Loads a custom detection model given configuration and weight files."""
...
trainer = CustomTrainer(overrides={...})
trainer.train()
Bây giờ bạn nhận ra rằng bạn cần tùy chỉnh huấn luyện viên hơn nữa để:
- Tùy chỉnh
loss function
. - Thêm
callback
tải mô hình lên Google Lái xe sau mỗi 10epochs
Đây là cách bạn có thể làm điều đó:
from ultralytics.models.yolo.detect import DetectionTrainer
from ultralytics.nn.tasks import DetectionModel
class MyCustomModel(DetectionModel):
def init_criterion(self):
"""Initializes the loss function and adds a callback for uploading the model to Google Drive every 10 epochs."""
...
class CustomTrainer(DetectionTrainer):
def get_model(self, cfg, weights):
"""Returns a customized detection model instance configured with specified config and weights."""
return MyCustomModel(...)
# callback to upload model weights
def log_model(trainer):
"""Logs the path of the last model weight used by the trainer."""
last_weight_path = trainer.last
print(last_weight_path)
trainer = CustomTrainer(overrides={...})
trainer.add_callback("on_train_epoch_end", log_model) # Adds to existing callback
trainer.train()
Để biết thêm về các sự kiện kích hoạt Callback và điểm vào lệnh, hãy xem Hướng dẫn gọi lại của chúng tôi
Các thành phần động cơ khác
Có những thành phần khác có thể được tùy chỉnh tương tự như Validators
và Predictors
. Xem phần Tham khảo để biết thêm thông tin về những điều này.
FAQ
Làm thế nào để tôi tùy chỉnh Ultralytics YOLO11 DetectionTrainer dành cho các nhiệm vụ cụ thể?
Để tùy chỉnh Ultralytics YOLO11 DetectionTrainer
Đối với một tác vụ cụ thể, bạn có thể ghi đè các phương thức của nó để thích ứng với mô hình tùy chỉnh và bộ tải dữ liệu của bạn. Bắt đầu bằng cách kế thừa từ DetectionTrainer
và sau đó định nghĩa lại các phương thức như get_model
để triển khai các chức năng tùy chỉnh của bạn. Đây là một ví dụ:
from ultralytics.models.yolo.detect import DetectionTrainer
class CustomTrainer(DetectionTrainer):
def get_model(self, cfg, weights):
"""Loads a custom detection model given configuration and weight files."""
...
trainer = CustomTrainer(overrides={...})
trainer.train()
trained_model = trainer.best # get best model
Để tùy chỉnh thêm như thay đổi loss function
hoặc thêm một callback
, bạn có thể tham khảo Hướng dẫn gọi lại.
Các thành phần chính của BaseTrainer là gì? Ultralytics YOLO11 là gì?
Các BaseTrainer
TRONG Ultralytics YOLO11 đóng vai trò là nền tảng cho các thói quen đào tạo và có thể được tùy chỉnh cho nhiều nhiệm vụ khác nhau bằng cách ghi đè các phương pháp chung của nó. Các thành phần chính bao gồm:
get_model(cfg, weights)
để xây dựng mô hình cần đào tạo.get_dataloader()
để xây dựng bộ tải dữ liệu.
Để biết thêm chi tiết về tùy chỉnh và mã nguồn, hãy xem BaseTrainer
Tham khảo.
Làm thế nào tôi có thể thêm một cuộc gọi lại vào Ultralytics YOLO11 DetectionTrainer là gì?
Bạn có thể thêm lệnh gọi lại để theo dõi và sửa đổi quá trình đào tạo trong Ultralytics YOLO11 DetectionTrainer
. Ví dụ, đây là cách bạn có thể thêm lệnh gọi lại để ghi lại trọng số mô hình sau mỗi lần đào tạo thời đại:
from ultralytics.models.yolo.detect import DetectionTrainer
# callback to upload model weights
def log_model(trainer):
"""Logs the path of the last model weight used by the trainer."""
last_weight_path = trainer.last
print(last_weight_path)
trainer = DetectionTrainer(overrides={...})
trainer.add_callback("on_train_epoch_end", log_model) # Adds to existing callbacks
trainer.train()
Để biết thêm chi tiết về các sự kiện gọi lại và điểm vào lệnh, hãy tham khảo Hướng dẫn gọi lại của chúng tôi.
Tại sao tôi nên sử dụng Ultralytics YOLO11 để đào tạo người mẫu?
Ultralytics YOLO11 cung cấp khả năng trừu tượng hóa cấp cao trên các trình thực thi engine mạnh mẽ, giúp lý tưởng cho việc phát triển và tùy chỉnh nhanh chóng. Các lợi ích chính bao gồm:
- Dễ sử dụng: Cả dòng lệnh và Python Giao diện đơn giản hóa các tác vụ phức tạp.
- Hiệu suất : Được tối ưu hóa cho việc phát hiện đối tượng theo thời gian thực và nhiều ứng dụng AI về thị giác khác nhau.
- Tùy chỉnh : Có thể dễ dàng mở rộng cho các mô hình tùy chỉnh, hàm mất mát và trình tải dữ liệu.
Tìm hiểu thêm về khả năng của YOLO11 bằng cách truy cập Ultralytics YOLO .
Tôi có thể sử dụng Ultralytics YOLO11 DetectionTrainer dành cho các mô hình không chuẩn?
Đúng, Ultralytics YOLO11 DetectionTrainer
có tính linh hoạt cao và có thể được tùy chỉnh cho các mô hình không chuẩn. Bằng cách kế thừa từ DetectionTrainer
, bạn có thể quá tải các phương pháp khác nhau để hỗ trợ nhu cầu của mô hình cụ thể của bạn. Đây là một ví dụ đơn giản:
from ultralytics.models.yolo.detect import DetectionTrainer
class CustomDetectionTrainer(DetectionTrainer):
def get_model(self, cfg, weights):
"""Loads a custom detection model."""
...
trainer = CustomDetectionTrainer(overrides={...})
trainer.train()
Để biết hướng dẫn và ví dụ toàn diện hơn, hãy xem lại tài liệu DetectionTrainer .