def METHOD_NAME(
    model_kwargs: dict, wrapper_kwargs: dict, weights_path: Optional[str] = None
) -> PyTorchFasterRCNN:
    num_classes = model_kwargs.pop("num_classes", 3)
    frcnn_kwargs = {
        arg: model_kwargs.pop(arg)
        for arg in ["min_size", "max_size"]
        if arg in model_kwargs
    }
    backbone = MultimodalNaive(**model_kwargs)
    model = FasterRCNN(
        backbone,
        num_classes=num_classes,
        image_mean=[0.485, 0.456, 0.406, 0.0, 0.0, 0.0],
        image_std=[0.229, 0.224, 0.225, 1.0, 1.0, 1.0],
        **frcnn_kwargs,
    )
    model.to(DEVICE)
    if weights_path:
        checkpoint = torch.load(weights_path, map_location=DEVICE)
        model.load_state_dict(checkpoint)
    wrapped_model = PyTorchFasterRCNN(
        model,
        clip_values=(0.0, 1.0),
        channels_first=False,
        **wrapper_kwargs,
    )
    return wrapped_model