Skip to content

Handler 架构

Handler 模式是 YOLO-Toys 的核心扩展机制。

Handler 接口

所有 Handler 实现共同接口:

python
class BaseHandler:
    def load(self, model_path: str) -> None:
        """从路径加载模型"""
        pass

    def infer(self, image: np.ndarray, **kwargs) -> dict:
        """对图像进行推理"""
        pass

    def unload(self) -> None:
        """释放资源"""
        pass

现有 Handler

Handler模型描述
YOLOHandleryolov8n, yolov8s 等Ultralytics YOLO 模型
DETRHandlerdetr-resnet-50Facebook DETR
OWLViTHandlerowl-vit-baseOpenAI OWL-ViT
GroundingDINOHandlergroundingdinoGrounding DINO
BLIPHandlerblip-base图像描述 & VQA

创建自定义 Handler

python
from app.handlers.base import BaseHandler

class MyHandler(BaseHandler):
    def load(self, model_path: str) -> None:
        # 在此加载你的模型
        self.model = load_my_model(model_path)

    def infer(self, image: np.ndarray, **kwargs) -> dict:
        # 运行推理
        results = self.model(image)
        return self.format_results(results)

Handler 注册

将你的 Handler 添加到注册表:

python
HANDLER_REGISTRY = {
    "yolo": YOLOHandler,
    "detr": DETRHandler,
    "myhandler": MyHandler,  # 你的 Handler
}

Released under the MIT License.