NAFNet
NAFNet adalah jaringan konvolusional untuk restorasi gambar yang menghapus fungsi aktivasi nonlinear dari blok UNet biasa dan menggantinya dengan perkalian elemen demi elemen. LibreYOLO mendukungnya untuk satu task, restorasi, dengan checkpoint denoise gambar nyata yang dilatih pada SIDD.
- Task
- restore
- Ukuran
- s, l at 256 px
- Instalasi
pip install libreyolo- Tier dukungan
- Didukung, sejak v. Model pendukung yang dapat dilatih: CI dijaga tetap lulus, fitur ditambahkan saat ada kesempatan.
- Lisensi
- Kode MIT, bobot MIT. Penggunaan komersial
Instalasi
NAFNet tidak memerlukan extra opsional. Semua yang diimpornya 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 model = LibreYOLO("LibreNAFNetl-restore-sidd.pt")result = model("noisy.jpg", save=True) restored = result.restoredprint(restored.array.shape)libreyolo predict model=LibreNAFNetl-restore-sidd.pt source=noisy.jpg save=Truefrom libreyolo import LibreYOLO model = LibreYOLO("LibreNAFNetl-restore-sidd.pt")result = model.predict("noisy.jpg") result.restored.save("denoised.png")Objek Results yang dikembalikan memuat satu field untuk family ini, yaitu
restored, gambar RGB uint8 HWC padat pada kanvas asli. Tidak ada box untuk
diiterasi. save=True langsung menulis gambar hasil restorasi ke disk,
alih-alih menggambar anotasi di atas input. conf, iou, dan max_det
diterima demi paritas signature dengan semua family lain, tetapi tidak
berpengaruh karena restorasi tidak menghasilkan deteksi untuk difilter. Lihat
prediksi untuk sumber, streaming, dan penanganan hasil.
Varian
Dua lebar memakai arsitektur ini: s (lebar 32) dan l (lebar 64), keduanya
dibangun dengan patch pelatihan 256 px. Prediksi dan validasi berjalan pada
resolusi native gambar terlepas dari ukurannya, dengan padding hanya ke faktor
downsample jaringan. Saat ini hanya lebar l yang dipublikasikan, sebagai
checkpoint denoise gambar nyata yang dilatih pada SIDD.
Pelatihan
NAFNet melakukan fine-tuning pada pasangan gambar rusak/bersih milik Anda:
YAML dataset yang menunjuk ke folder gambar rusak inputs/<split>/ dan folder
target bersih targets/<split>/, yang dicocokkan berdasarkan stem nama berkas.
degradation dan dataset adalah string opsional yang direkam pada checkpoint
tersimpan untuk provenans. Keduanya tidak berperan dalam pelatihan.
from libreyolo import LibreYOLO model = LibreYOLO("LibreNAFNetl-restore-sidd.pt")model.train(data="my-dataset.yaml", epochs=100, imgsz=256, batch=16, lr0=1e-3)libreyolo train model=LibreNAFNetl-restore-sidd.pt data=my-dataset.yaml \ epochs=100 imgsz=256 batch=16 lr0=1e-3from libreyolo import LibreYOLO # degradation dan dataset direkam pada checkpoint yang disimpan. Keduanya# tidak mengubah apa yang dilatih.model = LibreYOLO("LibreNAFNetl-restore-sidd.pt")model.train( data="my-dataset.yaml", epochs=100, degradation="denoise", dataset="MyDataset",)libreyolo train model=LibreNAFNetl-restore-sidd.pt data=my-dataset.yaml \ epochs=100 device=0,1 batch=32Jika dibiarkan, trainer berjalan selama 100 epoch dengan AdamW pada lr0=1e-3,
batch 16, crop 256 px, dan early stopping setelah 50 epoch tanpa peningkatan
PSNR. Tidak ada jalur LoRA untuk family ini. lora=True memunculkan error,
bukan menjalankan fine-tuning, karena NAFNetTrainer tidak pernah mengaktifkan
fine-tuning adapter.
Selama pelatihan, jaringan berjalan dengan global-average pooling biasa. Windowed local pooling khusus inferensi NAFNet (Test-time Local Converter) dilepas sebelum epoch pertama dan dipasang kembali setelah pelatihan selesai, karena backpropagation melalui local pool ber-window tetap tidak akan cocok dengan cara checkpoint digunakan saat inferensi.
Lihat pelatihan untuk dataset, augmentasi, multi-GPU, dan logger.
Validasi
val() mengembalikan dictionary dengan metrics/PSNR dan metrics/SSIM, yang
dihitung dalam RGB pada seluruh kanvas valid. SSIM memakai window Gaussian 11x11
dengan sigma 1.5, sedangkan fitness untuk pemilihan checkpoint terbaik adalah
nilai PSNR. data menunjuk ke format dataset gambar berpasangan yang sama dengan
pelatihan.
from libreyolo import LibreYOLO model = LibreYOLO("LibreNAFNetl-restore-sidd.pt") # val() mengembalikan dict biasa, bukan objekmetrics = model.val(data="my-dataset.yaml") print(metrics["metrics/PSNR"])print(metrics["metrics/SSIM"])libreyolo val model=LibreNAFNetl-restore-sidd.pt data=my-dataset.yamlEkspor
| Task | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| restore | restore to ONNX: didukung | restore to TorchScript: didukung | restore to ExecuTorch: didukung | restore to TensorRT: didukung | restore to OpenVINO: didukung | restore to Paddle: tidak didukung | restore to MNN: tidak didukung | restore to RKNN: tidak didukung | restore to ncnn: didukung | restore to TFLite: tidak didukung | restore to CoreML: tidak didukung | restore to Core AI: didukung |
Artefak hasil ekspor dapat dimuat kembali melalui LibreYOLO() berdasarkan
akhiran berkasnya, sehingga berkas .onnx atau .engine berperilaku seperti
checkpoint dan mengembalikan Results yang sama, dengan restored memuat
gambar output. NAFNet diekspor pada resolusi spasial tetap. imgsz harus habis
dibagi faktor downsample jaringan (16 untuk kedua lebar arsitektur), dan hanya
dimensi batch yang dinamis saat dynamic=True. Tinggi dan lebar tetap pada
waktu ekspor.
from libreyolo import LibreYOLO model = LibreYOLO("LibreNAFNetl-restore-sidd.pt")model.export(format="onnx", imgsz=256)model.export(format="tensorrt", imgsz=256, half=True)libreyolo export model=LibreNAFNetl-restore-sidd.pt format=onnx imgsz=256libreyolo export model=LibreNAFNetl-restore-sidd.pt format=tensorrt imgsz=256 half=Truefrom libreyolo import LibreYOLO # Factory merutekan berdasarkan akhiran berkas, sehingga artefak hasil ekspor dimuat# seperti checkpoint lain dan mengembalikan objek Results yang sama.model = LibreYOLO("LibreNAFNetl-restore-sidd.onnx")result = model("noisy.jpg") result.restored.save("denoised.png")Checkpoint
Semua berkas bobot yang dipublikasikan untuk family ini.
| Berkas | Input (piksel) | Lisensi bobot |
|---|---|---|
| restore | ||
| LibreNAFNetl-restore-sidd.pt | mit | |
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
- NAFNet, Megvii
- Lisensi upstream
- MIT
- Sumber upstream
- github.com/megvii-research/NAFNet
- Kode LibreYOLO
- MIT
- Bobot
- MIT, dipublikasikan ulang di huggingface.co/LibreYOLO
- Interpretasi
- MIT is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep the copyright notice and license text with any copy you redistribute, and places no other obligation on your own application code. Part of the training pipeline is ported from BasicSR under Apache-2.0, which additionally grants a patent license. The published checkpoint is trained on the Smartphone Image Denoising Dataset (SIDD), itself MIT-licensed.
Sitasi
@article{chen2022simple,
title={Simple Baselines for Image Restoration},
author={Chen, Liangyu and Chu, Xiaojie and Zhang, Xiangyu and Sun, Jian},
journal={arXiv preprint arXiv:2204.04676},
year={2022}
}Disalin dari blok sitasi penulis di github.com/megvii-research/NAFNet#citations.