Nebulium

Super-résolution en "apprentissage profond" : Essais sur Mars

Messages recommandés

Il y a 2 heures, polo0258 a dit :

voici  trois saturnes

 

Merci Polo :)

 

Je suis en train de récupérer tes 3 images  et WP 267 portable pour faire une tentative "Ours3" avant d'aller voir le site "Adler" que vient de m'indiquer"ms"

 

1956x1464, Drizzle.

C'est AS3 qui t'introduit le "drizzle" ?

Et de ton expérience, c'est mieux d'utiliser le "drizzle" plutôt que le format "natif" ? Ça empile plus finement ?

Pour mes manips, j'aimerais un minimum de traitement depuis les pixels CCD

 

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est un essai que j"ai fait en drizzle 1.5  sur les trois derniers films de 20000 images !

polo

Partager ce message


Lien à poster
Partager sur d’autres sites

L' exécution de l'ours3 sous Windows/ Python 2 réclame Tenserflow :

mais : 

 

Pip installation on Windows

TensorFlow supports only 64-bit Python 3.5 on Windows

 

Je laisse  donc tomber cette piste tant que ces Chinois-là n'auront pas actualisé leur soft !

Après Adler, j'irai faire un tour chez les autres. y compris les vidéastes  dont un autre montreur d'ours comme cestui-là :)

 

Je viens de trouver un frère au  DCSCN, le  DRCN.

Il est récursif, beaucoup plus long à entraîner. Il faudrait que j'arrive à cranter TenserFlow sur ma CUDA.

 

Un rapide essai en utilisant le modèle standard :   python test.py --file yann_mars_256.png

 

1 2 3

4 5

 

1 = original

2 = DRCN  avec modèle standard

3 = 2 boosté vigoureusement en FFT

4 = DCSCN avec modèle personnalisé planètes

5 = DCSCN avec modèle standard

 

Presse-papier01.png.10e3e031179fd3babf40c4acc96ba411.png

 

Je pencherais pour le DRCN ...

 

 

Modifié par Nebulium

Partager ce message


Lien à poster
Partager sur d’autres sites

Sur une image c'est difficile de faire quelque chose :

 

mars_yann.png.9530ef6270f636a945204381e24fa18d.png

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 5 heures, ms a dit :

Sur une image c'est difficile de faire quelque chose

 

Oui, je vais m'attaquer aux sites  video en SR.

Un dernier essai sur  la Saturne empilée depuis le film  de 3000 images prétraité au WebDav, DRCN, modèle généraliste recalculé (basé par défaut  sur "set5"  dont on pourrait remplacer le contenu par celui de "mydataset")

# training with simple model (will be good without GPU)
python main.py —-end_lr 1e-4 —-feature_num 32 -—inference_depth 5


# puis :
python test.py  —-feature_num 32 -—inference_depth 5 --file saturne_polo_filmWebDav.png

Presse-papier01.png.fe5ae415714b65f201821298a532f9b7.png

 

1 2 3

Comme pour Mars plus haut.

 

Il me semble qu'avec ces diverses  méthodes aux résultats très proches on est à l'état de l'art pour la SR à partir d'une image unique..

 

Donc maintenant il faut passer  aux bidouilles vidéo.

 

Auparavant, je vais essayer  de coupler le "Tenserflow-GPU" avec ma "CUDA", j'ai installé finalement   :

- cuda_8.0.61_win10.exe

- cudnn-8.0-windows10-x64-v6.0.zip,  (DLL "cudnn64_5.dll" )

Modifié par Nebulium

Partager ce message


Lien à poster
Partager sur d’autres sites

Hors réseaux de neurones (TensorFlow et similaire), il faut pouvoir traiter par les algorithmes traditionnels :

- le bruit,

- le flou,

- le vignetage,

- la super-résolution.

Il me manquait le dé-vignetage dans ma panoplie hors c'est fait depuis peu.

