| ---
|
| 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).
|
| |