La reconnaissance d'image de YOLOv8 est exceptionnelle, mais la formation du modèle est une tâche importante à ne pas négliger.
YOLOv8 est un algorithme de détection d'objets en temps réel largement utilisé dans le domaine de la détection d'objets. Il fait partie de la série You Only Look Once (YOLO) développée par Ultralytics. L'algorithme suit, détecte, segmente les instances, estime la pose et classe les objets dans les images et les vidéos. Il vise à être plus rapide et plus précis que ses prédécesseurs algorithmes.
L'utilisation de YOLOv8 sur des ensembles de données expérimentaux comme CIFAR-10 et CIFAR-100 est souvent plus facile pour les projets de preuve de concept (POC) que sur des ensembles de données réels qui nécessitent des ensembles de données personnalisés.
Ce didacticiel vous guidera à travers les étapes de formation de YOLOv8 sur des données personnalisées.
Configuration de l'environnement Python
Commencez par installer l'environnement de développement du projet en suivant les instructions ci-dessous.
- Allez dans le terminal et créez un nouveau répertoire nommé yolov8project:
mkdir yolov8project
- Accédez au répertoire du projet et créer un environnement virtuel:
cd yolov8project
python -m venv env - Ensuite, activez l'environnement virtuel.
Pour exécuter votre code, vous devez installer Ultralytics, une bibliothèque de détection d'objets et de segmentation d'images. C'est aussi une dépendance YOLOv8. Installez-le en utilisant pip en exécutant la commande ci-dessous.# Sous Windows
env/Scripts/activer# Sous Linux/macOS
source env/bin/activerpip installer ultralytics
- Cette commande installe le modèle pré-formé du YOLOv8, yolov8n.pt. Testez le modèle en exécutant les commandes ci-dessous pour effectuer une détection avec des poids pré-formés sur l'image ou la vidéo choisie respectivement à l'aide de YOLOv8.
Si tout fonctionne parfaitement, les résultats seront disponibles dans le yolov8project répertoire dans le exécute/détecte/exp sous-répertoire.#détection d'images
yolo task=detect mode=predict model=yolov8n.pt source="path/to/image.png"#détection vidéo
yolo task=detect mode=predict model=yolov8n.pt source="path/to/video.mp4"
Préparation de votre jeu de données personnalisé
Les étapes de préparation de votre jeu de données personnalisé incluent la collecte de données, l'étiquetage des données et la division des données (formation, test, validation).
Collecte de données
Il s'agit du processus de collecte d'un ensemble d'images contenant les objets que vous souhaitez détecter. Assurez-vous d'utiliser des images de haute qualité, nettes et les objets sont clairement visibles. Vous pouvez utiliser divers outils pour collecter des images, tels que Google Images, Flickr ou votre propre appareil photo. Si vous n'avez pas d'ensemble de données d'image, utilisez l'ensemble de données du images ouvertes base de données. Cet article utilisera l'image de sécurité du chantier ensemble de données de Kaggle.
Étiquetage des données
Après avoir collecté vos images, vous devez les étiqueter. Cela signifie identifier les objets dans chaque image et leurs boîtes englobantes. Plusieurs outils sont disponibles pour vous aider à étiqueter vos données, tels que LabelImg, CVAT et Roboflow. Ces outils sont tous gratuits.
Fractionner les données
Pour former des modèles d'apprentissage automatique, vous devez diviser vos données en ensembles d'apprentissage et de test. Essayez d'utiliser un ratio de partage de 70 % à 30 % lorsque vous utilisez de grandes quantités de données. Sinon, respectez 80 % à 20 % pour éviter de surajuster ou de sous-ajuster votre modèle.
Utiliser dossiers divisés, pour diviser de manière aléatoire vos données en ensembles d'entraînement, de test et de validation avec le rapport de division souhaité.
Configuration de YOLOv8 pour votre jeu de données
Après avoir étiqueté vos données, procédez à la configuration de YOLOv8 pour votre jeu de données personnalisé. Cela implique la création d'un fichier de configuration qui spécifie les éléments suivants :
- Le chemin d'accès à vos données d'entraînement.
- Chemin d'accès à vos données de validation.
- Le nombre de classes que vous souhaitez détecter.
Créez un fichier config.yaml pour stocker la configuration :
chemin:(base de donnéesannuairechemin)
former:(formerbase de donnéesdossierchemin)
test:(testbase de donnéesdossierchemin)
valide:(validationbase de donnéesdossierchemin)# Des classes
NC:5# remplacer en fonction du nombre de classes de votre ensemble de données
# Noms de classe
# remplacez tous les noms de classes par les noms de vos propres classes
des noms:['classe1','classe2','classe3','classe4','classe5']
La création du fichier de configuration est un moyen utile de structurer et de stocker les paramètres cruciaux de votre modèle de vision par ordinateur. Assurez-vous de mettre à jour le fichier config.yaml en fonction de la nature et de la structure de votre jeu de données.
Assurez-vous d'utiliser les chemins d'accès corrects pour vos ensembles de données, car la formation du modèle repose entièrement sur le fichier de configuration.
Formation YOLOv8 sur les données personnalisées
Une fois que vous avez créé le fichier de configuration, commencez à former YOLOv8. Utilisez l'outil de ligne de commande YOLOv8 pour entraîner votre modèle. L'outil de ligne de commande prend plusieurs paramètres, tels que le chemin d'accès au fichier de configuration, le nombre d'époques et la taille de l'image comme suit :
yolo task=detect mode=train model=yolov8n.pt data=path/to/config.yaml epochs=10 imgsz=640
Il y a plusieurs parties dans cette commande.
tâche définit le type de tâche: détecter, segmenter ou classer. mode représente une action: entraîner, prédire, évaluer, exporter, suivre ou comparer. modèle est le modèle à utiliser, dans ce cas, yolov8n.pt. Vous pouvez également utiliser yolov8s/yolov8l/yolov8x.
époques représente le nombre de tours d'entraînement (10). imgsz représente la taille de l'image (640). La taille de l'image doit toujours être définie sur un multiple de 32.
Voici un exemple de sortie à laquelle vous pouvez vous attendre :
Le temps utilisé pour la formation dépend de la taille de votre ensemble de données, du nombre d'époques et du nombre de classes que vous souhaitez détecter. Une fois le processus de formation terminé, vous disposerez d'un modèle YOLOv8 formé que vous utiliserez pour détecter des objets dans des images et des vidéos.
Une fois l'entraînement terminé, faites une inférence avec les nouveaux poids, best.pt
yolo task=detect mode=predict model="runs/train/weights/best.pt" source="image.png"
Naviguez vers le courses/train/exp/weights/best.pt répertoire pour accéder aux poids formés sur mesure. YOLOv8 aura stocké l'image prédite dans le exécute/détecte/exp sous-répertoire.
Évaluation des performances du modèle
Vous pouvez évaluer les performances du modèle YOLOv8 à l'aide de la commande suivante qui évalue le modèle sur un ensemble d'images de test :
yolo val model=yolov8n.pt data=path/to/config.yaml batch=1 imgsz=640
Les résultats attendus sont les suivants :
Le processus d'évaluation générera diverses mesures, telles que la précision, le rappel et le score F1. La métrique de précision mesure le pourcentage d'objets correctement détectés. La métrique de rappel mesure le pourcentage d'objets détectés par YOLOv8. Le score F1 est une moyenne pondérée des mesures de précision et de rappel.
Déploiement de votre modèle YOLOv8 personnalisé
Testez les performances de votre modèle YOLOv8.
yolo détecter prédire model=path/to/best.pt source='path/to/image.jpg'
La sortie est la suivante :
Ensuite, enregistrez les poids du modèle dans un fichier.
yolo export model=path/to/best.pt format=onnx
Utilisez le fichier pour charger le modèle dans votre application et utilisez-le pour détecter des objets en temps réel. Si vous déployez le modèle sur un service cloud, utilisez le service cloud pour détecter des objets dans les images et les vidéos qui se trouvent sur le service.
YOLOv8 À emporter
L'équipe Ultralytics a continuellement amélioré les modèles de la série YOLO. Cela en a fait des leaders de l'industrie dans la technologie de détection d'objets et dans le domaine de la vision par ordinateur.
Le YOLOv8 est un modèle amélioré que vous pouvez utiliser pour gérer de nombreux types de projets de vision par ordinateur.