L'autre point important c'est la vitesse, en optimisant les algorithmes, il devient possible de gagner un facteur 2 c'est à dire la différence de puissance existant entre une carte graphique GTX 1050 Ti (9694) et une carte graphique GT 1030 (4754), du coup la consommation est divisée par 2. J'attends maintenant avec impatience le processeur AMD Ryzen 5 2400G (5042) pour tester un boîtier de moins de 2 litres capable d'embarquer EVA pour l'espace. ^_^

 

image.png.9321be6fc5e755e756df56293029169c.png

 

A moins de 170€ le processeur Ryzen 5 2400G qui incorpore le processeur graphique RX Vega 11 cela permet d'envisager un calculateur sous Linux à moins de 500€. ^_^

 

Enfin, on peut aussi se poser la question de savoir si dans un patch de 8x8 pixels, on peut détecter à la fois le bruit et le flou, ce qui permettrait de réduire encore les temps de calcul.

Modifié par ms

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello MS, après un tour rapide sur ton site je ne trouve pas de réponse à ma question.

Est-ce que EVA aura une fonction "stacking" en temps réel pour le CP (comme l'eVscope) ou se contentera-t-il de corriger la turbu (ce que ne fait pas l'eVscope, enfin à ma connaissance)?
Merci,

Amaury

Modifié par FiatLux

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 2 heures, ms a dit :

EVA pour l'espace

 

Ce serait du gaspillage, il n' y a pas de turbu là-bas !

Partager ce message


Lien à poster
Partager sur d’autres sites
Citation

Est-ce que EVA aura une fonction "stacking" en temps réel pour le CP (comme l'eVscope) ou se contentera-t-il de corriger la turbu (ce que ne fait pas l'eVscope, enfin à ma connaissance)?

Pour le ciel profond, il manquait la détection et le traitement du vignetage (devignetting) c'est maintenant chose faite.

Le ciel profond utilise un recalage non-rigide des patchs, la correction du bruit hybride, la fusion de zones et éventuellement la correction du vignetage. 

Ce que je n'ai pas vu avec l'eVscope c'est la capacité de fusionner les zones comme le fait par exemple notre cerveau en observation visuelle (le cœur des galaxies ou des nébuleuses ne doit pas être cramé).

Compte tenu des nouveaux processeurs (Ryzen 5 2400G en particulier) le coût du calculateur va nettement chuter, le volume et la consommation vont aussi se réduire de moitié. Il devient alors possible de construire pour le coût d'un eVscope (ou similaire) une configuration automatisée bien plus puissante et évolutive. ^_^

 

J'aime bien cet exemple qui résume à la fois le planétaire (la planète) et le ciel profond (les 3 satellites en arrière plan) :

sat_polo_512.png.fadf1328fc7aaaafaf078fcd165f8fc0.png

la fusion de zones permet d'obtenir des objets qui ne sont pas au même niveau de luminosité et de contraste à partir de rafales d'images brutes (ici au bout de 3s).

 

Citation

Ce serait du gaspillage, il n' y a pas de turbu là-bas !

Oui mais EVA a bien le droit de s'envoyer en l'air, non ? ^_^

Modifié par ms
  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 09/02/2018 à 14:28, ms a dit :

le droit de s'envoyer en l'air, non ?

 

Oh oui ,  bien sûr,  j'en suis, je vais  illico allumer mes boosters !

C'est laquelle:x

 

Pour en revenir à nos affaires, voici les trois empilées (en drizzle 1.5x) de Polo :

 

Sat_224936.png.1381647cf99e2c9e19815735962f52ea.png

Sat_225512.png.f097b2ac5c58a31609ce8485d90fef0b.png

Sat_230007.png.c8cd4314f9e7b90f55a7cc99a390305a.png

 

L'objectif  :  N'en tirer qu'une image, avec  la meilleure résolution possible !

 

