RomainTHD / SuperResolution_CNN

Super resolution using a CNN, based on the work of the DGtal team

Home Page:https://www.lama.univ-savoie.fr/mediawiki/index.php/VISI401_CMI_:_bibliographie_scientifique#Algorithmes_de_super-r.C3.A9solution_par_apprentissage

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Super-résolution via CNN

Prérequis

Tout d'abord, une carte graphique Nvidia (ni AMD, ni Intel intégrée) est vivement conseillée pour paralléliser le CNN. Il faudra alors installer CUDA. Pas de CUDA = des dizaines de fois plus lent.

À installer :

Pour générer l'image cible (via le .sh) :

  • GTVImageVect (C++ à compiler ou binaire Linux à télécharger)
  • ImageMagick (Disponible via sudo apt install imagemagick)
  • De manière générale, un Linux, un émulateur ou WSL, le noyau Linux intégré officiellement à Windows 10

Entrainement

Entrainement: train.py

Arguments:
  -h, --help                            Message d'aide
  -u, --upscaleFactor     ! REQUIS      Facteur de super-résolution
  --batchSize               16          Taille du batch d'entrainement
  --testBatchSize           10          Taille du batch de test
  --nbEpochs                50          Nombre de simulations max. 0 pour désactiver la limite
  --learningRate            0.01        Taux d'apprentissage
  --cpu                                 Utilise le CPU et non le GPU / CUDA
  --nbThreads               4           Nombre de threads pour le data loader
  --seed                                Seed utilisée pour l'aléatoire
  --noiseLimit              25          Peak signal-to-noise ratio (PSNR), détermine la précision du modèle en dB, 0 = pas de limite. PSNR élevé = modèle précis
  -q, --quiet                           Silencieux

Ce programme générera des fichiers "model_epoch_n.pth" correspondant au modèle à l'epoch n, dans un dossier saved_model_ut_bsbs_tbstbs_lrlr, où t correspond au facteur d'échelle, bs à la taille du batch d'entrainement, tbs la taille du batch de test et lr au taux d'apprentissage.

Les images low res doivent être situées dans un dossier "dataset/input", et les cibles high res dans un dossier "dataset/target", où chaque image de qualité différente a le même nom dans les 2 dossiers.

Si le programme est trop gourmand en RAM ou en VRAM, vous pouvez régler les options --batchSize et --testBatchSize.

Exemple :

python train.py --upscaleFactor 4 --nbEpochs 20


Super-résolution

Super-résolution: super_resolve.py

Arguments:
  -h, --help                            Message d'aide
  -i, --inputPath         ! REQUIS      Image d'entrée
  -m, --modelPath         ! REQUIS      Modèle .pth à utiliser
  -o, --outputPath          out.png     Image de sortie
      --cpu                             Utilise le CPU et non le GPU / CUDA
  -q, --quiet                           Silencieux

Exemple :

python super_resolve.py --inputPath pomme.png --modelPath model.pth --outputPath pomme_x4.png


Licence

GPLv3


Crédits

Inspiré de cet article
Code de base disponible ici
Dataset cible construit à partir de l'algorithme GTVimageVect
Sujet disponible ici


Romain THEODET, CMI INFO L2 USMB, 2019/2020

About

Super resolution using a CNN, based on the work of the DGtal team

https://www.lama.univ-savoie.fr/mediawiki/index.php/VISI401_CMI_:_bibliographie_scientifique#Algorithmes_de_super-r.C3.A9solution_par_apprentissage

License:GNU General Public License v3.0


Languages

Language:Python 97.6%Language:Shell 2.4%