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.
- Licences
- Code MIT, poids MIT. Usage commercial
Installer
NAFNet ne nécessite aucun extra facultatif. Tous ses imports figurent dans l'installation de base.
pip install libreyoloPrédire
Les poids sont téléchargés depuis Hugging Face à la première utilisation et mis en cache localement.
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")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.
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 # 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",)libreyolo train model=LibreNAFNetl-restore-sidd.pt data=my-dataset.yaml \ epochs=100 device=0,1 batch=32Avec 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.
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"])libreyolo val model=LibreNAFNetl-restore-sidd.pt data=my-dataset.yamlExporter
| Tâche | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| restore | restore to ONNX : pris en charge | restore to TorchScript : pris en charge | restore to ExecuTorch : pris en charge | restore to TensorRT : pris en charge | restore to OpenVINO : pris en charge | restore to Paddle : non pris en charge | restore to MNN : non pris en charge | restore to RKNN : non pris en charge | restore to ncnn : pris en charge | restore to TFLite : non pris en charge | restore to CoreML : non pris en charge | restore 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.
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 # 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.
| Fichier | Entrée (px) | Licence des poids |
|---|---|---|
| restore | ||
| LibreNAFNetl-restore-sidd.pt | mit | |
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.