U-Net

U-Net performs semantic segmentation with an encoder, skip connections and an upsampling decoder.

Tasks
semantic segmentation
Install
pip install libreyolo
Support tier
Supported, since v1.6.0. Supporting trainables: kept green in CI, features land opportunistically.
Licenses
Code MIT, weights Apache-2.0. Commercial use

Install

bash
pip install "libreyolo"

Predict

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreUNets-sem.pt", device="cpu")result = model(SAMPLE_IMAGE) mask = result.semantic_maskprint(mask.data.shape)   # (H, W) class idsprint(mask.classes)      # sorted class ids present in the image

Weights download from Hugging Face on first use and are cached locally. LibreUNets-sem.pt is a conversion of the Cityscapes UNet-S5-D16 checkpoint from mmsegmentation: the same-padded S5-D16 graph with an FCN head, predicting the 19 Cityscapes classes. Prediction runs the whole frame on the 1024x2048 evaluation canvas.

Train

Use a semantic dataset with image/mask pairs. Training defaults to 160 epochs, batch 4 and amp=False, with a (512, 1024) crop and (1024, 2048) evaluation canvas. The loss includes an auxiliary head. Export is not supported.

Dataset setup describes the required training data.

Python
from libreyolo import LibreUNet # Random initialization: this trains from scratch.model = LibreUNet(size="s", device="cpu")# Replace with your semantic segmentation dataset YAML (image/mask pairs).model.train(data="path/to/your/semantic_dataset.yaml", pretrained=False, epochs=1, device="cpu", workers=0)

Validate

Python
from libreyolo import LibreYOLO # Or a U-Net checkpoint you trained with model.train().model = LibreYOLO("LibreUNets-sem.pt", device="cpu")# Replace with your semantic segmentation dataset YAML (image/mask pairs).metrics = model.val(data="path/to/your/semantic_dataset.yaml", workers=0)print(metrics)

Use the dataset format for this task. Validation explains the dataset requirements and returned metrics.

Checkpoints

FileWeights license
Semantic segmentation
LibreUNets-sem.ptapache-2.0

Every file above exists in the LibreYOLO org today and downloads on first use.

Licensing

Check the license on the Hugging Face repository of the specific weights you download. Every checkpoint in the LibreYOLO org carries one, and they are not always the same across a family. That repository is the authoritative source; the summary below describes what applied when this page was last verified.

This is a description of the licenses involved, not legal advice. If the answer matters commercially, read the licenses yourself and take your own counsel.

Original work
U-Net, U-Net authors
Upstream license
Apache-2.0
LibreYOLO code
MIT
Weights
Apache-2.0, republished at huggingface.co/LibreYOLO
Interpretation
Apache-2.0 is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy you redistribute, and it grants a patent license. LibreYOLO's port follows mmsegmentation's Apache-2.0 UNet-S5-D16 implementation with an FCN head, and LibreUNets-sem.pt is a conversion of mmsegmentation's Cityscapes checkpoint, which upstream releases under Apache-2.0.

Verified against LibreYOLO v1.6.0. Support tables, checkpoints and benchmark numbers on this page are generated from the released library and the published weights, not written by hand.