CARAFE content-aware upsampling for Apple Silicon (MPS)
Project description
MPS CARAFE
CARAFE (Content-Aware ReAssembly of FEatures) for Apple Silicon (M1/M2/M3/M4).
Drop-in replacement for mmcv's CARAFE op.
Why?
CARAFE is a learnable upsampling operator used in:
- Mask R-CNN: Instance segmentation
- FPN: Feature Pyramid Networks
- YOLACT: Real-time instance segmentation
But mmcv's implementation is CUDA-only. On Mac you get:
NotImplementedError: carafe not implemented for MPS
This package provides a native Metal implementation.
Installation
pip install mps-carafe
Or from source:
git clone https://github.com/mpsops/mps-carafe
cd mps-carafe
pip install -e .
Quick Start
Basic CARAFE Operation
import torch
from mps_carafe import carafe
# Input features (N, C, H, W)
features = torch.randn(1, 64, 32, 32, device='mps')
# Reassembly masks (N, group_size * k^2, H*scale, W*scale)
kernel_size = 5
group_size = 1
scale_factor = 2
masks = torch.softmax(
torch.randn(1, group_size * kernel_size**2, 64, 64, device='mps'),
dim=1
)
# Upsample with CARAFE
output = carafe(features, masks, kernel_size, group_size, scale_factor)
# Output: (1, 64, 64, 64)
CARAFE Module
from mps_carafe import CARAFE
carafe_layer = CARAFE(kernel_size=5, group_size=1, scale_factor=2)
output = carafe_layer(features, masks)
CARAFEPack (with mask predictor)
from mps_carafe import CARAFEPack
# Complete upsampling block with built-in mask predictor
upsample = CARAFEPack(
channels=64,
kernel_size=5,
group_size=1,
scale_factor=2
).to('mps')
output = upsample(features) # No need to provide masks
API Reference
carafe(features, masks, kernel_size, group_size, scale_factor)
| Parameter | Type | Description |
|---|---|---|
features |
Tensor | Input features (N, C, H, W) |
masks |
Tensor | Reassembly kernels (N, group_size * k^2, Hscale, Wscale) |
kernel_size |
int | Size of reassembly kernel (typically 5) |
group_size |
int | Number of channel groups (typically 1) |
scale_factor |
int | Upsampling factor (typically 2) |
CARAFEPack
Complete CARAFE block with mask prediction convolutions.
How It Works
CARAFE upsamples by:
- For each output pixel, identify the corresponding input neighborhood
- Use learned reassembly kernels (masks) to weight input pixels
- Sum the weighted inputs to produce the output
Unlike bilinear upsampling which uses fixed weights, CARAFE learns content-aware weights that adapt to the image content.
Compatibility
- PyTorch: 2.0+
- macOS: 12.0+ (Monterey)
- Hardware: Apple Silicon (M1/M2/M3/M4)
Features
- Full forward and backward pass (training supported)
- fp32 and fp16 supported
- Compatible with mmcv CARAFE API
Credits
- CARAFE Paper - Original research
- mmcv - Reference implementation
License
MIT
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
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 mps_carafe-0.1.2.tar.gz.
File metadata
- Download URL: mps_carafe-0.1.2.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2f9aa3a6d9bd4ddeb74237e95a051ba625fbcad9afa5ae3fe7a222ef586a542
|
|
| MD5 |
a0a83c1658ac2e6583cde05e8a8dc6d0
|
|
| BLAKE2b-256 |
bd4b69509d348a2ce3c7d821d33268bfafec12321a85d9d36d74e9774510f24f
|
File details
Details for the file mps_carafe-0.1.2-cp314-cp314-macosx_15_0_arm64.whl.
File metadata
- Download URL: mps_carafe-0.1.2-cp314-cp314-macosx_15_0_arm64.whl
- Upload date:
- Size: 85.5 kB
- Tags: CPython 3.14, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
669d4d499a30ae0a9ad8d4ff87c6ae5b010299e032540c420bb06a8df021d58e
|
|
| MD5 |
d298ffb17353f72a67440c5461e31777
|
|
| BLAKE2b-256 |
8858d007af305397db3faa4a0fd7af72f6df436ed14d41cb722732e14863a7a4
|