[PYTHON] Une histoire sur l'apprentissage automatique avec Kyasuket

Lors de l'événement créatif de PeerCast "Kyasuket", les participants ont été invités à dessiner un grand nombre d'images, et sur cette base, une IA d'identification a été créée.

Kyasuket est comme une bande dessinée en ligne, où les participants peuvent partager leur travail et apprécier le travail des autres. Les principaux contenus sont des images, des jeux et des outils. Il a lieu une fois tous les six mois.

Dans ce Kyasuket (automne 2016), nous leur avons demandé de dessiner des images de plusieurs types de Sutatsu-san (la figure ci-dessous, un exemple), et sur la base de ces données, nous avons identifié quel type de Sutatsu-san. Créé une IA à faire. stamp1.png

UI Nous avons préparé quatre pages: une page pour écrire des images qui seront des données, une page pour utiliser l'IA, une page pour des informations sur le nombre de messages publiés et une page pour écrire de brèves explications.

Page de publication how_to_post.png Page AI how_to_use_AI.png Je l'ai fait comme ça.

Dessinez au hasard 9 types d'images et demandez-leur de les imiter. Au contraire, AI a décidé de répondre avec une probabilité de quelle image elle se rapprochait.

Je ne pense pas que je le verrais dans l'ancien IE d'une entreprise, alors je l'ai écrit dans ES2015 et l'ai placé sans compiler avec babel, haha.

serveur

Je l'ai poussé dans le niveau gratuit d'heroku. J'ai utilisé Flask avec Python3. Si la taille d'origine des données d'image est laissée telle quelle, la taille des données sera grande, j'ai donc créé l'image 32x32 et l'ai placée dans PostgreSQL de heroku avec des informations sur l'image.

J'ai choisi Python parce que j'utilisais TensorFlow pour l'apprentissage automatique, et je n'avais pas l'intention de le compliquer en tant qu'application Web, j'ai donc utilisé Flask. J'ai utilisé Flask-SQL Alchemy pour travailler avec la base de données.

Il serait très pénible de devoir dessiner une image et rafraîchir la page, j'ai donc pris la méthode de redresser le canevas après avoir envoyé les données avec Ajax. Par conséquent, la page elle-même est presque statique et le serveur est principalement exploité par l'API json.

AI Les défis de l'IA sont au même niveau que mnist, donc j'en ai fait un niveau qui peut être compris avec un peu de travail sur le tutoriel TensorFlow. La raison pour laquelle je l'ai fait en toute sécurité sans repousser mes limites est que je ferai des ajustements dans le délai imparti.

Le modèle utilisait la régression softmax, le perceptron multicouche et CNN, comme indiqué dans le didacticiel TensorFlow, afin que l'utilisateur puisse sélectionner le modèle et voir les résultats de chacun.

résultat

