NAFNet

NAFNet est un réseau convolutionnel de restauration d'images qui retire les fonctions d'activation non linéaires d'un bloc UNet classique et les remplace par une multiplication élément par élément. LibreYOLO le prend en charge pour une tâche, la restauration, avec un checkpoint publié de débruitage d'images réelles entraîné sur SIDD.

Tâches
restore
Tailles
s, l at 256 px
Installer
pip install libreyolo
Niveau de support
Pris en charge, depuis v. Modèles entraînables complémentaires : maintenus au vert dans la CI, avec des fonctionnalités ajoutées selon les occasions.
Origine
NAFNet par Megvii, MIT. Article, source
Licences
Code MIT, poids MIT. Usage commercial

Installer

NAFNet ne nécessite aucun extra facultatif. Tous ses imports figurent dans l'installation de base.

bash
pip install libreyolo

Prédire

Les poids sont téléchargés depuis Hugging Face à la première utilisation et mis en cache localement.

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
Enregistrer l'image restaurée
from libreyolo import LibreYOLO model = LibreYOLO("LibreNAFNetl-restore-sidd.pt")result = model.predict("noisy.jpg") result.restored.save("denoised.png")

L'objet Results renvoyé comporte un champ pour cette famille, restored, une image RGB dense HWC uint8 sur le canevas d'origine ; aucune boîte ne doit être parcourue. save=True écrit directement cette image restaurée sur le disque au lieu de tracer une annotation sur l'entrée. conf, iou et max_det sont acceptés pour maintenir la même signature que toutes les autres familles, mais n'ont aucun effet puisque la restauration ne produit aucune détection à filtrer. Consultez la prédiction pour les sources, le streaming et le traitement des résultats.

Variantes

Deux largeurs partagent cette architecture : s (largeur 32) et l (largeur 64), toutes deux construites autour d'un patch d'entraînement de 256 px. La prédiction et la validation s'exécutent à la résolution native de l'image quelle que soit la taille, avec un remplissage limité au facteur de sous-échantillonnage du réseau. Seule la largeur l est actuellement publiée, sous la forme d'un checkpoint de débruitage d'images réelles entraîné sur SIDD.

Entraîner

NAFNet effectue le fine-tuning sur vos propres paires d'images dégradées et nettes : un YAML de dataset pointe vers un dossier inputs/<split>/ d'images dégradées et un dossier targets/<split>/ de cibles nettes, appariées par le radical du nom de fichier. degradation et dataset sont des chaînes facultatives enregistrées dans le checkpoint sauvegardé à des fins de provenance ; elles ne participent pas à l'entraînement.

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
Provenance du checkpoint
from libreyolo import LibreYOLO # La dégradation et le dataset sont inscrits dans le checkpoint enregistré ;# ils ne modifient pas ce qui est entraîné.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

Avec les réglages par défaut, l'entraîneur exécute 100 époques avec AdamW à lr0=1e-3, un batch de 16, des recadrages de 256 px et un early stopping après 50 époques sans amélioration du PSNR. Cette famille ne propose aucun chemin LoRA : lora=True lève une erreur au lieu de s'exécuter, car NAFNetTrainer n'active jamais le fine-tuning par adaptateur.

Pendant l'entraînement, le réseau s'exécute avec un simple pooling moyen global. Le pooling local fenêtré réservé à l'inférence de NAFNet (Test-time Local Converter) est détaché avant la première époque, puis réattaché une fois l'entraînement terminé, car la rétropropagation à travers un pooling local à fenêtre fixe ne correspondrait pas à l'utilisation du checkpoint lors de l'inférence.

Consultez l'entraînement pour les datasets, l'augmentation, le multi-GPU et les loggers.

Valider

val() renvoie un dictionnaire avec metrics/PSNR et metrics/SSIM, calculés en RGB sur l'ensemble du canevas valide : SSIM utilise une fenêtre gaussienne 11x11 avec un sigma de 1.5, et la valeur fitness employée pour sélectionner le meilleur checkpoint est le PSNR. data pointe vers le même format de dataset d'images appariées que celui utilisé pour l'entraînement.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreNAFNetl-restore-sidd.pt") # val() renvoie un simple dict, pas un objetmetrics = 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

Exporter

TâcheONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
restorerestore to ONNX : pris en chargerestore to TorchScript : pris en chargerestore to ExecuTorch : pris en chargerestore to TensorRT : pris en chargerestore to OpenVINO : pris en chargerestore to Paddle : non pris en chargerestore to MNN : non pris en chargerestore to RKNN : non pris en chargerestore to ncnn : pris en chargerestore to TFLite : non pris en chargerestore to CoreML : non pris en chargerestore to Core AI : pris en charge

Un artefact exporté se recharge par LibreYOLO() à partir de son suffixe de fichier. Un fichier .onnx ou .engine se comporte donc comme un checkpoint et renvoie le même objet Results, où restored contient l'image de sortie. NAFNet s'exporte à une résolution spatiale fixe : imgsz doit être divisible par le facteur de sous-échantillonnage du réseau (16 pour les deux largeurs de l'architecture), et seule la dimension de batch est dynamique lorsque dynamic=True ; la hauteur et la largeur sont fixées au moment de l'export.

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
Utiliser le fichier exporté
from libreyolo import LibreYOLO # La factory utilise le suffixe du fichier : un artefact exporté se charge# comme tout checkpoint et renvoie le même objet Results.model = LibreYOLO("LibreNAFNetl-restore-sidd.onnx")result = model("noisy.jpg") result.restored.save("denoised.png")

Checkpoints

Tous les fichiers de poids publiés pour cette famille.

FichierEntrée (px)Licence des poids
restore
LibreNAFNetl-restore-sidd.ptmit

Tous les fichiers ci-dessus sont actuellement disponibles dans l<link>organisation LibreYOLO</link> et sont téléchargés à la première utilisation.

Licence

Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.

Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.

Travail d'origine
NAFNet, Megvii
Licence du projet d'origine
MIT
Source du projet d'origine
github.com/megvii-research/NAFNet
Code de LibreYOLO
MIT
Poids
MIT, republiés sur huggingface.co/LibreYOLO
Interprétation
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.

Citation

@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}
}

Copié depuis le bloc de citation des auteurs sur github.com/megvii-research/NAFNet#citations.

Vérifié avec LibreYOLO v1.5.0. Les tableaux de support, les checkpoints et les chiffres de benchmark de cette page sont générés à partir de la bibliothèque publiée et des poids publiés, et non rédigés à la main.