YOLOv8 – Comment l’utiliser ? Meilleur Tutoriel

Ultralytics vient de sortir sa dernière version de YOLO : YOLOv8. Dans cet article, on voit en détail comment l’utiliser !

YOLOv8 est la première version de YOLO sortie en 2023, le 10 janvier.

YOLO (You Only Look Once) est un des algorithmes de détection d’objets les plus populaires dans le domaine du Deep Learning.

La première version est sortie en 2016 !

L’idée principale, et qui fait le charme de YOLO, est sa capacité à détecter des objets dans une image en une seul passe.

À l’époque, c’est une avancée majeure car la plupart des algorithmes devait être exécuter à plusieurs reprises sur différentes parties de l’image.

Pourquoi ?

Car ces algorithmes ne pouvait détecter qu’un seul objet à la fois.

Une perte de temps considérable !

Les capacités de YOLO n’ont donc pas tarder à séduire les professionnels.

Et c’est ainsi qu’on a le droit a une nouvelle version de YOLO plusieurs fois par an.

En 2022, on a déjà vu sur Inside Machine Learning :

Je te propose de passer à la version 8.

Mais avant… YOLOv8 vaut-il le coup ?

Je te laisse juger par toi-même avec le graphe de ses performances comparées aux autres versions du modèle :

Et maintenant, voyons comment l’utiliser !

Comment utiliser YOLOv8 ?

Tout d’abord, tu auras besoin de la librairie ultralytics.

Pour l’installer depuis python utilise cette commande :

!pip install ultralytics

Enlève le ! si tu utilise un terminal.

Utiliser sur Python

Pour utiliser YOLOv8 et afficher le résultat, il te faudra les librairies suivantes:

from ultralytics import YOLO
import numpy as np
from PIL import Image
import requests
from io import BytesIO
import cv2

Et si tu es sur Google Colab aussi importe celle-là :

from google.colab.patches import cv2_imshow

Maintenant, on peut charger une version de YOLOv8 pré-entraîné (par défaut ultralytics nous donne la plus récente) :

model = YOLO("yolov8n.pt")

Ensuite, on peut charger une image depuis internet et la transformer en array numpy :

response = requests.get("https://images.unsplash.com/photo-1600880292203-757bb62b4baf?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2070&q=80")
image = Image.open(BytesIO(response.content))
image = np.asarray(image)

Puis, on lance la prédiction sur notre image (cela devrait être rapide, même sans GPU) :

results = model.predict(image)

On a lancé notre prédiction !

La variable results contient la liste des bounding boxes englobant les objets détectés.

Tu peux les voir avec print(results[0].boxes.boxes). Elles sont au format [x1, y1, x2, y2, score, label].

Maintenant, on va afficher nos Bounding Boxes.

Pour ça on utilise notre fonction (courte et simple) qui nous permet d’afficher les bounding boxes avec le label et le score. Je l’ai détaillée dans cet article.

Une fois que tu as copié la fonction, tu peux l’utiliser comme cela :

LA MÉTHODE PARÉ POUR FAIRE DU DEEP LEARNING !

Reçois tes 7 JOURS De Formation GRATUITE Pour Apprendre À Créer TA PREMIÈRE INTELLIGENCE ARTIFICIELLE !

Pendant les 7 prochains jours je vais te montrer comment utiliser les Réseaux de neurones.

Tu vas comprendre ce qu'est le Deep Learning avec des exemples concrets qui vont te rester dans la tête.

ATTENTION, cette série d’email ne s’adresse pas à tout le monde. Si tu es du genre à aimer les cours théoriques et scolaires tu peux passer ta route.

Mais si tu souhaite apprendre la méthode PARÉ pour faire du Deep Learning, clique ici :

plot_bboxes(image, results[0].boxes.boxes, score=False)
YOLOv8 prédictions

On obtient un bon paquet d’objets.

Certains sont pertinents.

D’autres, ne le sont pas.

Comme la chaise au fond à gauche.

En fait, le modèle n’a pas détecter tout ces objets avec le même score de confiance.

On peut filtrer ces objets selon ce score.

