Skip to content

Ultralytics Docs : Utilisation de YOLO11 avec SAHI pour l'inférence en tranches

Ultralytics Bienvenue dans la documentation sur l'utilisation de YOLO11 avec SAHI (Slicing Aided Hyper Inference). Ce guide complet a pour but de vous fournir toutes les connaissances essentielles dont vous aurez besoin pour mettre en œuvre SAHI avec YOLO11. Nous examinerons en profondeur ce qu'est SAHI, pourquoi l'inférence en tranches est essentielle pour les applications à grande échelle et comment intégrer ces fonctionnalités à YOLO11 pour améliorer les performances de la détection d'objets.

Aperçu de l'inférence en tranches SAHI

Introduction Ă  SAHI

SAHI (Slicing Aided Hyper Inference) est une bibliothèque innovante conçue pour optimiser les algorithmes de détection d'objets pour les images à grande échelle et à haute résolution. Sa fonctionnalité principale consiste à partitionner les images en tranches gérables, à exécuter la détection d'objets sur chaque tranche, puis à assembler les résultats. SAHI est compatible avec une série de modèles de détection d'objets, y compris la série YOLO , offrant ainsi une grande flexibilité tout en garantissant une utilisation optimisée des ressources informatiques.



Regarder : Inférence avec SAHI (Slicing Aided Hyper Inference) à l'aide de Ultralytics YOLO11

Caractéristiques principales de SAHI

  • IntĂ©gration transparente: SAHI s'intègre sans effort aux modèles YOLO , ce qui signifie que vous pouvez commencer Ă  dĂ©couper et Ă  dĂ©tecter sans avoir Ă  modifier le code.
  • EfficacitĂ© des ressources: En dĂ©composant les grandes images en parties plus petites, SAHI optimise l'utilisation de la mĂ©moire, ce qui vous permet d'exĂ©cuter une dĂ©tection de haute qualitĂ© sur du matĂ©riel disposant de ressources limitĂ©es.
  • Haute prĂ©cision: SAHI maintient la prĂ©cision de la dĂ©tection en employant des algorithmes intelligents pour fusionner les zones de dĂ©tection qui se chevauchent pendant le processus d'assemblage.

Qu'est-ce que l'inférence en tranches ?

L'inférence par tranches consiste à subdiviser une image de grande taille ou à haute résolution en segments plus petits (tranches), à procéder à la détection d'objets sur ces tranches, puis à recompiler les tranches pour reconstruire l'emplacement des objets sur l'image d'origine. Cette technique est inestimable dans les scénarios où les ressources informatiques sont limitées ou lorsque l'on travaille avec des images à très haute résolution qui pourraient autrement entraîner des problèmes de mémoire.

Avantages de l'inférence en tranches

  • RĂ©duction de la charge de calcul: Les tranches d'images plus petites sont plus rapides Ă  traiter et consomment moins de mĂ©moire, ce qui permet un fonctionnement plus fluide sur du matĂ©riel bas de gamme.

  • QualitĂ© de dĂ©tection prĂ©servĂ©e: Comme chaque tranche est traitĂ©e indĂ©pendamment, la qualitĂ© de la dĂ©tection des objets ne diminue pas, Ă  condition que les tranches soient suffisamment grandes pour capturer les objets d'intĂ©rĂŞt.

  • AmĂ©lioration de l'Ă©volutivitĂ©: La technique permet d'adapter plus facilement la dĂ©tection d'objets Ă  diffĂ©rentes tailles et rĂ©solutions d'images, ce qui la rend idĂ©ale pour un large Ă©ventail d'applications allant de l'imagerie satellitaire au diagnostic mĂ©dical.

YOLO11 sans SAHI YOLO11 avec SAHI
YOLO11 sans SAHI YOLO11 avec SAHI

Installation et préparation

Installation

Pour commencer, installez les dernières versions de SAHI et de Ultralytics:

pip install -U ultralytics sahi

Importer des modules et télécharger des ressources

Voici comment importer les modules nécessaires et télécharger un modèle YOLO11 et quelques images de test :

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_model(model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
    "demo_data/terrain2.png",
)

Inférence standard avec YOLO11

Instancier le modèle

Vous pouvez instancier un modèle YOLO11 pour la détection d'objets de la manière suivante :

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="yolov8",
    model_path=yolov8_model_path,
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

Effectuer une prédiction standard

Effectuer une inférence standard à l'aide d'un chemin d'image ou d'une image numpy.

from sahi.predict import get_prediction

# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# With a numpy image
result = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

Visualiser les résultats

Exporter et visualiser les boîtes de délimitation et les masques prédits :

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Inférence en tranches avec YOLO11

Effectuer une inférence en tranches en spécifiant les dimensions des tranches et les taux de chevauchement :

from sahi.predict import get_sliced_prediction

result = get_sliced_prediction(
    "demo_data/small-vehicles1.jpeg",
    detection_model,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Traitement des résultats de la prédiction

SAHI fournit un PredictionResult qui peut être converti dans différents formats d'annotation :

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3]

Prédiction par lot

