Framework/Bibliothèque pour réseau de neurones

Agrandissement d'images Full HD

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour, ZDS ! ("enfin !" j'ai envie de dire)

Ça fait longtemps que j'étais pas passé quémander de l'aide et je crois même que c'est ma première fois sur ZDS, donc merci d'avance pour votre accueil :)

Sans plus tarder mon problème :

J'aimerais faire mumuse avec les réseaux de neurones et je me suis donc lancé un projet d'agrandissement d'image utilisant un réseau de neurone. Vu que j'aimerais multiplier par deux les longueurs d'une image Full HD (1920*1080), et donc son nombre de pixels par quatre j'ai du réfléchir un peu, parce qu'avec un réseau classique où tous les neurones sont interconnectés je me retrouvais avec… 1014 connections pour seulement une couche de neurone intermédiaire.

J'ai donc théorisé mon truc, le principe ressemble à ça :

(oui oui, j'ai de belles images à vous montrer ! :p)

Voici un exemple sur une image 4x4 qu'on veut obtenir en 8x8.

  • Premièrement on découpe notre image en plus petits carrés de 2x2 pixels, 9 dans notre cas. Le but ici étant d'utiliser ces zones sur notre image agrandie de manière à ce que l'image de sortie ressemble à celle de départ. (C'est surtout un test, je débute dans le domaine, je fais des expériences)
  • Deuxièmement on génère les nouveaux pixels de l'image à partir des pixels adjacents, (les flèches de l'image signifie qu'on utilisera les pixels de départs d'où provient la flèche pour générer le pixel où arrive la flèche)
  • Finalement on recombine nos zones 2x2 à leurs images agrandies et on refait un tour de génération avec les pixels adjacents au passage pour lisser le résultat.

J'explique très mal, alors voici le réseau résultant tel que je l'ai imaginé :

c'est pas beau ça ?

Avec ce système on descend à "seulement" 414 millions de connexions !

J'ai voulu m'essayer à CNTK mais j'arrive pas à trouver comment ne pas connecter tous mes neurones entre eux. Parce que mettre 0 dans la matrice des poids ne changerait pas le nombre de connexions et donc de calculs je crois :(

Bref

D'où mon problème : connaissez-vous une bonne librairie pour générer des réseaux de neurones, facile à prendre en main, me permettant de faire mon réseau et surtout qui utilise le GPU (parce que sinon je peux mourir d'ici que l'entrainement soit fini) ? Le langage n'est pas important !

Merci d'avance !

+0 -0

De ce que je connais, comme bibliothèques pour les réseaux de neurones, il y a :

  • Torch utilisable en Lua et utilisé par Facebook et Twitter
  • Caffe utilisable en Python (ou MATLAB)
  • TensorFlow crée par Google (utilisable en Python aussi mais j'ai un gros doute)

Je ne sais pas si elles sont vraiment facile à prendre en main (j'ai pas encore eu le temps de me lancer dedant), mais elles sont faites pour les réseaux de neurones et elles ont toutes un support GPU. Ce n'est bien sur pas une liste exaustive mais uniquement celles que je connais.

« One may say "the eternal mystery of the world is its comprehensibility." » — Albert Einstein, Physics and Reality

+0 -0

Au final, c'est pas tant la bibli qui joue mais ce que tu veux faire. CNTK est très bien pour débuter (notamment car facile à installer et le brainscript est assez accessible).

Sinon pour ton soucis, je comprends pas bien ce que tu chercher à faire, ni ce qu'il y a à apprendre) mais as tu regardé du côté des convolutions/deconvolutions? (dans ton cas, surtout Deconvolution et Unpooling, mais je ne sais pas si elles ont déjà été portées en brainscript, en tout cas elles existent dans le vieux format ndl).

Édité par epso

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte