Aller au contenu

Détection d'Objets

Exemples de détection d'objets

La détection d'objets est une tâche qui implique l'identification de l'emplacement et de la classe des objets dans une image ou un flux vidéo.

La sortie d'un détecteur d'objets est un ensemble de boîtes englobantes qui entourent les objets de l'image, accompagnées de libellés de classe et de scores de confiance pour chaque boîte. La détection d'objets est un bon choix lorsque vous avez besoin d'identifier des objets d'intérêt dans une scène, mais que vous n'avez pas besoin de connaître exactement où se trouve l'objet ou sa forme exacte.



Regardez : Détection d'Objets avec le Modèle Pré-entraîné Ultralytics YOLOv8.

Conseil

Les modèles Detect YOLOv8 sont les modèles YOLOv8 par défaut, c.-à-d. yolov8n.pt et sont pré-entraînés sur le jeu de données COCO.

Modèles

Les modèles pré-entraînés Detect YOLOv8 sont présentés ici. Les modèles Detect, Segment, et Pose sont pré-entraînés sur le jeu de données COCO, tandis que les modèles Classify sont pré-entraînés sur le jeu de données ImageNet.

Les modèles se téléchargent automatiquement à partir de la dernière version d'Ultralytics lors de la première utilisation.

Modèle Taille
(pixels)
mAPval
50-95
Vitesse
CPU ONNX
(ms)
Vitesse
A100 TensorRT
(ms)
Paramètres
(M)
FLOPs
(B)
YOLOv8n 640 37.3 80.4 0.99 3.2 8.7
YOLOv8s 640 44.9 128.4 1.20 11.2 28.6
YOLOv8m 640 50.2 234.7 1.83 25.9 78.9
YOLOv8l 640 52.9 375.2 2.39 43.7 165.2
YOLOv8x 640 53.9 479.1 3.53 68.2 257.8
  • Les valeurs de mAPval sont pour un seul modèle à une seule échelle sur le jeu de données COCO val2017.
    Reproductible avec yolo val detect data=coco.yaml device=0
  • La Vitesse est moyennée sur les images COCO val en utilisant une instance Amazon EC2 P4d.
    Reproductible avec yolo val detect data=coco128.yaml batch=1 device=0|cpu

Entraînement

Entraînez le modèle YOLOv8n sur le jeu de données COCO128 pendant 100 époques à la taille d'image de 640. Pour une liste complète des arguments disponibles, consultez la page Configuration.

Exemple

from ultralytics import YOLO

# Charger un modèle
model = YOLO('yolov8n.yaml')  # construire un nouveau modèle à partir de YAML
model = YOLO('yolov8n.pt')  # charger un modèle pré-entraîné (recommandé pour l'entraînement)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # construire à partir de YAML et transférer les poids

# Entraîner le modèle
results = model.train(data='coco128.yaml', epochs=100, imgsz=640)
# Construire un nouveau modèle à partir de YAML et commencer l'entraînement à partir de zéro
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640

# Commencer l'entraînement à partir d'un modèle *.pt pré-entraîné
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

# Construire un nouveau modèle à partir de YAML, transférer les poids pré-entraînés et commencer l'entraînement
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

Format des données

Le format des jeux de données de détection YOLO est détaillé dans le Guide des Jeux de Données. Pour convertir votre jeu de données existant depuis d'autres formats (comme COCO, etc.) vers le format YOLO, veuillez utiliser l'outil JSON2YOLO par Ultralytics.

Validation

Validez la précision du modèle YOLOv8n entraîné sur le jeu de données COCO128. Aucun argument n'est nécessaire puisque le modèle conserve ses données d'entraînement et arguments en tant qu'attributs du modèle.

Exemple

from ultralytics import YOLO

# Charger un modèle
model = YOLO('yolov8n.pt')  # charger un modèle officiel
model = YOLO('chemin/vers/best.pt')  # charger un modèle personnalisé

# Valider le modèle
metrics = model.val()  # pas d'arguments nécessaires, jeu de données et paramètres enregistrés
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # une liste contenant map50-95 de chaque catégorie
yolo detect val model=yolov8n.pt  # valider le modèle officiel
yolo detect val model=chemin/vers/best.pt  # valider le modèle personnalisé

Prédiction

Utilisez un modèle YOLOv8n entraîné pour exécuter des prédictions sur des images.

Exemple

from ultralytics import YOLO

# Charger un modèle
model = YOLO('yolov8n.pt')  # charger un modèle officiel
model = YOLO('chemin/vers/best.pt')  # charger un modèle personnalisé

# Prédire avec le modèle
results = model('https://ultralytics.com/images/bus.jpg')  # prédire sur une image
yolo detect predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'  # prédire avec le modèle officiel
yolo detect predict model=chemin/vers/best.pt source='https://ultralytics.com/images/bus.jpg'  # prédire avec le modèle personnalisé

Consultez les détails complets du mode predict sur la page Prédire.

Exportation

Exportez un modèle YOLOv8n dans un format différent tel que ONNX, CoreML, etc.

Exemple

from ultralytics import YOLO

# Charger un modèle
model = YOLO('yolov8n.pt')  # charger un modèle officiel
model = YOLO('chemin/vers/best.pt')  # charger un modèle entraîné personnalisé

# Exporter le modèle
model.export(format='onnx')
yolo export model=yolov8n.pt format=onnx  # exporter le modèle officiel
yolo export model=chemin/vers/best.pt format=onnx  # exporter le modèle entraîné personnalisé

Les formats d'exportation YOLOv8 disponibles sont présentés dans le tableau ci-dessous. Vous pouvez directement prédire ou valider sur des modèles exportés, c'est-à-dire yolo predict model=yolov8n.onnx. Des exemples d'utilisation sont présentés pour votre modèle après l'exportation complète.

Format Argument format Modèle Métadonnées Arguments
PyTorch - yolov8n.pt -
TorchScript torchscript yolov8n.torchscript imgsz, optimize
ONNX onnx yolov8n.onnx imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n_openvino_model/ imgsz, half
TensorRT engine yolov8n.engine imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n.mlpackage imgsz, half, int8, nms
Modèle TF Enregistré saved_model yolov8n_saved_model/ imgsz, keras
GraphDef TF pb yolov8n.pb imgsz
TF Lite tflite yolov8n.tflite imgsz, half, int8
TPU Edge TF edgetpu yolov8n_edgetpu.tflite imgsz
TF.js tfjs yolov8n_web_model/ imgsz
PaddlePaddle paddle yolov8n_paddle_model/ imgsz
ncnn ncnn yolov8n_ncnn_model/ imgsz, half

Consultez tous les détails export sur la page Exporter.


Created 2023-11-13, Updated 2023-11-18
Authors: glenn-jocher (4)

Commentaires