Connaissez-vous THE IDOLM @ STER SHINY COLORS?
Si vous ne savez pas, jouez simplement Shanimas. La communauté et les cartes sont super. Vous pouvez également regarder la vidéo de lecture sur youtube, veuillez donc la regarder quand même.
En passant, si vous vous entraînez avec des données originales, vous voulez le faire avec votre contenu préféré, donc un record d'essayer la reconnaissance d'image avec des caractères Shanimas.
Je ne sais pas si les termes sont corrects.
PC d'apprentissage
Comme certains travaux ont été effectués sur mac, certaines captures d'écran ont été prises sur mac.
Puisque tous les logiciels utilisés sont fabriqués par python, il peut être utilisé quel que soit le système d'exploitation.
Je veux que vous présentiez Darknet d'une manière ou d'une autre. La méthode d'installation spécifique n'est pas expliquée ici.
Si vous pouvez obtenir l'image habituelle, vous êtes prêt à partir.
Après avoir confirmé que cela fonctionne, vous êtes prêt à partir!
Afin de juger l'image, l'image doit d'abord être préparée.
Comme il est très difficile de télécharger un par un, nous utiliserons cette fois un outil appelé icrawler. Cet outil télécharge automatiquement les résultats de la recherche d'images afin que vous puissiez facilement préparer des images.
Parce que python doit être inclus lorsque darknet est installé
pip install icrawler
Peut être installé avec.
Écrivez du code pour collecter des images.
Pour collectionner les idoles Shanimas: J'avais l'impression qu'il y avait peu de photos debout, donc ce serait peut-être une bonne idée d'ajouter "Communauté de noms de personnages" etc.
from icrawler.builtin import GoogleImageCrawler
google_crawler = GoogleImageCrawler(
feeder_threads = 1,
parser_threads = 2,
downloader_threads = 4,
storage = {'root_dir': 'shiny'}
)
filters = dict(
size = 'large'
)
words = ["Idol Master Shiny Colors","Shanimas","Mano Sakuragi","Akari Kazeno","Visite Hachinomiya",
"Tsukioka Koibane","Mami Tanaka","Yuka Mitsumine","Sakuya Shirase", "Kiriko Yuya","Jinka Osaki","Kana Osaki","Chiyuki Kuwayama",
"Kaho Komiya","Juri Saijo","Rinyo Morino","Chiyoko Sonoda","Arisugawa Natsuha","Asahi Serizawa","Ai Izumi", "Yuko Mayuyu",
"L’Antica","illumination STARS","ALSTROEMERIA Shanimas","Straylight","Filles à l'apogée après l'école"]
max_num = 100 #Le nombre de collections d'images 100 est la limite dans Google
#Toru Asakura", "Hinana Ichikawa","Enka Higuchi","Fukumaru Koito", "Noctil Shanimas" #Commentez parce que Noctchill a été annoncé le lendemain de la collecte de l'image
for i in range(len(words)):
google_crawler.crawl(keyword=words[i], filters=filters, max_num=max_num, file_idx_offset=i*max_num)
Enregistrez-le en tant que fichier python et exécutez-le. Ensuite, le dossier / shiny est créé et l'image acquise est enregistrée.
Le fichier téléchargé cette fois a png et gif en plus de l'extension jpg.
Si cela est laissé tel quel, l'apprentissage sera entravé, donc ces fichiers seront supprimés. Il existe une solution de contournement pour convertir l'extension, mais elle est gênante, alors je l'ai traitée en la supprimant. Il y aura des trous dans les numéros de série, mais je m'en fiche car il n'y a aucun effet.
Nous avons également utilisé des illustrations de cartes Shanimas pour apprendre cette fois. Je n'expliquerai pas comment le télécharger, mais il sera facile à trouver.
De plus, si des caractères multi-octets sont mélangés, c'est gênant, alors convertissez-les correctement. Moyen simple de renommer un grand nombre de fichiers avec des numéros de série (fonction Windows standard)
Lorsque l'image est prête, c'est finalement une annotation. Il est très difficile d'annoter 2700 images (en fait ce sera environ 2500 car certaines d'entre elles ont été supprimées).
N'essayez pas de tout faire en même temps, mais divisez-le en plusieurs jours.
Cette fois, nous avons utilisé labelimg pour annoter.
git clone https://github.com/tzutalin/labelImg.git
sudo apt install pyqt5-dev-tools
cd labelImg
make qt5py3
python3 labelimg.py
Peut être exécuté avec.
Déplacez une fois le fichier image préparé dans le dossier labelimg.
Modifiez également predefined_class.txt dans la classe labelimg / data. Ce faisant, la valeur initiale de la classe est définie, ce qui facilite un peu l'annotation.
Entrez les noms de 24 personnes séparés par des sauts de ligne et enregistrez.
Sakuragi Mano
Kazano Hiori
Hachimiya Meguru
Tanaka Mamimi
Yukoku Kiriko
Tsukioka Kogane
Mitsumine Yuika
Shirase Sakuya
Morino Rinze
Sonoda Chiyoko
Komiya Kaho
Saijo Juri
Arisugawa Natsuha
Osaki Amana
Osaki Tenka
Kuwayama Chiyuki
Serizawa Asahi
Mayuzumi Fuyuko
Izumi Mei
Ichikawa Hinana
Asakura Toru
Higuchi Madoka
Fukumaru Koito
Nanakusa Hazuki
Ouvrez le dossier d'image avec Open Dir </ b> et spécifiez la destination d'enregistrement avec Change Save Dir </ b>.
Cette fois, spécifiez le même dossier. Sélectionnez ensuite PscalVOC sous Enregistrer et passez à YOLO </ b>. Si vous ne le changez pas, vous verrez des pleurs, alors faites attention!
Annoter lorsqu'une image apparaît. Appuyez sur la touche "W" pour entrer dans le mode de spécification de plage, sélectionnez donc la plage de la face inactive. L'écran de sélection du nom de la classe apparaît. Sélectionnez l'idole correcte et cliquez sur OK.
Cela se répète à jamais.
De plus, en activant "Affichage-> Mode d'enregistrement automatique", il sera enregistré automatiquement. Ensuite, la plupart du travail ne peut être effectué que par une entrée clé.
"W" → Spécifier la plage → Saisir la lettre initiale du nom inactif → Sélectionner avec les touches fléchées → Valider → Passer à l'image suivante avec "D"
Peut être dit.
Puisque plus de 2000 annotations sont effectuées, le logiciel plante parfois. À ce stade, le fichier «classes.txt» dans le dossier image est peut-être endommagé. Si vous l'ouvrez avec un bloc-notes pendant que vous travaillez, vous pouvez le récupérer immédiatement même s'il est endommagé.
De plus, si vous créez une nouvelle classe en raison d'une faute de frappe, vous pouvez la corriger de la même manière, mais veillez à supprimer celle étiquetée dans la nouvelle classe.
De plus, les images qui ne peuvent pas être étiquetées sont incluses en raison de la commodité de la collecte d'images. Vous pouvez ignorer l'image telle quelle.
Confirmez que l'image et le fichier texte ont été créés. ## Division des donnéesDivisez les données du dossier en données d'enseignant et données d'apprentissage.
c'est How to train YOLOv2 to detect custom objects Nous modifierons certains des programmes ci-dessus pour séparer automatiquement les données.
import glob, os
# Current directory
current_dir = os.path.dirname(os.path.abspath(__file__))
# Directory where the data will reside, relative to 'darknet.exe'
path_data = 'data/obj/'
# Percentage of images to be used for the test set
percentage_test = 10
# Create and/or truncate train.txt and test.txt
file_train = open('train.txt', 'w')
file_test = open('test.txt', 'w')
# Populate train.txt and test.txt
counter = 1
index_test = round(100 / percentage_test)
texts = glob.glob(os.path.basename(os.path.join(current_dir, "*.txt")))
for pathAndFilename in glob.iglob(os.path.join(current_dir, "*.jpg ")):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
if (title + ".txt") in texts:
if counter == index_test:
counter = 1
file_test.write(path_data + title + '.jpg' + "\n")
else:
file_train.write(path_data + title + '.jpg' + "\n")
counter = counter + 1
Donnez-lui un nom de fichier approprié, enregistrez-le dans le même dossier que l'image et exécutez-le. Cela ajoutera uniquement les images contenant un fichier texte au fichier train.txt ou test.txt. Puisque le rapport des données d'enseignant est déterminé par pourcentage_test = 10, modifiez-le si nécessaire.
Déplacez le dossier contenant ces derniers vers darknet / data / </ b> (pour qu'il devienne darknet / data / shiny)
Préparez les fichiers nécessaires à l'apprentissage.
Puisqu'il existe un fichier de poids pré-formé officiel, utilisez-le.
wget https://pjreddie.com/media/files/darknet53.conv.74
Vous pouvez le télécharger sur.
Créez un fichier.
Créez un fichier .data.
classes= 24
train = data/shiny/train.txt
valid = data/shiny/test.txt
names = cfg/obj_shiny.names
backup = backup/
Nommez-le obj_shiny.data </ b> et enregistrez-le dans cfg / En même temps, créez un dossier de sauvegarde sous darknet.
Créez un fichier obj_shiny.names </ b> pour qu'il devienne cfg / obj_shiny.names. Le contenu est le même que celui de classes.txt, vous pouvez donc enregistrer classes.txt sous un nouveau nom.
Copiez cfg / yolov3-voc.cfg et il y a 3 endroits
Lorsque la modification est terminée, enregistrez-la sous cfg / yolov3_shiny.cfg </ b>.
Modifiez les classes et les filtres dans cette partie.
[convolutional]
size=1
stride=1
pad=1
filters=87
activation=linear
[yolo]
mask = 6,7,8
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=24
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=1
De plus, si vous voulez vous entraîner sérieusement, c'est dans la première partie [nette].
Changer en.
En fonction des performances du GPU, une erreur de mémoire peut se produire, alors réduisez le lot ou augmentez les subdivisions.
darknet.exe detector train cfg/obj_shiny.data cfg/yolov3_shiny.cfg darknet53.conv.74
La formation commence par son exécution. Si le graphique n'apparaît pas, il y a de fortes chances qu'une erreur se soit produite, alors vérifiez-le.
Lorsque l'apprentissage est terminé
darknet.exe detector test cfg/obj_shiny.data cfg/yolov3_shiny.cfg backup/yolov3-obj_last.weights
Vous pouvez vérifier avec.
Bien entendu, les illustrations des cartes formées peuvent être identifiées. Toru Asakura ne pouvait préparer qu'environ 10 feuilles, mais il la reconnaissait si c'était une photo debout. Asahi Serizawa, une nouvelle illustration qui n'avait pas été formée, a été reconnue et discriminée. Je n'ai pas pu reconnaître le profil, mais je peux dire que j'ai pu apprendre.De plus, toutes les cartes d'illustration Shanimas ont été utilisées pour les images utilisées pour l'apprentissage cette fois. Par conséquent, l'image comme la première utilisée pour l'apprentissage sera naturellement reconnue. On peut dire que des images plus expérimentales auraient dû être préparées afin de confirmer qu'elles étaient réellement reconnues.
How to train YOLOv2 to detect custom objects
Apprendre les données originales de YOLO
Votre commande est-elle YOLO! ?? (Jusqu'à l'apprentissage et l'exécution de YOLO sous Windows 10)
Votre commande est-elle YOLO v3! ?? -Exécution de YOLO v3 sur Windows-
Article de référence dans la partie icrawer Collecte facile de données d'image à l'aide de la bibliothèque python icrawler
Recommended Posts