[SWIFT] [Apprentissage automatique] J'ai essayé la détection d'objets avec Create ML [détection d'objets]

Ce que j'ai mis en œuvre cette fois

ダウンロード.gif

Préparation

Cette fois, j'ai essayé celui qui détecte et identifie Coin comme Gif au début. Quoi préparer --Environ 100 données (photos Jpeg)

Types approximatifs d'apprentissage automatique

Pour l'apprentissage automatique ・ Classification des images ・ Classification sonore ・ Classification des actions ・ Détection d'objets Cependant, cette fois, nous implémenterons la détection d'objets, c'est-à-dire la détection d'objets.

Qu'est-ce que la détection d'objets?

La détection d'objet fait référence à la détection d'un objet, il est donc nécessaire de juger "ce qui est dans l'image". Par conséquent, «photographie» et «informations de position» sont nécessaires. Prenez des photos à l'avance et stockez-les dans des dossiers. (Nom du dossier = nom de la classification) Cette fois, nous voulons détecter et identifier les pièces, nous avons donc besoin d'un dossier de 500 yens à 1 yen et des informations de position de chaque image. → Cliquez ici pour en savoir plus sur la détection d'objets. Entraînement du modèle de détection d'objets dans Create ML

procédure

--Collecter des données. (Prenez la photo que vous souhaitez détecter) --Classez les données collectées à l'aide d'IBM Cloud Annotations (ci-après dénommées IBMCA), spécifiez les informations de localisation et créez un ensemble de données. --Créer un modèle en plaçant le fichier créé par IBM CA dans Create ML

Prendre une photo (préparer les données)

En ce qui concerne les photos, j'ai préparé environ 100 photos de Coin cette fois. スクリーンショット 2020-09-26 19.10.21.jpg

Photo ・ Photos sous différents angles ・ Environ 30 feuilles sont disponibles pour chacun des trois modèles de grand, moyen et petit format. ・ L'arrière-plan est unifié et blanc

Créer un ensemble de données (fichier JSON)

La détection d'objets nécessite non seulement des photos mais également des fichiers JSON (car les informations de localisation sont requises), donc cette fois j'ai utilisé compte IBM Cloud Annotations (gratuit). Créé. Comment le faire est comme suit.

· Cliquez sur Continuer IBM Cloud

・ Cliquez sur un nouveau projet

・ Cliquez sur la localisation

・ Saisissez le nom du fichier et saisissez-le car vous pourrez D & D la photo au démarrage du projet.

・ Faites glisser vers l'objet (pièce cette fois) et placez-le ・ Le nom de l'étiquette peut être entré sur le côté droit.

・ Comme le nom de l'étiquette une fois décrit peut être sélectionné dans la liste du bas en haut à gauche, il est efficace d'ajouter l'étiquette à la pièce.

・ Après avoir attaché l'étiquette à toutes les photos, exportez à partir du fichier afin qu'il puisse être utilisé dans Create ML.

・ Succès si ce fichier est généré

-Vérifiez s'il y a un fichier JSON dans le dossier

Créer un modèle avec Create ML

Une fois le jeu de données créé, faites un clic droit sur Xcode et lancez Create ML

Sélectionnez Détection d'objet et D & D le dossier de l'ensemble de données que vous avez créé précédemment Il semble que ce n'est pas bon si le nombre de répétitions de l'apprentissage (je pense) est grand, mais même s'il est extrêmement petit, la précision ne sera pas obtenue, donc si elle est douce, essayez de l'augmenter un peu et de l'ajuster. (J'ai essayé 300, 600, 1000 cette fois, mais cela n'a pas changé.)

Après avoir appris, testez-le et s'il n'y a pas de problème, retirez le modèle. (Peut être retiré par D & D)

Essayez-le avec la reconnaissance d'objets dans Live Capture

Après cela, téléchargez et ouvrez RecognizingObjectsInLiveCapture fourni par Apple.

D & D le modèle créé par Create ML ici

Le code lit à l'origine un modèle appelé Object Detector et s'agit-il d'un croissant ou d'une banane? Parce qu'il y a quelque chose à détecter et à identifier

guard let modelURL = Bundle.main.url(forResource: "ObjectDetector", withExtension: "mlmodelc")

À

guard let modelURL = Bundle.main.url(forResource: "coindetection", withExtension: "mlmodelc")

Implémenté en réécrivant le nom du modèle généré cette fois

Est-ce généralement réussi? Vous pouvez tout faire, du jeu de données à la mise en œuvre en environ 2 heures, alors essayez-le!

finalement

J'ai utilisé un échantillon cette fois, mais comme c'est un gros problème, j'aimerais me mettre au défi de le faire avec Swift UI à l'avenir! De plus, j'aimerais relever des défis allant de la création d'un ensemble de données lié à l'apprentissage automatique à la mise en œuvre, donc si vous êtes intéressé, veuillez également vérifier cela!

Twitter https://twitter.com/oka_yuuji note https://note.com/oka_yuuji

Je suis également membre du corps professoral du secondaire, mais j'aime apprendre des compétences et faire de la recherche! Si vous avez une demande technique ou une recherche, veuillez nous contacter par DM ci-dessous. https://twitter.com/oka_yuuji

Recommended Posts

[Apprentissage automatique] J'ai essayé la détection d'objets avec Create ML [détection d'objets]
J'ai essayé le machine learning OSS d'Oracle "Tribuo"
J'ai essayé l'apprentissage de la gestion qui fait gagner du temps avec Studyplus.
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part3 ~ Practice ~
J'ai essayé DI avec Ruby
J'ai essayé la machine Spring State
J'ai essayé UPSERT avec PostgreSQL.
J'ai essayé BIND avec Docker
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
[Rails] J'ai essayé de créer une mini application avec FullCalendar
J'ai essayé de créer un environnement de développement padrino avec Docker
J'ai essayé d'utiliser JOOQ avec Gradle
J'ai essayé l'analyse morphologique avec MeCab
J'ai essayé d'interagir avec Java
J'ai essayé la communication UDP avec Java
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part2 ~ Façon basique d'écrire Dash ~
J'ai essayé GraphQL avec Spring Boot
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé Flyway avec Spring Boot
J'ai essayé de personnaliser Slim avec Scaffold
J'ai essayé d'apprendre Java avec une série que les débutants peuvent comprendre clairement
[Après avoir appris Progate] j'ai essayé de résumer form_with en comparant avec form_tag
J'ai essayé d'utiliser Realm avec Swift UI
J'ai essayé le mappeur d'objets de Cassandra pour Java
J'ai essayé de démarrer avec Web Assembly
J'ai essayé d'utiliser Scalar DL avec Docker
J'ai essayé d'utiliser OnlineConverter avec SpringBoot + JODConverter
J'ai essayé de jouer un peu avec BottomNavigationView ①
Créez une classe temporaire avec le nouvel Object () {}
J'ai essayé d'utiliser OpenCV avec Java + Tomcat
J'ai essayé l'initialisation paresseuse avec Spring Boot 2.2.0
J'ai essayé de créer un portefeuille avec AWS, Docker, CircleCI, Laravel [avec lien de référence]
J'ai essayé de vérifier AdoptOpenJDK 11 (11.0.2) avec l'image Docker
J'ai essayé de faire une authentification de base avec Java
J'ai essayé de gérer la configuration des jambes de force avec Coggle
J'ai essayé de gérer les informations de connexion avec JMX
J'ai aussi essayé Web Assembly avec Nim et C
J'ai essayé de créer une application de clonage LINE
J'ai essayé Eclipse MicroProfile OpenAPI avec WildFly Swarm
J'ai essayé de créer une compétence Alexa avec Java
J'ai essayé de casser le bloc avec java (1)
J'ai essayé de démarrer avec Gradle sur Heroku
J'ai essayé de créer une fonction / écran d'administrateur de site commercial avec Java et Spring
J'ai essayé l'extraction de texte (OCR) dans Ruby à l'aide de l'API Vision (modèle d'apprentissage automatique formé)
[Azure] J'ai essayé de créer une application Java gratuitement ~ Se connecter avec FTP ~ [Débutant]