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