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.
Proyek upstream
NAFNet oleh Megvii, MIT. Makalah, sumber
Lisensi
Kode MIT, bobot MIT. Penggunaan komersial

Instalasi

NAFNet tidak memerlukan extra opsional. Semua yang diimpornya 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 model = LibreYOLO("LibreNAFNetl-restore-sidd.pt")result = model("noisy.jpg", save=True) restored = result.restoredprint(restored.array.shape)
CLI
libreyolo predict model=LibreNAFNetl-restore-sidd.pt source=noisy.jpg save=True
Simpan gambar hasil restorasi
from 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.

Python
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)
CLI
libreyolo train model=LibreNAFNetl-restore-sidd.pt data=my-dataset.yaml \  epochs=100 imgsz=256 batch=16 lr0=1e-3
Provenans checkpoint
from 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",)
Multi-GPU
libreyolo train model=LibreNAFNetl-restore-sidd.pt data=my-dataset.yaml \  epochs=100 device=0,1 batch=32

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

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

Ekspor

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

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

BerkasInput (piksel)Lisensi bobot
restore
LibreNAFNetl-restore-sidd.ptmit

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

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.