Actuellement, plus de 4 500 données sont collectées. (Dont, j'ai écrit environ 1000) Beaucoup de gens ont écrit avec moi pendant que je distribuais l'état d'écriture des données avec PeerCast, et la plupart des messages l'étaient à ce moment-là. .. Je pense que l'événement a été animé avec la réaction comme PeerCast, qui a une culture d'apprécier le travail répétitif comme ce type de formation. (Il aurait été douloureux de continuer à écrire le programme entier pendant trois jours, mais cela a été utile car je n'ai rassemblé suffisamment de données que le premier jour pour obtenir suffisamment de résultats d'apprentissage.) C'était facile d'écrire avec un stylet, mais il est compatible avec les smartphones. Cela n'a pas été fait, alors peut-être que certaines personnes l'ont écrit sur leurs smartphones.

Au contraire, comme prévu, il y avait un article d'histoire qui aurait dû gêner l'apprentissage. J'aimerais essayer de détecter les publications importantes, mais c'est une histoire à venir. Pour le moment, j'ai exposé des choses semblables à du matériel sur Twitter quand je l'ai vu de mes propres yeux. Dans l'image d'udon, il y a des gens qui écrivent du riz frit, des choses qui sont des filles par tous les moyens, des personnages différents, etc.

La précision de l'IA est d'environ 70% pour la régression softmax et le perceptron multicouche, et de 86% pour CNN. Comparé à mnist, le nombre total de données est petit pour la grande quantité de données, donc je pense que c'est à ce sujet. Contrairement au didacticiel, la précision n'est pas ressortie à moins que je ne falsifie moi-même les dimensions et les paramètres, et j'ai dû faire divers essais et erreurs. Je ne l'ai pas fait lors de la livraison parce que je me demandais si cela produirait des résultats après avoir appris à minuit, mais je regrette que certaines personnes s'y soient attendues. Cependant, il faut du temps pour apprendre CNN ...

Le traitement des données et du code source sera envisagé à l'avenir. Je suis fatigué de dessiner.

réaction

Je n'avais pas de fonction pour afficher l'image postée, mais après tout, il y avait des gens qui voulaient la voir. Je m'inquiétais de savoir comment le montrer, mais j'ai eu l'intention d'en afficher un lorsque je l'ai publié.

Certaines personnes voulaient l'essayer de l'extérieur avec un smartphone, mais que dois-je faire parce que je n'ai pas de smartphone?

Il y a aussi un commentaire selon lequel c'était un service où les humains apprenaient à écrire Sutatsu plutôt que l'IA. En fait, j'en ai écrit un en quelques secondes.

à partir de maintenant

Que faire des données. Que faire avec le public. La prochaine fois, je travaillerai sur un autre problème à partir des mêmes données. Organisez-vous pour publier le code source.

Je pense que si je peux faire une pause et réinitialiser mon esprit.

Recommended Posts

Une histoire sur l'apprentissage automatique avec Kyasuket
Une histoire sur l'apprentissage automatique simple avec TensorFlow
Histoire de l'analyse de données par apprentissage automatique
Une histoire sur l'automatisation du mahjong en ligne (Jakutama) avec OpenCV et l'apprentissage automatique
Une histoire de prédiction du taux de change avec Deep Learning
Une histoire coincée avec l'installation de la bibliothèque de machine learning JAX
Apprentissage automatique Une histoire sur des personnes qui ne sont pas familiarisées avec GBDT utilisant GBDT en Python
Une histoire sur l'implémentation d'un écran de connexion avec django
Créer un environnement d'apprentissage automatique Python avec des conteneurs
Histoire de l'utilisation du jeton logiciel de Resona avec 1Password
Exécutez un pipeline de machine learning avec Cloud Dataflow (Python)
À propos de l'apprentissage avec Google Colab
Apprentissage automatique avec Python! Préparation
Une histoire sur l'obtention d'un taux de récupération des courses de chevaux de plus de 100% grâce à l'apprentissage automatique
L'histoire de la création d'une partition de type Hanon avec Python
Sentons-nous comme un chercheur en matériaux avec l'apprentissage automatique
Une histoire d'essayer un monorepo (Golang +) Python avec Bazel
À propos de la matrice mixte d'apprentissage automatique
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Démineur d'apprentissage automatique avec PyTorch
Créer un environnement d'apprentissage automatique
L'histoire de la gestion de theano avec TSUBAME 2.0
Commencer avec l'apprentissage automatique Python
Essayez le machine learning à la légère avec Kaggle
Créez un environnement d'apprentissage automatique à partir de zéro avec Winsows 10
Parlez de l'amélioration du goulot d'étranglement des algorithmes d'apprentissage automatique avec Cython
Créez un environnement d'apprentissage automatique scikit-learn avec VirtualBox et Ubuntu
Créez une application d'apprentissage automatique avec ABEJA Platform + LINE Bot
Une histoire de compétition avec un ami dans Othello AI Preparation
Une histoire sur l'installation de matplotlib à l'aide de pip avec une erreur
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ②
Une histoire sur la façon de traiter le problème CORS
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ①
Une histoire sur la création d'une courte chanson par hasard avec Sudachi Py
L'histoire d'un ingénieur directeur de 40 ans qui réussit "Deep Learning for ENGINEER"
Une histoire à propos d'un débutant en python coincé avec aucun module nommé'ttp.server '
Une histoire rafraîchissante sur Slice en Python
J'ai essayé l'apprentissage automatique avec liblinear
Apprentissage automatique par python (1) Classification générale
Une histoire de mauvaise humeur sur Slice en Python
SVM essayant l'apprentissage automatique avec scikit-learn
Analyse inverse du modèle d'apprentissage automatique
L'histoire de l'utilisation de la réduction de Python
Machine learning d'inspiration quantique avec des réseaux de tenseurs
Démarrez avec l'apprentissage automatique avec SageMaker
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Création d'un environnement Windows 7 pour une introduction à l'apprentissage automatique avec Python
Apprentissage automatique
Une histoire sur le développement d'un type logiciel avec Firestore + Python + OpenAPI + Typescript
Comment créer une API de machine learning sans serveur avec AWS Lambda
Prédire la demande de puissance avec l'apprentissage automatique, partie 2
Une histoire sur un remodelage magique qui met Lubuntu dans un Chromebook
Amplifiez les images pour l'apprentissage automatique avec Python
Sklearn de données déséquilibrées avec apprentissage automatique k-NN
Apprentissage automatique avec python (2) Analyse de régression simple
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
Notes personnelles et liens sur l'apprentissage automatique ① (Machine learning)