SegFormer
SegFormer adalah transformer segmentasi semantik yang memasangkan encoder Mix Transformer (MiT) hierarkis dengan decode head all-MLP ringan, sehingga tidak memerlukan decoder berat dan positional encoding tetap seperti transformer segmentasi terdahulu. LibreYOLO mendukungnya untuk satu task, yaitu segmentasi semantik, dalam enam ukuran.
- Task
- semantic
- Ukuran
- Instalasi
pip install libreyolo- Tier dukungan
- Didukung, sejak v. Model pendukung yang dapat dilatih: CI dijaga tetap lulus, fitur ditambahkan saat ada kesempatan.
- Proyek upstream
- SegFormer oleh NVIDIA, NVIDIA Source Code License (non-commercial, research or evaluation only). Makalah, sumber
- Lisensi
- Kode Apache-2.0, bobot NVIDIA Source Code License (non-commercial, research or evaluation only). Penggunaan komersial
Instalasi
SegFormer tidak memerlukan komponen tambahan opsional. Semua impornya tersedia dalam instalasi dasar.
pip install libreyoloPrediksi
Bobot diunduh dari Hugging Face saat pertama kali digunakan dan disimpan dalam cache lokal.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreSegformerb0-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape, mask.classes)libreyolo predict model=LibreSegformerb0-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Trueresult.semantic_mask menyimpan peta kelas padat: .data adalah tensor (H, W)
berisi id kelas pada ukuran gambar asli, sedangkan .classes mencantumkan id kelas yang
benar-benar ada. result.boxes adalah None karena tidak ada deteksi per instance.
conf dan iou diterima demi kesetaraan API tetapi tidak mengubah output: model
mengembalikan satu kelas per piksel, bukan deteksi per instance yang perlu difilter atau
dihilangkan duplikasinya. Lihat prediksi untuk sumber, streaming, dan
penanganan hasil.
Varian
Enam ukuran, b0 hingga b5, yang memperlebar dan memperdalam encoder Mix Transformer pada setiap tahap sambil mempertahankan desain decode head all-MLP yang sama.
| Berkas | Input (piksel) | Lisensi bobot |
|---|---|---|
| semantic | ||
| LibreSegformerb0-sem.pt | other | |
| LibreSegformerb1-sem.pt | other | |
| LibreSegformerb2-sem.pt | other | |
| LibreSegformerb3-sem.pt | other | |
| LibreSegformerb4-sem.pt | other | |
| LibreSegformerb5-sem.pt | other | |
Setiap berkas di atas saat ini tersedia di organisasi LibreYOLO dan diunduh saat pertama kali digunakan.
Pelatihan
Secara default, train() melakukan fine-tuning pada checkpoint yang dipublikasikan.
Sebagai gantinya, jangan berikan model_path ke LibreSegformer(...) agar model dibuat
dengan encoder dan head yang diinisialisasi secara acak serta dilatih dari nol. Ini adalah
satu-satunya jalur menuju bobot yang tidak memiliki pembatasan nonkomersial checkpoint
pretrained (lihat Lisensi).
from libreyolo import LibreYOLO model = LibreYOLO("LibreSegformerb0-sem.pt")model.train(data="my-dataset.yaml", epochs=160, imgsz=512, batch=8)libreyolo train model=LibreSegformerb0-sem.pt data=my-dataset.yaml \ epochs=160 imgsz=512 batch=8from libreyolo.models.segformer.model import LibreSegformer # Tanpa model_path: inisialisasi acak, tidak ada yang diunduh. Ini satu-satunya jalur# menuju bobot yang bebas dari ketentuan nonkomersial checkpoint pretrained.model = LibreSegformer(size="b0", nb_classes=150)model.train(data="my-dataset.yaml", epochs=160, imgsz=512, batch=8)libreyolo train model=LibreSegformerb0-sem.pt data=my-dataset.yaml \ epochs=160 device=0,1 batch=16Jika dibiarkan, pelatih mengikuti resep ADE20K dari makalah SegFormer: AdamW pada learning rate dasar backbone dengan decode head dilatih pada 10x laju tersebut, weight decay di semua bagian kecuali LayerNorm dan konvolusi posisi Mix-FFN, serta jadwal decay linear dengan warmup. Konvergensi untuk ukuran lebih besar, b3 hingga b5, belum divalidasi secara end-to-end.
Lihat pelatihan untuk dataset, augmentasi, multi-GPU, dan logger.
Validasi
val() mengembalikan dictionary dengan key metrics/: mIoU dan akurasi piksel,
yang diukur terhadap dataset apa pun dalam format yang digunakan untuk pelatihan.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSegformerb0-sem.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])libreyolo val model=LibreSegformerb0-sem.pt data=my-dataset.yamlEkspor
| Task | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic to ONNX: didukung | semantic to TorchScript: didukung | semantic to ExecuTorch: didukung | semantic to TensorRT: didukung | semantic to OpenVINO: didukung | semantic to Paddle: tidak didukung | semantic to MNN: tidak didukung | semantic to RKNN: tidak didukung | semantic to ncnn: tidak didukung | semantic to TFLite: tidak didukung | semantic to CoreML: tidak didukung | semantic to Core AI: tidak didukung |
Artefak hasil ekspor dimuat kembali melalui LibreYOLO() berdasarkan sufiks berkasnya,
sehingga berkas .onnx atau .engine berperilaku seperti checkpoint dan mengembalikan
Results yang sama. Ekspor mencantumkan argumen yang diterima setiap format.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSegformerb0-sem.pt")model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True)libreyolo export model=LibreSegformerb0-sem.pt format=onnx imgsz=512libreyolo export model=LibreSegformerb0-sem.pt format=tensorrt imgsz=512 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # Factory merutekan berdasarkan sufiks berkas, sehingga artefak hasil ekspor# dimuat seperti checkpoint lain dan mengembalikan objek Results yang sama.model = LibreYOLO("LibreSegformerb0-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)Checkpoint
Setiap berkas bobot yang dipublikasikan untuk family ini.
| Berkas | Input (piksel) | Lisensi bobot |
|---|---|---|
| semantic | ||
| LibreSegformerb0-sem.pt | other | |
| LibreSegformerb1-sem.pt | other | |
| LibreSegformerb2-sem.pt | other | |
| LibreSegformerb3-sem.pt | other | |
| LibreSegformerb4-sem.pt | other | |
| LibreSegformerb5-sem.pt | other | |
Setiap berkas di atas saat ini tersedia di organisasi LibreYOLO dan diunduh saat pertama kali digunakan.
Lisensi
Periksa lisensi di repositori Hugging Face untuk bobot tertentu yang diunduh. Setiap checkpoint di organisasi LibreYOLO memiliki lisensi, dan lisensinya tidak selalu sama dalam satu family. Repositori tersebut adalah sumber resmi. Ringkasan di bawah menjelaskan ketentuan yang berlaku saat halaman ini terakhir diverifikasi.
Ini adalah deskripsi lisensi yang terlibat, bukan nasihat hukum. Jika jawabannya penting secara komersial, baca sendiri lisensinya dan mintalah nasihat dari penasihat hukum Anda.
- Karya asli
- SegFormer, NVIDIA
- Lisensi upstream
- NVIDIA Source Code License (non-commercial, research or evaluation only)
- Sumber upstream
- github.com/NVlabs/SegFormer
- Kode LibreYOLO
- MIT
- Bobot
- NVIDIA Source Code License (non-commercial, research or evaluation only), dipublikasikan ulang di huggingface.co/LibreYOLO
- Interpretasi
- The pretrained ADE20K checkpoints LibreYOLO hosts for this family are converted from NVIDIA's official SegFormer release under the NVIDIA Source Code License. That license permits redistributing the weights and derivative works, provided the license text and attribution notices travel with them, but it limits USE to non-commercial research or evaluation, a restriction its Section 3.2 carries forward into every derivative and that cannot be relicensed away: these weights are NOT covered by LibreYOLO's normal permissive terms, and that limitation binds you, not just LibreYOLO. LibreYOLO's own SegFormer implementation is a separate Apache-2.0 port of Hugging Face Transformers' code, unrelated to NVIDIA's repository, so a model you train from scratch with LibreSegformer(...).train(...) carries none of this restriction.
Encoder dan decode head LibreSegformer adalah port PyTorch dari implementasi SegFormer Apache-2.0 milik Hugging Face Transformers, bukan dari NVlabs/SegFormer: repositori asli NVIDIA tidak pernah dibaca atau disalin dan hanya dicantumkan di sini untuk atribusi kepada penulis makalah. Hanya checkpoint pretrained di atas yang membawa pembatasan nonkomersial NVIDIA; arsitektur dan kode LibreYOLO sendiri tetap berlisensi MIT.
Sitasi
@inproceedings{xie2021segformer,
title={SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers},
author={Xie, Enze and Wang, Wenhai and Yu, Zhiding and Anandkumar, Anima and Alvarez, Jose M and Luo, Ping},
booktitle={Neural Information Processing Systems (NeurIPS)},
year={2021}
}Disalin dari blok sitasi penulis di github.com/NVlabs/SegFormer#citation.