Par exemple, on peut afficher uniquement les bounding boxes ayant un score supérieur à 85%.

Ainsi, tous les objets détectés avec un score inférieur ne seront pas affichés.

Pour filter selon le score de confiance, on indique conf=0.85 :

plot_bboxes(image, results[0].boxes.boxes, score=False, conf=0.85)
YOLOv8 prédictions – seuil de confiance 0.85%

YOLOv8 détecte les deux personnes avec un score supérieur à 85%, pas mal ! ☄️

Utiliser sur Terminal

Ultralytics te permet aussi d’utiliser YOLOv8 sans passer par Python, directement dans un terminal de commande.

Dans ce cas, tu as plusieurs options:

1. YOLOv8 sur une seule image

Tout d’abord tu peux utiliser YOLOv8 sur une seule image, comme vu précédemment en Python.

Pour cela tu as seulement besoin d’utiliser la commande suivante.

yolo task=detect mode=predict model=yolov8n.pt conf=0.25 source='/content/photo.jpeg'
  • conf – indique le seuil de confiance pour accepter une Bounding Box (ici le score doit être au minimum égale à 25%)
  • source – indique l’URL, ou le chemin de ton image si tu l’as en local

Le résultat est dans /runs/detect/predict/.

2. YOLOv8 sur un dossier d’images

Ensuite, tu peux aussi utiliser YOLOv8 directement sur un dossier contenant des images.

Pour cela, tu as seulement à indiquer le chemin de ton dossier contenant les images dans source.

yolo task=detect mode=predict model=yolov8n.pt conf=0.25 source='/img_dossier/'

Si tu as exécuté la commande précédente, le résultat sera dans /runs/detect/predict2/.

Ré-entraîner YOLOv8

Pour finir tu peux aussi ré-entraîner YOLOv8.

Pour cela, charge le model yolov8n.yaml. C’est une version non-entrainée du modèle :

from ultralytics import YOLO

model = YOLO("yolov8n.yaml")

Ensuite, tu peux entraîné ton modèle sur le dataset COCO comme ceci :

results = model.train(data="coco128.yaml", epochs=3)

Puis l’évaluer sur ton dataset :

results = model.val(data=your_data)

Et lancer des prédictions sur de nouvelles images (comme vu précédemment) :

results = model.predict("https://images.unsplash.com/photo-1600880292203-757bb62b4baf?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2070&q=80")

Finalement, tu peux aussi enregistrer ton nouveau modèle au format ONNX :

success = model.export(format="onnx")

Tu as maintenant tout ce qu’il te faut pour utiliser YOLOv8 !

Bonne chance pour ton projet de Vision par Ordinateur.

À bientôt sur Inside Machine Learning 😉

source :

LA MÉTHODE PARÉ POUR FAIRE DU DEEP LEARNING !

Reçois tes 7 JOURS De Formation GRATUITE Pour Apprendre À Créer TA PREMIÈRE INTELLIGENCE ARTIFICIELLE !

Pendant les 7 prochains jours je vais te montrer comment utiliser les Réseaux de neurones.

Tu vas comprendre ce qu'est le Deep Learning avec des exemples concrets qui vont te rester dans la tête.

ATTENTION, cette série d’email ne s’adresse pas à tout le monde. Si tu es du genre à aimer les cours théoriques et scolaires tu peux passer ta route.

Mais si tu souhaite apprendre la méthode PARÉ pour faire du Deep Learning, clique ici :

Tom Keldenich
Tom Keldenich

Data Engineer & passionné d'Intelligence Artificielle !

Fondateur du site Inside Machine Learning

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Enter your email to receive for free

The PANE method for Deep Learning

* indicates required

 

You will receive one email per day for 7 days – then you will receive my newsletter.
Your information will never be given to third parties.

You can unsubscribe in 1 click from any of my emails.

Entre ton email pour recevoir gratuitement
la méthode PARÉ pour faire du Deep Learning


Tu recevras un email par jour pendant 7 jours - puis tu recevras ma newsletter.
Tes informations ne seront jamais cédées à des tiers.

Tu peux te désinscrire en 1 clic depuis n'importe lequel de mes emails.