C'est un gâchis, mais je vais vous montrer comment détecter un objet très facilement.
Qu'est-ce que YOLO en premier lieu? Qu'est-ce que la détection d'objets? Veuillez consulter ce qui précède pour obtenir des réponses à des questions telles que. Cet article est également inclus dans les 3 heures de création, alors pardonnez-moi s'il y a des endroits où il est cassé.
Préparez des données simples sur les enseignants. Dans mon cas, je voulais détecter la maison de vinyle cette fois, j'ai donc préparé 30 images pour le moment. Comme ça. La photographie aérienne de Google Maps est si belle![Screenshot 2019-12-20 20.37.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285361 /aa7b62c1-f85c-4b13-b543-35e0fe032768.png)
Nous effectuerons un travail d'annotation (étiquetage) dessus. Cette fois, j'ai utilisé un outil appelé labelImg. Il existe d'autres outils appelés VoTT et BBox-Label-Tool, mais VoTT prend en charge YOLO, mais si cela ne fonctionne pas, il est difficile de recommencer, et BBox est difficile à configurer lorsque vous essayez de créer plusieurs classes. J'ai donc choisi labelImg.
Exécutez la commande suivante pour rendre labelImg prêt à l'emploi. Si Python3 est installé, vous pouvez sauter la ligne 3.4.
git clone https://github.com/tzutalin/labelImg.git sudo apt install pyqt5-dev-tools sudo apt install python3-pip sudo pip3 install lxml cd labelImg make qt5py3
Créez un dossier avec n'importe quel nom dans le dossier labelimg et déplacez-y l'image préparée. (Vinyle, etc. pour les maisons en vinyle) Puis modifiez predefined_class.txt dans labelimg / data. Au début, environ 20 classes sont écrites à l'avance, mais cette fois, supprimez tous les noms de classe déjà écrits et écrivez le nom de classe avec un saut de ligne avec votre nom préféré. J'ai écrit une ligne avec du vinyle.
python3 labelimg.py Exécutez labelImg par. Coupe pour le travail interne. Grosso modo
Je vais l'étiqueter comme ça. 30 feuilles, c'est un instant. Ceci termine la préparation des données de l'enseignant.
Nous nous préparerons à apprendre. Pour utiliser YOLO, installez un framework appelé darknet. Ce framework fonctionne plutôt bien avec YOLO. (Au contraire, est-il utilisé par les développeurs YOLO?) Installez à partir de la commande suivante.
git clone https://github.com/pjreddie/darknet.git
Ensuite, déplacez les images utilisées avec labelImg vers darknet / data / images et les fichiers texte créés avec labelImg vers darknet / data / labels. Dans cet état / sur darknet python3 process.py Éxécuter. Cela sépare les données de l'enseignant en un fichier enseignant et un fichier d'apprentissage.
Nous ferons divers travaux à partir d'ici. Énumérer. -Créez /darknet/data/images/obj.names et entrez le nom de l'étiquette que vous souhaitez identifier (vinyle) ・ Faites de même pour /darknet/data/images/obj.list -Réglez les classes sur la ligne 244 de /darknet/cfg/yolo-obj.cfg à 1 comme ci-dessus, et réglez les filtres sur la ligne 237 sur (classes + coord + 1) * 5. Dans ce cas, il est de 30. -Max_batches sur la 20e ligne de /darknet/cfg/yolo-obj.cfg est le nombre de fois pour apprendre réellement. L'idéal est les classes * 2000, donc dans ce cas 2000.
Si /darknet/cfg/yolo-obj.cfg n'existe pas, copiez /darknet/cfg/yolov2-voc.cfg et modifiez-le. 3ème ligne: Set batch = 64. Le nombre d'images utilisées pour chaque étape d'apprentissage. Vous pouvez commenter et activer la ligne 6 4ème ligne: définir les subdivisions = 8. Le lot est divisé par 8. Vous pouvez commenter et activer la ligne 7
Enfin, modifiez /darknet/cfg/obj.data comme suit: classes=1 train = data/images/train.txt valid = data/images/test.txt labels = data/images/obj.names backup = backup/
https://pjreddie.com/media/files/darknet19_448.conv.23 Vous êtes prêt à partir en téléchargeant.
C'est enfin apprendre. Dans l'état actuel ./darknet detector train cfg/obj.data cfg/yolo-obj.cfg darknet19_448.conv.23 C'est bien d'apprendre pour la première fois, mais cela prend un temps incroyablement long avec un processeur et je suis désespéré. Par conséquent, ici, nous allons apprendre par GPU en utilisant Google Colaboratory.
Google Colaboratory est un outil qui vous permet d'utiliser le GPU gratuitement, et il est très convivial car il est essentiellement équipé d'outils d'apprentissage en profondeur. Les débutants en IA devraient certainement l'utiliser. (Uniquement lorsque vous n'utilisez pas d'informations qui ne peuvent pas être divulguées car elles sont open source.)
Téléchargez le dossier darknet sur lequel vous travailliez sur le disque. Après cela, enregistrez le fichier lié à Google Collaboration à partir de ce qui suit et faites ce qui est écrit en .ipynb. git clone https://github.com/foifoi1201/yolo.git
Si votre message est correct, cela devrait terminer la création du modèle. Le reste est basé sur les .weights téléchargés ./darknet detect cfg/obj.cfg obj_final.weights data/***.jpg Je pense qu'il peut être détecté en exécutant.
Si vous essayez de créer un modèle de détection d'objet avec 30 données d'enseignant dans les 3 heures, le résultat sera comme ceci.
Je peux le confirmer. .. ..
La détection d'objets à l'aide de YOLO est très difficile à créer, et en fait, il peut ne pas être possible de tout bien faire si vous le faites de cette façon. De plus, Google Colabatory est constamment mis à jour, il est donc possible que la même méthode de création ne fonctionne pas avec le temps. (En fait, il semble que la mise à jour ait également été effectuée cette fois-ci, et sa création a pris plus de temps que prévu. Merci beaucoup pour les références ,,,,,,,)
J'espère que cela sera utile aux mêmes débutants en IA que moi.
Recommended Posts