Sûr que Saturne n'est pas la référence pour travailler les détails, mais on fait avec ce que l'on a pour l'instant.

Mais les bons films sur la Jupiter nouvelle ne sauraient  tarder.

Merci d'avance à ceux qui voudraient coopérer  :)

Modifié par Nebulium

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello :)

 

L'obstination et la patience ont fini par payer :

J'arrive enfin à faire tourner  sur mon portable de milieu de gamme WinPython3  et TensorFlow sous Win 10 avec la GPU de la carte graphique Nvidia GeForce 940MX.

Certes,  il n'a pas la puissance de calcul de la config EVA indiquée par "ms'" mais je ne vise pas le temps réel !

Cela  n'a pas été sans mal à cause des  incompatibilités entre les multiples versions  plus ou moins matures de tous les logiciels concernés, plus quelques (rares) erreurs dans les fichiers PY proposés.

 

Je reprends donc des essais plus méthodiques  d'abord pour le traitement d'une image unique avec les pistes suivantes :

1. DCSCN (Fast and Accurate Image Super Resolution by Deep CNN with Skip Connection and Network in Network). Résumé.

2. DRCN (Deeply-Recursive Convolutional Network for Image Super-Resolution). Résumé.

3. DCGAN (Deep Convolutional Generative Adversarial Networks).

4. Éventuellement (car la doc en est légère)  LPDR  (Learned Primal-Dual Reconstruction). Résumé.

 

Autres propositions ?

 

et ensuite avec les techniques adaptées à la vidéo à partir de plusieurs images, pour l'instant, je ne tiens qu'une seule piste, écrite en Python2, il me faudra donc auparavant mettre au point l'utilisation de "2to3" :

 

 SPMC-VSR  (detail-revealing Deep Video Super-resolution).  Résumé.

 

Autres propositions ?

 

En ce moment, ma bécane mouline des modèles DCSCN basés sur les images HST, et c'est moi l'apprenti ! ;) 

 

Voici un tout premier résultat en taille d'acquisition obtenu en empilant avec AS3 (que je maîtrise très peu, faute de pratique) les 3 images de Saturne par Polo traitées en DCSCN  (avec le dataset HST_L) puis FFT :

 

sat_as_lapl2_ap3267_2._ia33.png.4116fbde5501614cc38421afa3847655.png

 

 

et avec une réduction d'une HST :

 

Presse-papier01.png.d38a0d3f5fe6c80c2ac82527b047fd37.png

 

 

 

après  une trop rapide (ce n'est pas l'objet ici) révision en balance de couleurs et gamma, que je reprendrai plus tard.

 

Voici d'ailleurs deux variantes HST, en réduction :

 

Presse-papier01.png.7dd24612de4c3d9e1877c21cb4d137fa.png

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

Je termine cette phase de premiers balbutiements en m'adressant à ceux qui voudraient jouer aussi :

