J'ai entendu dire que YOLO v5 était sorti, alors je l'ai essayé. https://github.com/ultralytics/yolov5/
J'ai ramassé des images pour la détection d'objets sur les sites suivants. https://public.roboflow.ai/object-detection/ Il existe différentes données, mais comme il s'agit de la période corona, j'ai sélectionné les données avec et sans masque.
Le but est de détecter des objets avec et sans masques comme indiqué sur la figure.
Téléchargez d'abord les données. Accédez à l'URL suivante. https://public.roboflow.ai/object-detection/
Cliquez sur ** Mask Wearing Dataset **.
Cliquez sur ** 416x416-black-padding **.
Cliquez sur ** Télécharger ** dans le coin supérieur droit, sélectionnez ** YOLOv5 Pytorch **, puis cliquez sur ** Continuer ** pour télécharger.
Veuillez télécharger l'ensemble à partir de ce qui suit. https://drive.google.com/drive/folders/1Drs_Aiu7xx6S-ix95f9kNsA6ueKRpN2J
Voir ci-dessous pour les ensembles de données COCO. Ensemble de données COCO
Téléchargez ** YOLOv5.ipynb ** à partir du GitHub ci-dessous. https://github.com/yuomori0127/YOLOv5_mask_wearing_data
Si vous souhaitez voir le code sur Google Colab, cliquez ici [https://colab.research.google.com/drive/1TvyOG9sf-yx86SzBmYO8f1Y6wxVZEKDN?authuser=2#scrollTo=iCLXFYlQbPTM/)
L'environnement utilisé ** Google Colab **. Consultez l'article suivant pour savoir comment l'utiliser. Les frais de serveur sont gratuits. Résumé de l'utilisation de Google Colab
Mettez les trois suivants dans n'importe quel dossier de ** GooleDrive **. ・ Données téléchargées en 2-1. ・ Modèle pré-entraîné téléchargé en 2-2. ・ ** YOLOv5.ipynb ** téléchargé en 2-3.
Ouvrez ** YOLOv5.ipynb ** à partir de ** Goole Drive ** dans ** Google Colab **.
Tout d'abord, vous avez besoin d'un resemara GPU.
Exécutez ! Nvidia-smi
en haut (Maj + Entrée) et ressemblez jusqu'à ce que vous voyiez Tesla P100.
Vous pouvez fermer dans les 5 fois.
Vous pouvez le réinitialiser à partir des éléments suivants.
Si vous exécutez runtime
-> ʻexecute all processing`, il exécutera tout,
** Le nom ou la hiérarchie du dossier ne correspond probablement pas. ** **
Le code est court et ne devrait pas être trop dur, alors essayez de le faire correspondre. Je suis désolé.
Comme il est court, j'expliquerai le code un par un.
Je vérifie le GPU.
!nvidia-smi
importer.
from IPython.display import Image, clear_output # to display images
Je monte Google Drive.
from google.colab import drive
drive.mount('/content/drive')
Déplacer le répertoire
import os
os.chdir("./drive/My Drive/YOLOv5/")
Vérification des ressources. C'est principalement pour vérifier la RAM, mais cette fois il y a peu de données et c'est 100 epoch donc vous n'avez pas à vous inquiéter trop.
!ln -sf /opt/bin/nvidia-smi /usr/bin/nvidia-smi
!pip install gputil
!pip install psutil
!pip install humanize
import psutil
import humanize
import os
import GPUtil as GPU
GPUs = GPU.getGPUs()
# XXX: only one GPU on Colab and isn’t guaranteed
gpu = GPUs[0]
def printm():
process = psutil.Process(os.getpid())
print("Gen RAM Free: " + humanize.naturalsize( psutil.virtual_memory().available ), " | Proc size: " + humanize.naturalsize( process.memory_info().rss))
print("GPU RAM Free: {0:.0f}MB | Used: {1:.0f}MB | Util {2:3.0f}% | Total {3:.0f}MB".format(gpu.memoryFree, gpu.memoryUsed, gpu.memoryUtil*100, gpu.memoryTotal))
printm()
Je clone yolov5.
!git clone https://github.com/ultralytics/yolov5
J'ai installé les packages nécessaires à l'exécution.
!pip install -r yolov5/requirements.txt
J'ai installé ʻapex`. L'apprentissage sera plus rapide.
!git clone https://github.com/NVIDIA/apex
!pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./apex
Préparation du tensorboard. C'est cool.
# Start tensorboard
%load_ext tensorboard
%tensorboard --logdir runs
Au fait, c'était comme ça après avoir appris 100 époques. 100 ne suffit pas. (J'ai oublié de prendre l'image de la perte.)
Apprendre Les arguments sont écrits en regardant train.py
, mais je vais les expliquer brièvement ici aussi.
#--img: Taille de l'image
#--lot: taille du lot
#--epochs: nombre d'époques.
#--data: fichier de définition de données. Il est créé automatiquement lors du téléchargement des données. C'est simple, alors jetez un œil au contenu.
#--cfg: fichier de configuration du modèle.
#--name: nom du fichier modèle. Le modèle le plus précis après l'entraînement est le meilleur_mask_wearing.Il est enregistré sous pt.
#--poids: Le modèle original pour un réglage fin. Cette fois, nous avons spécifié le modèle pré-entraîné COCO, mais vous pouvez également spécifier le modèle que vous avez appris vous-même.
!python yolov5/train.py --img 416 --batch 16 --epochs 100 --data data/data.yaml --cfg yolov5/models/yolov5x.yaml --name mask_wearing --weights yolov5_models/yolov5x.pt
J'infère. Je n'avais pas une belle image dans les données de test, donc cette fois j'infère les données d'entraînement.
!python yolov5/detect.py --weights weights/best_mask_wearing.pt --img 416 --conf 0.4 --source data/train/images/
Image(filename='/content/drive/My Drive/YOLOv5/inference/output/0_10725_jpg.rf.99ff78c82dadd6d49408164489cb6582.jpg', width=600)
YOLOv5 était trop facile à utiliser.
Vous pouvez apprendre simplement en spécifiant les données et en exécutant train.py
.
De plus, l'augmentation majeure des données se fait automatiquement,
Les paramètres ont également été ajustés un peu.
Il a dit qu'il ressentait un petit sentiment de crise quant à la façon dont les compétences de l'analyste de données pourraient être montrées de cette manière. C'est tout.