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à sự trừu tượng hóa cấp cao trên các trình thực thi của công cụ cơ sở. Chúng ta hãy xem xét công cụ Trainer.
Đồng hồ: Làm chủ Ultralytics YOLO : Tùy chỉnh nâng cao
Huấn luyện viên cơ sở
BaseTrainer chứa chương trình đào tạo boilerplate 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 đè các chức năng hoặc hoạt động cần thiết miễn là tuân theo đúng định dạng. Ví dụ, bạn có thể hỗ trợ mô hình tùy chỉnh và trình tải dữ liệu của riêng mình chỉ bằng cách ghi đè các chức năng này:
get_model(cfg, weights)
- Chức năng xây dựng mô hình cần được đào tạoget_dataloader()
- Chức năng xây dựng dataloader. Chi tiết hơn và mã nguồn có thể được tìm thấy trongBaseTrainer
Thẩm quyền giải quyết
Phát hiệnTrainer
Đâ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ột mô hình phát hiện tùy chỉnh không được hỗ trợ trực tiếp. Bạn có thể thực hiện đ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 trình huấn luyện thêm để:
- Tùy chỉnh
loss function
. - Thêm vào
callback
tải mô hình lên Google Lái xe sau mỗi 10epochs
Sau đây là cách bạn có thể thực hiện:
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, hãy xem Hướng dẫn Callback 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.
CÂU HỎI THƯỜNG GẶP
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à trình tải dữ liệu của bạn. Bắt đầu bằng cách kế thừa từ DetectionTrainer
và sau đó xác định lại các phương pháp như get_model
để triển khai các chức năng tùy chỉnh của bạn. Sau đâ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 của chúng tôi Hướng dẫn gọi lại.
Các thành phần chính của BaseTrainer là gì? Ultralytics YOLO11 ?
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 được đào tạo.get_dataloader()
để xây dựng trình 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
Thẩm quyền giải quyết.
Làm thế nào tôi có thể thêm một cuộc gọi lại vào Ultralytics YOLO11 DetectionTrainer?
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, 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 về các trình thực thi động cơ 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 giúp đơ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ề YOLO11 khả năng của 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
rất linh hoạt và có thể 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ụ thể của mô hình của bạn. Sau đâ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 tài liệu DetectionTrainer .