On peut utiliser Python (comme d'ailleurs Julia, la copine à "ms" ) pour les applications ci-dessus sans aucune connaissance en programmation.

Le cas échéant,, je proposerai un petit tuto pour que chacun puisse jouer avec ses propres images.

 

PS à l'attention de "ms", s'il (re)passe par ici :

 

 

dcscn_L10_F128to32_G1.20_NIN_A64_BI_D0.80_prelu_mydataset_L_0.png.bca8745ca7652e89fc099a96314d44cf.png

 

Ce graphe est le résultat de la construction d'un 1er modèle utilisant les versions "large" du HST

Comment l’interpréter ?

 

Je pense que la courbe bleue concerne l'application du modèle à chaque itération (il y en a eu 55) aux images HST (mydataset_L) et la rouge au dataset "set5" de 5 images classiques fournie  dans la distribution.

Il semble qu'une dizaine d'itérations suffirait.

 

 

 

Modifié par Nebulium

Partager ce message


Lien à poster
Partager sur d’autres sites

Je dirais plutôt une vingtaine. Pas facile de monter en décibels uniquement par une approche IA comme dans la vidéo ci-dessous faite avec SPMC-VSR :

city.gif.8c22d4fabdd10ca4a931f84236f74f8e.gif

 

C'est pas mal, surtout en partant de là :

city.gif.4d43199b4d0082c4a2c12b36b6a9b4e9.gif

 

Mais avec EVA je traite le débruitage, le défloutage et le defogging avant de faire la super résolution ce qui permet d'avoir une image beaucoup plus nette.

 

Modifié par ms

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 4 heures, ms a dit :

avec EVA  Woaaaawwwv!  je traite

 

EVA , l' Arlésienne ?

 

Hello ms

 

Trêve de plaisanterie (méchante ! ^_^), voici une autre façon de voir ton exemple de SPMC-VSR :

 

Presse-papier01.png.bde321a31fe7d8db3b2a9afc934cd6e3.png

 

Copie d'écran des GIF, il faut oser !B|

Image de gauche en 150%, de droite en 38.5% en réglage d'affichage IView.

 

Certes, on court après les micropouièmes, ça vaut la descente vers le zéro absolu :D:D:D

Quand j'aurai (provisoirement) conclu en DCSCN avec les 3 Saturne de Polo (j'ai trouvé une autre HST pour le dataset, les mauvaises langues vont dire que je l'ai clonée dans les Polo's :P), je tenterai le SPCM-VSR.

Pour me faire gagner du temps, est-ce qu'avec ton Linux tu pourrais me traduire les .py de la distri de 2 en 3 ? 

Et au juste, les fichiers .pb, c'est quoi ?

 

Merci  :)

 

PS : les vidéos de démo de ce site sont plutôt crades !  Il me semble que tu en connais un meilleur ?

 

Presse-papier01.png.ecdae161653af13e43eb75c43bc5af16.png

 

Modifié par Nebulium

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour passer de Python 2 à Python 3 :

a) remplacer tous les "print" par des "print(...)" les parenthèses

b) remplacer tous les "xrange" par des "range"

 

Il y a aussi l'utilitaire "2to3" qui permet de faire la conversion.

 

Pour la vidéo ci-dessus, je ne l'ai pas encore traitée avec EVA parce que le defoggin est en cours mais si tu veux voir ce que donne EVA pour le traitement d'autres problèmes inverses (vignetage, flou de mouvement, flou astro, ...), il y a ce lien (voir les PSNR dingues) :

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 6 heures, ms a dit :

Pour la vidéo ci-dessus

 

Où l'as-tu récupérée ?

 

La route est encore longue ! 

Pas sûr que le modèle planétaire personnalisé soit plus performant que le généraliste proposé sur le site  !

 

3sathc8_hst.png.1602272d414d3c24e6433a6ad9a0d693.png

Modifié par Nebulium

Partager ce message


Lien à poster
Partager sur d’autres sites
Citation

Pour me faire gagner du temps, est-ce qu'avec ton Linux tu pourrais me traduire les .py de la distri de 2 en 3 ? 

Tu vas dans le répertoire où les .py sont installés puis tu tapes :

$ 2to3 -w .

et tous les fichiers .py sont convertis (même dans les sous-répertoire).

Le hic c'est qu'il y a un bug dans son code que je corrigerai plus tard.

Partager ce message


Lien à poster
Partager sur d’autres sites

 

Pour l'instant, je suis assez déçu des résultats sur une seule image DCSCN, je suis donc passé sur le SPCM-VSR.

 

Il y a 6 heures, ms a dit :

tous les fichiers .py sont convertis (même dans les sous-répertoire).

 

Merci, la manip est super , mais sous Windows, j'ai dû adapter ainsi :

