File size: 4,038 Bytes
6432eb1 63ac809 6432eb1 63ac809 6432eb1 63ac809 6432eb1 63ac809 6432eb1 63ac809 6432eb1 63ac809 6432eb1 63ac809 f07a9d0 e9fbad5 6432eb1 63ac809 6432eb1 13d31e3 532cee8 f07a9d0 532cee8 f07a9d0 532cee8 f07a9d0 f3a5634 532cee8 e9fbad5 4773683 f3a5634 e9fbad5 63ac809 6432eb1 63ac809 f07a9d0 63ac809 d3f79f8 e9fbad5 f07a9d0 63ac809 f07a9d0 63ac809 6432eb1 63ac809 6432eb1 63ac809 6432eb1 63ac809 6432eb1 63ac809 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | ---
license: apache-2.0
pipeline_tag: image-segmentation
library_name: executorch
---
# u2netp
This repository hosts the **U²-Netp** models exported for the
[React Native ExecuTorch](https://www.npmjs.com/package/react-native-executorch)
library as ExecuTorch `.pte` programs, ready to run on device.
U²-Netp predicts a soft mask for salient foreground objects, including animals
and products as well as people. It does not classify object categories or
separate individual instances.
Upstream model: [U²-Net](https://github.com/xuebinqin/U-2-Net),
revision `ac7e1c817ecab7c7dff5ce6b1abba61cd213ff29`.
## Variants
| Path | Backend | Precision |
| --------------------------------- | ------- | --------- |
| `coreml/u2netp_coreml_fp16.pte` | coreml | fp16 |
| `coreml/u2netp_coreml_fp32.pte` | coreml | fp32 |
| `xnnpack/u2netp_xnnpack_fp32.pte` | xnnpack | fp32 |
| `xnnpack/u2netp_xnnpack_int8.pte` | xnnpack | selective int8 / fp32 |
| `vulkan/u2netp_vulkan_fp16.pte` | vulkan | fp16 with one fp32 convolution |
The exports take RGB float32 `[1,3,320,320]` input in `[0,1]` and return one
float32 `[1,1,320,320]` foreground logit map. Image-maximum scaling and ImageNet
normalization are included in the graph. RNE applies sigmoid and returns an
opaque RGBA grayscale mask; use its foreground intensity as an alpha mask when
compositing the original image. Fine structures can be missed. FP16 favors
speed and may shift mask boundaries; FP32 preserves the reference more closely.
## Precision notes
The INT8 variant selectively quantizes four expensive convolutions with static
INT8 activations and per-channel INT8 weights. Sensitive layers and skip
connections remain FP32; public input and output types are unchanged.
On an Apple M1 Pro, interleaved ExecuTorch runs measured **87 ms** median versus
**156 ms** for FP32 (1.78× faster; 30 runs after five warm-ups). Device speedups
will vary. Across 13 images outside calibration, exported masks averaged
**0.9953 IoU** against FP32 (minimum 0.9868), at a foreground threshold of 0.5.
These measure export agreement, not accuracy against ground-truth masks.
Choose FP32 when boundary precision matters.
Full-network INT8 remains unpublished because it loses substantial foreground
detail.
Vulkan FP16 preserves input normalization and one sensitive convolution in FP32.
On a Galaxy S20+ (Android 13, Mali), native forward medians were 337 ms for this
variant, versus 316 ms for XNNPACK FP32 and 189 ms for selective INT8. Android uses the standard Vulkan-first default when the Vulkan backend is
linked. Performance varies by device. Across 13 device-tested images, Vulkan FP16 averaged 0.9945 mask IoU
against FP32 (minimum 0.9854).
## Repository structure
```
config.json 28 B
coreml/config.json 1.5 kB
coreml/u2netp_coreml_fp16.pte 3.3 MB
coreml/u2netp_coreml_fp32.pte 5.5 MB
vulkan/config.json 886 B
vulkan/u2netp_vulkan_fp16.pte 2.4 MB
xnnpack/config.json 1.5 kB
xnnpack/u2netp_xnnpack_fp32.pte 4.6 MB
xnnpack/u2netp_xnnpack_int8.pte 4.0 MB
LICENSE 11.4 kB
```
## Compatibility
These files are published for the **ExecuTorch v1.4.1** runtime. ExecuTorch
gives no forward compatibility guarantee, so an older runtime may fail to load
them. CoreML requires iOS 18 / macOS 15 or newer; full RNE execution and
performance still require validation on the target device.
To use them in React Native ExecuTorch, pass
`models.semanticSegmentation.U2NETP.DEFAULT` to `useSemanticSegmenter` or
`createSemanticSegmenter`. See the
[documentation](https://docs.swmansion.com/react-native-executorch/docs/fundamentals/downloading-models).
To load these files in your own ExecuTorch runtime, read the
[compatibility note](https://github.com/pytorch/executorch/blob/main/runtime/COMPATIBILITY.md)
first.
|