|
|
--- |
|
|
license: cc-by-nc-4.0 |
|
|
library_name: coreml |
|
|
pipeline_tag: image-segmentation |
|
|
tags: |
|
|
- background-removal |
|
|
- image-segmentation |
|
|
- coreml |
|
|
- apple-neural-engine |
|
|
- birefnet |
|
|
- rmbg |
|
|
language: |
|
|
- en |
|
|
base_model: briaai/RMBG-2.0 |
|
|
--- |
|
|
|
|
|
# RMBG-2 CoreML - Background Removal Model |
|
|
|
|
|
CoreML conversion of [BRIA AI's RMBG-2.0](https://huggingface.co/briaai/RMBG-2.0) background removal model, optimized for Apple Neural Engine (ANE). |
|
|
|
|
|
## Model Description |
|
|
|
|
|
This is a native ML Program format CoreML model converted from RMBG-2.0 (BiRefNet architecture) for high-quality background removal on Apple devices. |
|
|
|
|
|
### Key Features |
|
|
|
|
|
- **Native CoreML ML Program format** - Full ANE compatibility |
|
|
- **INT8 weight quantization** - Reduced model size (233MB vs 461MB) |
|
|
- **No custom layers** - Uses only native CoreML operations |
|
|
- **1024x1024 input resolution** - High-quality segmentation |
|
|
- **Fast inference** - ~3-5 seconds on Apple Silicon |
|
|
|
|
|
## Usage |
|
|
|
|
|
### With RMBG2Swift Package |
|
|
|
|
|
```swift |
|
|
import RMBG2Swift |
|
|
|
|
|
// Simple one-liner |
|
|
let rmbg = try await RMBG2() |
|
|
let result = try await rmbg.removeBackground(from: image) |
|
|
|
|
|
// Access the result |
|
|
let outputImage = result.image // Image with transparent background |
|
|
let mask = result.mask // Grayscale segmentation mask |
|
|
``` |
|
|
|
|
|
**Swift Package:** [github.com/VincentGourbin/RMBG2Swift](https://github.com/VincentGourbin/RMBG2Swift) |
|
|
|
|
|
### Manual Integration |
|
|
|
|
|
```swift |
|
|
import CoreML |
|
|
|
|
|
// Load the model |
|
|
let config = MLModelConfiguration() |
|
|
config.computeUnits = .all // Enable ANE |
|
|
|
|
|
let model = try await MLModel.load(contentsOf: modelURL, configuration: config) |
|
|
|
|
|
// Prepare input (1024x1024, NCHW format with ImageNet normalization) |
|
|
let input = MLDictionaryFeatureProvider(dictionary: ["input": inputArray]) |
|
|
|
|
|
// Run inference |
|
|
let output = try model.prediction(from: input) |
|
|
|
|
|
// Get mask from output_3 (full resolution) |
|
|
let mask = output.featureValue(for: "output_3")?.multiArrayValue |
|
|
``` |
|
|
|
|
|
## Model Details |
|
|
|
|
|
| Property | Value | |
|
|
|----------|-------| |
|
|
| Architecture | BiRefNet | |
|
|
| Input Size | 1024 x 1024 | |
|
|
| Input Format | RGB, NCHW [1, 3, 1024, 1024] | |
|
|
| Normalization | ImageNet (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) | |
|
|
| Output | 4 scales (output_0 to output_3), use output_3 for full resolution | |
|
|
| Format | ML Program (.mlpackage) | |
|
|
| Weight Quantization | INT8 (symmetric linear) | |
|
|
| Model Size | ~233 MB | |
|
|
| Minimum OS | macOS 13+ / iOS 16+ | |
|
|
| Compute Units | All (CPU, GPU, ANE) | |
|
|
|
|
|
## Performance |
|
|
|
|
|
Tested on Apple Silicon: |
|
|
|
|
|
| Device | Compute Units | Inference Time | |
|
|
|--------|--------------|---------------| |
|
|
| M1 Pro | .all (ANE) | ~5s | |
|
|
| M1 Pro | .cpuAndGPU | ~3s | |
|
|
|
|
|
> Note: ANE performance varies by device. The INT8 quantization improves memory efficiency and model size while maintaining quality. |
|
|
|
|
|
## Files |
|
|
|
|
|
Two model versions are available: |
|
|
|
|
|
| File | Size | Description | |
|
|
|------|------|-------------| |
|
|
| `RMBG-2-native.mlpackage/` | 461 MB | Original FP32 model | |
|
|
| `RMBG-2-native-int8.mlpackage/` | 233 MB | INT8 quantized model (recommended) | |
|
|
|
|
|
**Recommended:** Use the INT8 version for better memory efficiency and smaller download size with equivalent quality. |
|
|
|
|
|
## License |
|
|
|
|
|
**Creative Commons Attribution-NonCommercial 4.0 (CC BY-NC 4.0)** |
|
|
|
|
|
- **Free for non-commercial use**: Research, personal projects, education |
|
|
- **Commercial use requires a separate license** from BRIA AI |
|
|
|
|
|
For commercial licensing, contact: [bria.ai/contact-us](https://bria.ai/contact-us) |
|
|
|
|
|
## Attribution |
|
|
|
|
|
This CoreML conversion is based on the RMBG-2.0 model by BRIA AI: |
|
|
|
|
|
- **Original Model**: [briaai/RMBG-2.0](https://huggingface.co/briaai/RMBG-2.0) |
|
|
- **Architecture**: BiRefNet |
|
|
- **Creator**: [BRIA AI](https://bria.ai) |
|
|
|
|
|
## Related Links |
|
|
|
|
|
- [RMBG2Swift - Swift Package](https://github.com/VincentGourbin/RMBG2Swift) |
|
|
- [Original RMBG-2.0 Model](https://huggingface.co/briaai/RMBG-2.0) |
|
|
- [BiRefNet Paper](https://github.com/ZhengPeng7/BiRefNet) |
|
|
|