Créer   un fichier "2to3.bat"  contenant  (à adapter selon le chemin d'installation personnel) :
 

python "C:\DeepLearning\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\Tools\scripts\2to3.py" %*


le mettre dans  : C:\DeepLearning\WinPython-64bit-3.6.3.0Qt5\scripts\

 

Ensuite, si le  dossier dézippé "SPMC_VideoSR-master" est installé ainsi :   C:\DeepLearning\SPMC\SPMC_VideoSR-master

dans la fenêtre de commande de travail habituelle  ouverte par "WinPython Command Prompt.exe", coller :

cd C:\DeepLearning\SPMC
2to3 -w SPMC_VideoSR-master

Les trois fichiers .py sont bien traduits (avec sauvegarde)

 

Mais ensuite ça se gâte et là je suis paumé  (bug ?)

cd C:\DeepLearning\SPMC\SPMC_VideoSR-master
python main_videosr_deploy_2x3f.py


C:\DeepLearning\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
'nvidia-smi' n’est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
Traceback (most recent call last):
  File "C:\DeepLearning\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site-packages\numpy\core\fromnumeric.py", line 52, in _wrapfunc
    return getattr(obj, method)(*args, **kwds)
AttributeError: 'list' object has no attribute 'argmax'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main_videosr_deploy_2x3f.py", line 18, in <module>
    os.environ["CUDA_VISIBLE_DEVICES"]=str(np.argmax( [int(x.split()[2]) for x in subprocess.Popen("nvidia-smi -q -d Memory | grep -A4 GPU | grep Free", shell=True, stdout=subprocess.PIPE).stdout.readlines()]))
  File "C:\DeepLearning\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site-packages\numpy\core\fromnumeric.py", line 1004, in argmax
    return _wrapfunc(a, 'argmax', axis=axis, out=out)
  File "C:\DeepLearning\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site-packages\numpy\core\fromnumeric.py", line 62, in _wrapfunc
    return _wrapit(obj, method, *args, **kwds)
  File "C:\DeepLearning\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site-packages\numpy\core\fromnumeric.py", line 42, in _wrapit
    result = getattr(asarray(obj), method)(*args, **kwds)
ValueError: attempt to get argmax of an empty sequence

C:\DeepLearning\SPMC\SPMC_VideoSR-master>

Pourtant, TensorFlow et ma Nvidia  fonctionnent bien en GPU dans le DCSCN , après avoir installé le "numpy+mkl" plutôt que le "numpy " seul (à cause d'une histoire de "blas"...)

 pip install numpy-1.14.0+mkl-cp36-cp36m-win_amd64.whl

Aurais-tu une suggestion ?

 

Merci :) 

 

PS : J'ai bien trouvé sur ce site les images de la vidéo en séquence  PNG pour la source et vidéo MP4 pour le résultat.

Reste à faire tourner ce bazar avec nos images astro.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

 

 

calendar.gif.f39eddffdceeb218e04f36db1c3a033a.gif

 

Faire de la super résolution x4 en vidéo sur la base de 3 images flous pour 1 image nette. ^_^

Modifié par ms

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce Monsieur Xin-Tao est un pince sans-rire :

 

 

### Testing
It would be very easy to understand the `test()` function and test on your own data.

 

Il écrit ses  *.py en Python 2.

En ligne 5 de "main_videosr_deploy_4x3f.py" on trouve    "import tensorflow as tf"

Or le site TensorFlow dit : "TensorFlow supports Python 3.5.x and 3.6.x on Windows"

Par conséquent, iInutile de croire que son truc va marcher avec Python 2.x, j'ai quand même essayé :

C:\DeepLearning\SPMC2>pip install tensorflow
Downloading/unpacking tensorflow
  Could not find any downloads that satisfy the requirement tensorflow
Cleaning up...
No distributions at all found for tensorflow
Storing debug log for failure in C:\DeepLearning\WinPython-64bit-2.7.6.4\settings\pip\pip.log

Le "pip.log" est éloquent !

Et je n'ai pas envie de casser mon TensotFlow-GPU laborieusement installé avec  WP 3.6 et ma Nvidia !

Donc c'est râpé pour les essais astro, sauf à dégripper le plantage cité dans mon message précédent.

Je vais essayer de trouver un site VSR plus coopératif, et en attendant, je vais un peu jouer avec les images test de "City" en faisant quelques mesures.

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello :) 

 