Pour la prédiction par lots sur un répertoire d'images :

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolo11n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Voilà, c'est fait ! Vous êtes maintenant équipé pour utiliser YOLO11 avec SAHI pour l'inférence standard et l'inférence en tranches.

Citations et remerciements

Si vous utilisez SAHI dans vos travaux de recherche ou de développement, veuillez citer l'article original de SAHI et remercier les auteurs :

@article{akyon2022sahi,
  title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
  author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
  journal={2022 IEEE International Conference on Image Processing (ICIP)},
  doi={10.1109/ICIP46576.2022.9897990},
  pages={966-970},
  year={2022}
}

Nous remercions le groupe de recherche SAHI d'avoir créé et maintenu cette ressource inestimable pour la communauté de la vision par ordinateur. Pour plus d'informations sur SAHI et ses créateurs, visitez le dépôt GitHub de SAHI.

FAQ

Comment puis-je intégrer YOLO11 avec SAHI pour l'inférence en tranches dans la détection d'objets ?

L'intégration de Ultralytics YOLO11 avec SAHI (Slicing Aided Hyper Inference) pour l'inférence en tranches optimise vos tâches de détection d'objets sur des images haute résolution en les divisant en tranches gérables. Cette approche améliore l'utilisation de la mémoire et garantit une grande précision de détection. Pour commencer, vous devez installer les bibliothèques ultralytics et sahi :

pip install -U ultralytics sahi

Téléchargez ensuite un modèle YOLO11 et des images de test :

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_model(model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)

Pour des instructions plus détaillées, reportez-vous à notre guide sur l'inférence en tranches.

Pourquoi utiliser SAHI avec YOLO11 pour la détection d'objets sur de grandes images ?

L'utilisation de SAHI avec Ultralytics YOLO11 pour la détection d'objets sur de grandes images offre plusieurs avantages :

  • RĂ©duction de la charge de calcul: Les petites tranches sont plus rapides Ă  traiter et consomment moins de mĂ©moire, ce qui permet d'exĂ©cuter des dĂ©tections de haute qualitĂ© sur du matĂ©riel aux ressources limitĂ©es.
  • PrĂ©cision de dĂ©tection maintenue: SAHI utilise des algorithmes intelligents pour fusionner les boĂ®tes qui se chevauchent, prĂ©servant ainsi la qualitĂ© de la dĂ©tection.
  • AmĂ©lioration de l'Ă©volutivitĂ©: En adaptant les tâches de dĂ©tection d'objets Ă  diffĂ©rentes tailles et rĂ©solutions d'images, SAHI devient idĂ©al pour diverses applications, telles que l'analyse d'images satellitaires et les diagnostics mĂ©dicaux.

Pour en savoir plus sur les avantages de l'inférence en tranches, consultez notre documentation.

Puis-je visualiser les résultats des prédictions lorsque j'utilise YOLO11 avec SAHI ?

Oui, vous pouvez visualiser les résultats des prédictions lorsque vous utilisez YOLO11 avec SAHI. Voici comment exporter et visualiser les résultats :

from IPython.display import Image

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Cette commande enregistre les prédictions visualisées dans le répertoire spécifié et vous pouvez ensuite charger l'image pour la visualiser dans votre carnet de notes ou votre application. Pour un guide détaillé, consultez la section Inférence standard.

Quelles sont les fonctionnalités offertes par SAHI pour améliorer la détection des objets sur YOLO11 ?

SAHI (Slicing Aided Hyper Inference) offre plusieurs fonctionnalités qui complètent Ultralytics YOLO11 pour la détection d'objets :

  • IntĂ©gration transparente: SAHI s'intègre facilement aux modèles YOLO , nĂ©cessitant un minimum d'ajustements du code.
  • EfficacitĂ© des ressources: Il divise les grandes images en tranches plus petites, ce qui optimise l'utilisation de la mĂ©moire et la vitesse.
  • PrĂ©cision Ă©levĂ©e: en fusionnant efficacement les boĂ®tes de dĂ©tection qui se chevauchent pendant le processus d'assemblage, SAHI maintient une prĂ©cision de dĂ©tection Ă©levĂ©e.

Pour en savoir plus, lisez les principales caractéristiques de SAHI.

Comment gérer des projets d'inférence à grande échelle en utilisant YOLO11 et SAHI ?

Pour gérer des projets d'inférence à grande échelle à l'aide de YOLO11 et de SAHI, il convient de suivre les meilleures pratiques suivantes :

  1. Installer les bibliothèques requises: Assurez-vous que vous disposez des dernières versions de ultralytics et de sahi.
  2. Configurer l'inférence en tranches: Déterminez les dimensions optimales des tranches et les ratios de chevauchement pour votre projet spécifique.
  3. Exécuter des prédictions par lots: Utilisez les capacités de SAHI pour effectuer des prédictions par lots sur un répertoire d'images, ce qui améliore l'efficacité.

Exemple de prédiction par lots :

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolo11n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Pour plus de détails, consultez notre section sur la prédiction par lots.

📅C réé il y a 1 an ✏️ Mis à jour il y a 2 mois

Commentaires