La source de PaintsChainer est ouverte au public sur http://qiita.com/taizan/items/7119e16064cc11500f32, mais il existe de nombreux articles et blogs sur lesquels j'ai essayé de déplacer PaintsChainer en utilisant un modèle formé, mais j'ai appris par moi-même. Je n'ai trouvé personne qui ait essayé de le faire, alors j'ai essayé.
Addendum 20170404: Le calcul de la facture d'électricité a été surévalué d'un chiffre. .. Ce n'était pas si cher. ..
Tout d'abord, vous devez préparer les données d'entraînement. Il est difficile de préparer un grand nombre d'images, et il ne peut pas être aidé de le faire avec le même Pixiv que l'article original, donc ici, [certaine animation](https://ja.wikipedia.org/wiki/%E6%B6% BC% E5% AE% AE% E3% 83% 8F% E3% 83% AB% E3% 83% 92% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA) J'ai essayé d'utiliser la vidéo de. La vidéo MP4 que j'avais est convertie en une image plein cadre. Pour l'instant, j'ai visualisé les épisodes 1 à 6 du travail initial. En particulier, tout est imagé quelle que soit la scène d'ouverture / de fin. Il y a 172 729 images au total.
Utilisez ffmpeg pour l'imagerie. Les images générées ont été placées dans cgi-bin / paint_x2_unet / images / original dans le répertoire où PaintChainer a été extrait.
$ cd cgi-bin/paint_x2_unet
$ mkdir -p images/original
$ ffmpeg -i movies/movie_01.mp4 -f image2 images/original/movie_01_%d.jpg
Je vais faire cela pendant 6 épisodes. Veuillez mettre toute l'histoire dans images / original / afin que le nom du fichier ne soit pas couvert.
PaintChainer nécessite une image 128x128 et une image 512x512. J'ai écrit un script pour redimensionner correctement.
128x128 https://github.com/ikeyasu/PaintsChainer/blob/ikeyasu_mod/cgi-bin/paint_x2_unet/tools/resize.py
512x512 https://github.com/ikeyasu/PaintsChainer/blob/ikeyasu_mod/cgi-bin/paint_x2_unet/tools/resizex2.py
Aussi, pour le dessin au trait, je me suis référé au blog de k3nt0.
https://github.com/ikeyasu/PaintsChainer/blob/ikeyasu_mod/cgi-bin/paint_x2_unet/tools/image2line.py
J'exécute ce qui précède sur l'image que je viens d'extraire, mais cela prend beaucoup de temps. Par conséquent, parallélisez en utilisant Gnu parallel.
J'ai écrit le script suivant.
cgi-bin/paint_x2_unet/run.sh:
ls -v1 ../images/original/ | parallel -j 8 'echo {}; python resize.py -i {} -o ../images/color/{}'
ls -v1 ../images/original/ | parallel -j 8 'echo {}; python image2line.py -i {} -o ../images/line/{}'
ls -v1 ../images/original/ | parallel -j 8 'echo {}; python resizex2.py -i {} -o ../images/colorx2/{}'
ls -v1 ../images/original/ | parallel -j 8 'echo {}; python image2line.py -i {} -o ../images/linex2/{}'
$ cd cgi-bin/paint_x2_unet
$ cd tools
$ ./run.sh
Il stocke également une liste d'ensembles de données dans dat / images_color_train.dat.
$ pwd
~/PaintsChainer/cgi-bin/paint_x2_unet/tools
$ cd ../images/original
$ ls -v1 > ../../dat/images_color_train.dat
Tout ce que vous avez à faire est d'apprendre. J'ai un peu bricolé le code original. (C'est un peu vieux car il est basé sur le code Paint Chainer lorsque vous commencez à apprendre)
https://github.com/ikeyasu/PaintsChainer/commit/8e30ee6933c747580efe25c9c4d5165f55823966
$ pwd
~/PaintsChainer/cgi-bin/paint_x2_unet/images/original
$ cd ../../
$ python train_128.py -g 0 --dataset images/ -e 20 -o result1
$ cp result1/model_final models/model_cnn_128
$ python train_x2.py -g 0 -o result2/ --dataset images/ --snapshot_interval 5000 -e 20
Le modèle à charger est écrit dans cgi-bin / paint_x2_unet / cgi_exe.py.
serializers.load_npz(
"./cgi-bin/paint_x2_unet/models/unet_128_standard", self.cnn_128)
Quand
serializers.load_npz(
"./cgi-bin/paint_x2_unet/models/unet_512_standard", self.cnn)
C'est la partie de. Copiez le modèle en conséquence
$ pwd
~/PaintsChainer/cgi-bin/paint_x2_unet
$ cp result1/model_final models/unet_128_standard
$ cp result2/model_final models/unet_512_standard
Ensuite, exécutez server.py
$ pwd
~/PaintsChainer/cgi-bin/paint_x2_unet
$ cd ../../
$ python server.py
Vous pouvez voir PaintChainer en ouvrant http: // localhost: 8000 dans votre navigateur. Si vous voulez le voir depuis un autre PC, spécifiez l'adresse IP de l'hôte en cours d'exécution, par exemple python server.py --host 192.168.1.3
.
Il n'y a pas de copyright sur la création de l'intelligence artificielle Cependant, comme il est coloré, la partie dessin au trait a le droit d'auteur, voici donc le résultat Je ne peux pas le mettre sur la grange. .. Je ne citerai qu'une partie de l'écran.
La couleur des cheveux et des yeux est magnifiquement peinte
涼宮ハルヒの憂鬱 I 第5話より引用
Uniforme 涼宮ハルヒの憂鬱 I 第5話より引用
Pour les hommes aussi 涼宮ハルヒの憂鬱 I 第5話より引用
J'ai publié les résultats qui ont fonctionné, mais même si je mets le dessin au trait dessiné à la main de l'illustration du ventilateur, cela ne fonctionne pas du tout. Cela peut être dû au fait que la méthode de dessin au trait n'était pas bonne. Après tout, l'intelligence artificielle doit fournir un bon matériel pédagogique. ..
http://d.hatena.ne.jp/zuruo/20080528/1212143328 (頭部のリボン部分)
De plus, même si vous donnez un soupçon de couleur, ce qui est une caractéristique de PaintChainer, il ne peint pas très bien. Qu'est-ce que c'est? Après tout, les données d'entraînement ne sont-elles pas bonnes?
Je l'ai écrit comme si je pouvais l'essayer rapidement, mais il a fallu 294 heures (12 jours et 6 heures!) Pour l'exécuter jusqu'à présent. L'article original dit que ce n'est que la première étape. ..
En supposant que la facture d'électricité du PC est de 200W, la facture d'électricité est
200 * (51 + 243) * 0,026 = 1 528,8 yens
0.026 peut être écrit ici car la facture d'électricité de TEPCO est car 1kw / h équivaut à 26 yens.
En outre, le PC est un PC auto-fabriqué avec GTX1080, et il coûte environ 170 000 yens.
Référence: Assemblez un PC de type cube avec GTX 1080
Recommended Posts