Bỏ qua nội dung

Tùy chỉnh nâng cao

Cả hai Ultralytics YOLO dòng lệnh và Python giao diện là các trừu tượng cấp cao được xây dựng dựa trên các trình thực thi cơ sở. Hướng dẫn này tập trung vào Trainer động cơ, giải thích cách tùy chỉnh nó cho phù hợp với nhu cầu cụ thể của bạn.



Đồng hồ: Làm chủ Ultralytics YOLO : Tùy chỉnh nâng cao

Huấn luyện viên cơ sở

Các BaseTrainer class cung cấp một quy trình đào tạo chung có thể thích ứng với nhiều tác vụ khác nhau. Tùy chỉnh nó bằng cách ghi đè các chức năng hoặc hoạt động cụ thể trong khi tuân thủ các định dạng bắt buộc. Ví dụ, tích hợp mô hình tùy chỉnh và trình tải dữ liệu của riêng bạn bằng cách ghi đè các chức năng sau:

  • get_model(cfg, weights): Xây dựng mô hình để đượ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à mã nguồn, hãy xem BaseTrainer Thẩm quyền giải quyết.

Phát hiệnTrainer

Sau đây là cách sử dụng và tùy chỉnh Ultralytics YOLO DetectionTrainer:

from ultralytics.models.yolo.detect import DetectionTrainer

trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # Get the best model

Tùy chỉnh DetectionTrainer

Để đà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, hãy quá tải mô hình hiện 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()

Tùy chỉnh thêm trình huấn luyện bằng cách sửa đổi hàm mất mát hoặc thêm lệnh gọi lại để tải mô hình lên Google Lái xe cứ 10 lần . Đây là một ví dụ:

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 callbacks
trainer.train()

Để biết thêm thông tin về các sự kiện kích hoạt lệnh gọi lại và điểm vào, hãy xem Hướng dẫn lệnh gọi lại .

Các thành phần động cơ khác

Tùy chỉnh các thành phần khác như ValidatorsPredictors tương tự. Để biết thêm thông tin, hãy tham khảo tài liệu cho Người xác thựcNgười dự đoán.

Sử dụng YOLO với Huấn luyện viên tùy chỉnh

Các YOLO lớp model cung cấp một wrapper cấp cao cho các lớp Trainer. Bạn có thể tận dụng kiến trúc này để có tính linh hoạt cao hơn trong quy trình học máy của mình:

from ultralytics import YOLO
from ultralytics.models.yolo.detect import DetectionTrainer


# Create a custom trainer
class MyCustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Custom code implementation."""
        ...


# Initialize YOLO model
model = YOLO("yolo11n.pt")

# Train with custom trainer
results = model.train(trainer=MyCustomTrainer, data="coco8.yaml", epochs=3)

Cách tiếp cận này cho phép bạn duy trì sự đơn giản của YOLO giao diện trong khi tùy chỉnh quy trình đào tạo cơ bản để phù hợp với yêu cầu cụ thể của bạn.

CÂU HỎI THƯỜNG GẶP

Làm thế nào để tôi tùy chỉnh Ultralytics YOLO DetectionTrainer dành cho các nhiệm vụ cụ thể?

Tùy chỉnh DetectionTrainer cho các tác vụ cụ thể bằng cách 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à 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. 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 the best model

Để tùy chỉnh thêm, chẳng hạn như thay đổi hàm mất mát hoặc thêm lệnh gọi lại , hãy 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 YOLO ?

Các BaseTrainer đóng vai trò là nền tảng cho các thói quen đào tạo, có thể 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 đào tạo.
  • get_dataloader(): Xây dựng trình tải dữ liệu.
  • preprocess_batch(): Xử lý tiền xử lý hàng loạt trước khi chuyển tiếp mô hình.
  • set_model_attributes(): Đặt thuộc tính mô hình dựa trên thông tin tập dữ liệu.
  • get_validator(): Trả về trình xác thực để đánh giá mô hình.

Để 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 YOLO DetectionTrainer?

Thêm lệnh gọi lại để theo dõi và sửa đổi quá trình đào tạo trong DetectionTrainer. Sau đây là cách 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 .

Tại sao tôi nên sử dụng Ultralytics YOLO để đào tạo người mẫu?

Ultralytics YOLO cung cấp khả năng trừu tượng hóa cấp cao đối với các trình thực thi động cơ mạnh mẽ, khiến nó trở nên 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ính mô-đun : Các thành phần có thể được sửa đổi độc lập mà không ảnh hưởng đến toàn bộ đường ống.
  • Tích hợp : Hoạt động liền mạch với các khuôn khổ và công cụ phổ biến trong hệ sinh thái ML.

Tìm hiểu thêm về YOLO khả năng của bằng cách khám phá trang YOLO chính Ultralytics .

Tôi có thể sử dụng Ultralytics YOLO DetectionTrainer dành cho các mô hình không chuẩn?

Vâng, DetectionTrainer rất linh hoạt và có thể tùy chỉnh cho các mô hình không chuẩn. Kế thừa từ DetectionTrainer và các phương pháp quá tải để 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()

Để có hướng dẫn và ví dụ toàn diện, hãy xem lại DetectionTrainer Thẩm quyền giải quyết.

📅 Được tạo ra cách đây 1 năm ✏️ Đã cập nhật cách đây 5 ngày

Bình luận