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 intocvmd.
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]
- Format per row:
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:
- test_detect_with_windows.py: Sliding window inference example.
- test_ray.py: Distributed inference with Ray.
- test_yolov11_detect.py: YOLOv11 detection example.
- test_yolov11_segment.py: YOLOv11 segmentation example.
Development
uv sync --dev
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cvmd-0.1.0.post202601010007.tar.gz.
File metadata
- Download URL: cvmd-0.1.0.post202601010007.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d64f496f97ae650874c4bb7b089f89c0d6deebc5ecc74694d1844f65b838af5
|
|
| MD5 |
aa7709ac9a575b757014e32c188f90d0
|
|
| BLAKE2b-256 |
773751afbae25e461788159e07ebe32c6640244673222f0ce52b57053b1598a5
|
File details
Details for the file cvmd-0.1.0.post202601010007-py3-none-any.whl.
File metadata
- Download URL: cvmd-0.1.0.post202601010007-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f615777062a780e2ba95c3ca1553009a8fca944b90766b20c950ab5e572baec
|
|
| MD5 |
bfcbc65958535061a5f9686a80fb4ade
|
|
| BLAKE2b-256 |
273bc4d4d03fec12ecdec26a967da9ec6f4e79072df4faa0c9d4af9295538001
|