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.

bash
pip install libreyolo

Prediksi

Bobot diunduh dari Hugging Face saat pertama kali digunakan dan disimpan dalam cache lokal.

Python
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)
CLI
libreyolo predict model=LibreSegformerb0-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

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

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

Python (fine-tuning)
from libreyolo import LibreYOLO model = LibreYOLO("LibreSegformerb0-sem.pt")model.train(data="my-dataset.yaml", epochs=160, imgsz=512, batch=8)
CLI
libreyolo train model=LibreSegformerb0-sem.pt data=my-dataset.yaml \  epochs=160 imgsz=512 batch=8
Dari nol
from 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)
Multi-GPU
libreyolo train model=LibreSegformerb0-sem.pt data=my-dataset.yaml \  epochs=160 device=0,1 batch=16

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

Python
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"])
CLI
libreyolo val model=LibreSegformerb0-sem.pt data=my-dataset.yaml

Ekspor

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
semanticsemantic to ONNX: didukungsemantic to TorchScript: didukungsemantic to ExecuTorch: didukungsemantic to TensorRT: didukungsemantic to OpenVINO: didukungsemantic to Paddle: tidak didukungsemantic to MNN: tidak didukungsemantic to RKNN: tidak didukungsemantic to ncnn: tidak didukungsemantic to TFLite: tidak didukungsemantic to CoreML: tidak didukungsemantic 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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSegformerb0-sem.pt")model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True)
CLI
libreyolo export model=LibreSegformerb0-sem.pt format=onnx imgsz=512libreyolo export model=LibreSegformerb0-sem.pt format=tensorrt imgsz=512 half=True
Gunakan berkas hasil ekspor
from 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.

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

Diverifikasi dengan LibreYOLO v1.5.0. Tabel dukungan, checkpoint, dan angka benchmark di halaman ini dihasilkan dari library yang telah dirilis dan bobot yang dipublikasikan, bukan ditulis manual.