Skip to main content

Computer Vision Models Deployment

Project description

CVMD

A Computer Vision Model Development toolkit. cvmd uses NumPy arrays as both input and output, aiming to provide a unified and concise model inference interface.

Installation

pip install cvmd

Quick Start

import imageio.v3 as iio
from cvmd import build

# Build and load model
model = build("yolov11det", weights="yolo11l.torchscript", device="cuda")
model.load_model()

# Read image (HWC, RGB)
image = iio.imread("image.jpg")

# Perform inference
results = model(image)
# results: [x1, y1, x2, y2, confidence, class]

Core API

Model Building and Management

cvmd provides a registration mechanism to manage different models.

  • list_models(): List all registered model names.
  • build(model_name_or_cls, **kwargs): Build a model instance by name or class.
  • register_model(*names): Decorator to register custom model classes into cvmd.

Supported Models

Currently supported model series (primarily loaded via TorchScript):

Model Series Task Registered Names
YOLOv12 Detection / Segmentation yolov12det, yolov12seg
YOLOv11 Detection / Segmentation yolov11det, yolov11seg
YOLOv8 Detection / Segmentation yolov8det, yolov8seg
YOLOv5 Detection / Segmentation yolov5det, yolov5seg
DETR Detection detr (To be implemented)
Deformable DETR Detection deformabledetr (To be implemented)

Inference Interface

All model classes follow a unified calling convention:

Detection Models (*Detect)

  • Input: image (np.ndarray, HWC, RGB)
  • Output: results (np.ndarray, shape=(N, 6))
    • Format per row: [x1, y1, x2, y2, confidence, class]

Segmentation Models (*Segment)

  • Input: image (np.ndarray, HWC, RGB)
  • Output: (detections, masks)
    • detections: (np.ndarray, shape=(N, 6)), same format as above.
    • masks: (np.ndarray, shape=(N, H, W)), boolean masks.

Utility Functions

Sliding Window Inference

For large image inference, you can use detect_with_windows:

from cvmd.utils.windows import detect_with_windows

# Define windows [x1, y1, x2, y2]
windows = [[0, 0, 640, 640], [320, 320, 960, 960]]

results = detect_with_windows(
    image, 
    windows, 
    model, 
    merge=True, 
    merge_iou=0.2
)

Distributed Inference with Ray

cvmd includes a utility for distributed inference using Ray. This is useful for processing large batches of images across multiple GPUs.

from cvmd.utils.ray_infer import ray_infer_iter, InferActor

# Define your custom handler
def my_handler(task, model_config, runs_config):
    model = model_config["model"]
    image = task["image"]
    return model(image)

# Run distributed inference
tasks = [{"image": img} for img in my_images]
results = ray_infer_iter(
    InferActor,
    tasks,
    num_actors=4,
    actor_kwargs={
        "model_config": {"model_name": "yolov11det", "weights": "yolo11l.torchscript"},
        "handler": my_handler
    }
)

for r in results:
    print(r)

Examples & Tests

You can find more usage examples in the test/ directory:

Development

uv sync --dev

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cvmd-0.1.0.post202601010006.tar.gz (27.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cvmd-0.1.0.post202601010006-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

Details for the file cvmd-0.1.0.post202601010006.tar.gz.

File metadata

  • Download URL: cvmd-0.1.0.post202601010006.tar.gz
  • Upload date:
  • Size: 27.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cvmd-0.1.0.post202601010006.tar.gz
Algorithm Hash digest
SHA256 112e8dff455f1bc35fef1a6bf6609e422d39d4c2df550865d834693b439144a0
MD5 df8325e06a14edb13cab55f647364b7d
BLAKE2b-256 8e18e2b9dcc57802af32e123998c182763bc4b026b951907cb21ce7babe41ad8

See more details on using hashes here.

File details

Details for the file cvmd-0.1.0.post202601010006-py3-none-any.whl.

File metadata

  • Download URL: cvmd-0.1.0.post202601010006-py3-none-any.whl
  • Upload date:
  • Size: 27.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cvmd-0.1.0.post202601010006-py3-none-any.whl
Algorithm Hash digest
SHA256 6f7f83c72bc7c38d64ce42ba97b8b07f057aa5f80a0f06ca0aba904feeed027b
MD5 cc7053a0b55c8be84df17e8ad644244c
BLAKE2b-256 18af4de3e6d61c8f043112c664d33ee0803528203c6b5dab1035295362abd6cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page