[PYTHON] Apprenez de nouvelles données avec PaintsChainer

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. ..

Préparation des données d'entraînement

Préparation de l'image originale

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.

Redimensionner / dessin au trait

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

Apprentissage

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

Essayez de courir

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.

Quels sont les résultats qui vous intéressent?

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

スクリーンショット 2017-02-18 18.46.12.pngスクリーンショット2017-02-1818.46.19.png 涼宮ハルヒの憂鬱 I 第5話より引用

Uniforme スクリーンショット 2017-02-18 18.47.43.pngスクリーンショット2017-02-1818.47.55.png涼宮ハルヒの憂鬱 I 第5話より引用

Pour les hommes aussi スクリーンショット 2017-02-18 18.47.58.pngスクリーンショット2017-02-1818.48.03.png涼宮ハルヒの憂鬱 I 第5話より引用

Tâche

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 スクリーンショット 2017-02-18 18.54.19.png(頭部のリボン部分)

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?

Mise en garde! !! Cela prendra beaucoup de temps!

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

Apprenez de nouvelles données avec PaintsChainer
Apprenez les données distribuées avec TensorFlow Y = 2X
Apprenez la science des données
Analyse de données avec python 2
Apprenez Zundokokiyoshi en utilisant LSTM
Pandas apprenant avec la chimioinfomatique
Lecture de données avec TensorFlow
Apprentissage Scikit-Learn avec la chimioinfomatique
Visualisation des données avec les pandas
Apprenez avec Chemo Informatics Matplotlib
Manipulation des données avec les Pandas!
Mélangez les données avec les pandas
Augmentation des données avec openCV
Apprenez avec Chemo Informatics NumPy
Normariser les données avec Scipy
DCGAN avec TF Learn
Analyse de données avec Python
CHARGER DES DONNÉES avec PyMysql
Apprenez Pendulum-v0 avec DDPG
Exemple de données créées avec python
Incorporer des données audio avec Jupyter
Graphique des données Excel avec matplotlib (1)
Apprenez librosa avec un tutoriel 1
Extraire les données Twitter avec CSV
Obtenez des données Youtube avec python
Apprenez les orbites elliptiques avec Chainer
Binariser les données photo avec OpenCV
Graphique des données Excel avec matplotlib (2)
Utilisez Django pour enregistrer les données de tweet
Nouvelle augmentation des données? [Grid Mix]
Conseils de traitement des données avec Pandas
Lire des données json avec python
[Analyse du cours de l'action] Apprenez les pandas avec la moyenne Nikkei (004: Changer les données lues en moyenne Nikkei)
Exercice pratique d'analyse de données avec Python ~ 2016 New Coder Survey Edition ~
Les ingénieurs de données apprennent DevOps en vue de MLOps. ① Prise en main
Enregistrer et charger des données avec joblib, pickle
DCGAN avec TF Learn
Apprendre avec Causal ML Package Meta-Learner
Apprenez avec FizzBuzz Iterator, Generator, Decorator
Apprenez avec les réseaux convolutifs PyTorch Graph
[TensorFlow 2] Apprendre RNN avec perte CTC
Apprenons Deep SEA avec Selene
Comment gérer les données déséquilibrées
[Python] Obtenez des données économiques avec DataReader
Traçage de données polyvalent avec pandas + matplotlib
Apprendre la catégorisation de documents avec la CLI spaCy
Structure de données Python apprise avec la chimioinfomatique
Installez le fichier de données avec setup.py
Analyser les données pcap avec la commande tshark
Créez dynamiquement de nouvelles trames de données avec des pandas
Créez des données audio bruyantes avec SoX
Comment augmenter les données avec PyTorch
Visualisez facilement vos données avec Python seaborn.
Générer de fausses données de table avec GAN
Traiter les données Pubmed .xml avec python
Analyse de données à partir de python (visualisation de données 1)