Voici un comparatif plus soigné :

De g. à d.   1  2  3  4 

1 L'original.

2. Agrandissement 4x  en SPMC-VCR, avec 5 images. Extraction de la vidéo MP4, le médiainfo affiche un débit serré mais décent.

3. Réduction  en 50%  en "Bicubic"  de (2).

4. Agrandissement en 2x  "Bicubic" de (1).

 

city_4x_2x.png.26cd72a17a6407a3fbeab44e64733ce3.png

 

La différence entre "Bicubic"  et "Lanczos 3" est imperceptible.

Je tiens à disposition d'éventuels intéressés des jeux de courbes FFT.

 

Pour moi, l'affaire est sans équivoque et j'attends impatiemment l'Arlésienne de "ms" ;) 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

En partant de la vidéo de 31 images 177x144 : ^_^

 

La première image x2 :

city_00.png.76ff1d3dbd40a4beecbb6bbc5de0fe60.png

city_31.png.97bb352f6c5138882b9c1a05c48498b9.png

Modifié par ms

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour ms :) 

 

Ouais, pas très claire, ton affaire, sur la forme ::/

Tout d'abord, avec  le fofo qui autorise le redimensionnement des images par le navigateur en géométrie variable selon les tailles   de l'image et de sa  fenêtre   (et heureusement  encore que j'aie pu trouver l'astuce de paramétrage  de Chrome pour conserver les couleurs exactes), il faut absolument télécharger les images pour travailler dessus. Finies les copies d'écran de l'ancien fofo !

Je me suis assuré que les publications de mes copies d''écran des fenêtres FitsWork une fois téléchargés sont en tous points conformes.

Ensuite, tes légendes sont plutôt du genre monacales, il faut se creuser un peu le ciboulot pour essayer de comprendre.

Alors voici ce que j'ai compris, ci -dessous tes deux dernières images  haute et basse  après téléchargements sont  en 1 et 2 respectivement et en 3 j'ai remis ma réduction par 2 de l'Ours 4x (image 20 du MP4, en 704x576, 24 de l'input en 177x144) :

 

Presse-papier01.png.23463bba6abe79e5351720f8a4fb07bf.png

 

Pour la 1 je ne sais pas (original x 2 bicubique ou similaire ?) mais je suppose que la 2 est ton résultat EVA.

Il y a déjà visiblement un problème d'échelle exacte pour  la  2

J'ai quand même tiré le portrait des FFT de la 2 en blanc et de la 3 en jaune.

Yorépafoto  si les échelles étaient identiques !

Alors, si tu veux bien revoir ta copie (pas celle d'écran !) avec la règle à pixels ... :) 

PS et légender ;) :

Modifié par Nebulium

Partager ce message


Lien à poster
Partager sur d’autres sites

L'image du bas c'est le résultat obtenu avec une rafale de 31 images dont l'image du haut est la première.

L'appareil photo est tenu à la main et il balaye légèrement le champ, pendant ce temps EVA recale les 30 images sur la première (flot optique avec déplacement important).

C'est comme si tu veux faire une photo avec un dobson sans entraînement, il suffit de maintenir plus ou moins l'image au centre et de travailler entre 1/100s et 10s suivant l'objet.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

OK, je comprend que dans ces conditions  l'image finale soit en partie recadrée, mais pourquoi  avoir modifié son échelle  en x 2 +qque chose ?

Modifié par Nebulium

Partager ce message


Lien à poster
Partager sur d’autres sites

Parce que l'algorithme de flot optique parcourt les déplacements de l'image.

Modifié par ms

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant