PRE-RELEASE ALPHA SOFTWARE
This project is currently in an early alpha stage of development. APIs may change without notice, features may be incomplete, and the software is not yet recommended for production use. Use at your own risk.
Cerebras-native Computer Vision Library
PyFlameVision is a computer vision library designed for the Cerebras Wafer Scale Engine (WSE), providing PyTorch-compatible APIs for image transforms, datasets, and vision operations.
- Image Transforms: Resize, crop, normalize, flip, rotate, color jitter, blur
- Datasets: Map-style and iterable datasets with efficient DataLoader
- Vision Ops: Grid sampling, ROI align, Non-Maximum Suppression (NMS)
- Models: ResNet, EfficientNet architectures (C++ headers)
- PyTorch-compatible API: Familiar interface for torchvision users
- Hardware Acceleration: Optimized for Cerebras WSE via CSL templates
git clone https://github.com/pyflame/pyflame-vision.git
cd pyflame-vision
pip install .git clone https://github.com/pyflame/pyflame-vision.git
cd pyflame-vision
pip install -e ".[dev]"For full hardware acceleration, set the PYFLAME_DIR environment variable before building:
export PYFLAME_DIR=/path/to/pyflame
pip install .import pyflame_vision.transforms as T
# Create a transform pipeline
transform = T.Compose([
T.Resize((224, 224)),
T.ToTensor(),
T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# Apply to an image
from pyflame_vision.io import read_image
img = read_image("photo.jpg")
transformed = transform(img)from pyflame_vision.datasets import Dataset, DataLoader
class MyDataset(Dataset):
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx]
# Create dataloader with batching
dataset = MyDataset([1, 2, 3, 4, 5])
loader = DataLoader(dataset, batch_size=2, shuffle=True, num_workers=4)
for batch in loader:
print(batch)from pyflame_vision.ops import nms, roi_align, grid_sample
# Non-Maximum Suppression
keep = nms(boxes, scores, iou_threshold=0.5)
# ROI Align for object detection
pooled = roi_align(features, boxes, output_size=(7, 7))
# Grid sampling for spatial transformations
output = grid_sample(input, grid, mode='bilinear')PyFlameVision is designed as a modular library:
pyflame_vision/
transforms/ # Image transformation operations
datasets/ # Dataset and DataLoader implementations
io/ # Image I/O utilities
ops/ # Vision-specific operations
PyFlameVision can operate in two modes:
- Standalone Mode: Full Python functionality without PyFlame dependency
- Integrated Mode: Hardware-accelerated operations via PyFlame's Cerebras backend
- Python 3.8+
- NumPy >= 1.20.0
- Pillow >= 8.0.0
- CMake >= 3.18 (for building from source)
- C++17 compiler (for building from source)
Optional:
- PyFlame (for hardware acceleration)
# Run Python tests
pytest tests/python/
# Run C++ tests (after building)
cd build && ctest --output-on-failurePyFlameVision is released under the MIT License. See LICENSE for details.
Contributions are welcome! Please read our Contributing Guide before submitting pull requests.
- PyFlame - Core tensor library for Cerebras WSE
- torchvision - PyTorch's computer vision library (API inspiration)
If you use PyFlameVision in your research, please cite:
@software{pyflame_vision,
title = {PyFlameVision: Cerebras-native Computer Vision Library},
year = {2024},
url = {https://github.com/pyflame/pyflame-vision}
}