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.data). 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 :

plot_bboxes(image, results[0].boxes.data, 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.

Au fait, si ton objectif est d'apprendre le Deep Learning - j’ai préparé pour toi le Plan d’action pour Maîtriser les Réseaux de neurones.

7 jours de conseils gratuits d’un ingénieur spécialisé en Intelligence Artificielle pour apprendre à maîtriser les réseaux de neurones à partir de zéro :

  • Planifie ton apprentissage
  • Structure tes projets
  • Développe tes algorithmes d’Intelligence Artificielle

J’ai basé ce programme sur des faits scientifiques, des approches éprouvées par des chercheurs mais également mes propres techniques que j'ai conçues au fil de mes expériences dans le domaine du Deep Learning.

Pour y accéder, clique ici :

RECEVOIR MON PLAN D'ACTION

RECEVOIR MON PLAN D'ACTION

À présent, on peut revenir à ce que je mentionnais précédemment.

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.data, 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 quasiment tout ce qu’il te faut pour utiliser YOLO v8.

En effet, peut-être qu’en plus de détecter des objets sur une photo, tu aimerais maintenant apprendre à utiliser ce modèle de pointe sur des vidéos pré-enregistrées.

Peut-être même que tu souhaiterais l’utiliser en temps réel sur un flux vidéo continu.

Il est tout à fait possible d’utiliser YOLO v8 pour ces cas, si ça t’intéresse, j’ai créé la mini-formation gratuite Détection d’Objets Tout-Terrain qui te permettra d’apprendre tout cela :

débloquer ma formation !

source :

Mise-à-jour 06/09/23 :

  • Pour accéder au bounding boxes, utilise results[0].boxes.data au lieu de results[0].boxes.boxes

Un dernier mot, si tu veux aller plus loin et apprendre le Deep Learning - j’ai préparé pour toi le Plan d’action pour Maîtriser les Réseaux de neurones.

7 jours de conseils gratuits d’un ingénieur spécialisé en Intelligence Artificielle pour apprendre à maîtriser les réseaux de neurones à partir de zéro :

  • Planifie ton apprentissage
  • Structure tes projets
  • Développe tes algorithmes d’Intelligence Artificielle

J’ai basé ce programme sur des faits scientifiques, des approches éprouvées par des chercheurs mais également mes propres techniques que j'ai conçues au fil de mes expériences dans le domaine du Deep Learning.

Pour y accéder, clique ici :

RECEVOIR MON PLAN D'ACTION

RECEVOIR MON PLAN D'ACTION

Tom Keldenich
Tom Keldenich

Ingénieur spécialisé en Intelligence Artificielle et passionné de données !

Fondateur du site Inside Machine Learning

5 commentaires

    • Bonjour Juliette,

      Lis l’article 😉

      « 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. »

      Bonne journée à toi,
      Tom

  1. je me suis retrouvée, merci beaucoup. S’il vous plaît, je pourrai savoir comment modifier la solution pour détecter les objets dans une video plutôt que dans une image?

    • Hello Juliette,

      J’ai récemment fait une formation sur YOLO pour apprendre à l’utiliser sur des vidéos pré-enregistrées ainsi que des flux vidéos en temps réel. Ce que tu y apprendras s’applique à YOLO mais également à n’importe quel modèle de Deep Learning. Tu peux y accéder gratuitement en cliquant sur le bouton vert en fin d’article « Débloquer ma formation ».

      Bonne journée,
      Tom

Laisser un commentaire

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

This page will not stay online forever

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.