Xuban's picture
Add measured ADE20K mIoU (LibreYOLO val protocol)
1c54f30 verified
|
Raw
History Blame Contribute Delete
3.16 kB
---
license: other
license_name: nvidia-source-code-license-segformer
license_link: https://github.com/NVlabs/SegFormer/blob/master/LICENSE
library_name: libreyolo
pipeline_tag: image-segmentation
datasets:
- scene_parse_150
tags:
- semantic-segmentation
- segformer
- ade20k
- non-commercial
---
# LibreSegformerb5-sem
SegFormer MiT-b5 (84.7M params) with the all-MLP decode head, fine-tuned on
ADE20K (150 classes) at 640x640, repackaged for
[LibreYOLO](https://github.com/LibreYOLO/libreyolo).
> ## ⚠️ NON-COMMERCIAL WEIGHTS
>
> These weights are **not** covered by LibreYOLO's permissive license. They
> derive from NVIDIA's SegFormer release, licensed under the
> [NVIDIA Source Code License](https://github.com/NVlabs/SegFormer/blob/master/LICENSE),
> which restricts **use** to **non-commercial research or evaluation purposes
> only** (Section 3.3). That restriction is carried into every derivative work
> (Section 3.2) and it binds you, the downloader, not just LibreYOLO.
>
> The LibreYOLO **code** and the SegFormer **architecture** are unrestricted, as
> is any model you train from scratch with them. Only these pretrained weights
> are limited. For commercial use, train from scratch:
> `LibreSegformer(size="b5", nb_classes=N).train(data="your.yaml")`.
## Usage
```python
from libreyolo import LibreSegformer
model = LibreSegformer("LibreSegformerb5-sem.pt")
results = model.predict("image.jpg")
mask = results[0].semantic_mask # dense 150-class ADE20K mask
```
## Source
Converted from [nvidia/segformer-b5-finetuned-ade-640-640](https://huggingface.co/nvidia/segformer-b5-finetuned-ade-640-640).
Copyright (c) 2021, NVIDIA Corporation & affiliates.
Licensed under the NVIDIA Source Code License for SegFormer.
Architecture from "SegFormer: Simple and Efficient Design for Semantic
Segmentation with Transformers" (Xie et al., NeurIPS 2021). LibreYOLO's
implementation is an independent port of the Apache-2.0 reference in
HuggingFace Transformers, with no runtime dependency on it.
## Modifications
State-dict key remapping only (upstream `segformer.` encoder prefix becomes
`encoder.`), plus LibreYOLO checkpoint metadata. Learned parameters are
unchanged: the converted checkpoint reproduces upstream logits **bit-exactly**
(max abs difference 0.0 in float64). See
[`weights/convert_segformer_weights.py`](https://github.com/LibreYOLO/libreyolo/blob/dev/weights/convert_segformer_weights.py).
## Accuracy
ADE20K val (2000 images), single scale:
| | mIoU |
|---|---|
| **LibreYOLO `model.val(data="ade20k.yaml")`** | **49.7** |
| Upstream authors, reported | 51.0 |
LibreYOLO's validator letterboxes to a fixed square canvas; the authors evaluate with a
ratio-preserving resize, which is worth roughly a point. The converted weights reproduce the
upstream model's logits **bit-exactly** (max abs difference 0.0 in float64), so any remaining
difference is evaluation protocol, not conversion.
## License
NVIDIA Source Code License for SegFormer (**non-commercial**). See
[`LICENSE`](./LICENSE) and [`NOTICE`](./NOTICE).