Utiliser YOLO26 avec SAHI pour l’inférence par découpage#
Ce guide explique comment utiliser YOLO26 avec SAHI (Slicing Aided Hyper Inference). Nous allons examiner en détail ce qu’est SAHI, pourquoi l’inférence par découpage est essentielle pour les applications à grande échelle et comment intégrer ces fonctionnalités à YOLO26 pour améliorer les performances de la détection d’objets.
Présentation de SAHI#
SAHI (Slicing Aided Hyper Inference) est une bibliothèque innovante conçue pour optimiser les algorithmes de détection d’objets sur des images de grande taille et haute résolution. Sa principale fonctionnalité consiste à diviser les images en portions de taille raisonnable, à effectuer la détection d’objets sur chaque portion, puis à assembler les résultats. SAHI est compatible avec un éventail de modèles de détection d’objets, dont la série YOLO, offrant ainsi de la flexibilité tout en optimisant l’utilisation des ressources de calcul.
À regarder : Comment utiliser SAHI avec Ultralytics YOLO26 pour détecter les petits objets | Inférence haute résolution assistée par découpage 🚀
Principales fonctionnalités de SAHI#
- Intégration transparente : SAHI s’intègre facilement aux modèles YOLO. Tu peux donc commencer à découper les images et à effectuer la détection sans modifier beaucoup de code.
- Efficacité des ressources : en divisant les grandes images en portions plus petites, SAHI optimise l’utilisation de la mémoire et te permet d’effectuer des détections de haute qualité sur du matériel aux ressources limitées.
- Grande précision : SAHI maintient la précision de détection grâce à des algorithmes intelligents qui fusionnent les boîtes de détection qui se chevauchent lors de l’assemblage.
Qu’est-ce que l’inférence par découpage ?#
L’inférence par découpage consiste à subdiviser une image de grande taille ou haute résolution en segments plus petits (des portions), à effectuer la détection d’objets sur ces portions, puis à les réassembler afin de reconstituer l’emplacement des objets dans l’image d’origine. Cette technique est précieuse lorsque les ressources de calcul sont limitées ou que tu travailles avec des images extrêmement haute résolution qui pourraient autrement entraîner des problèmes de mémoire.
Avantages de l’inférence par découpage#
-
Charge de calcul réduite : les portions d’image plus petites sont plus rapides à traiter et consomment moins de mémoire, ce qui permet un fonctionnement plus fluide sur du matériel moins puissant.
-
Qualité de détection préservée : chaque portion étant traitée indépendamment, la qualité de la détection d’objets n’est pas réduite, à condition que les portions soient assez grandes pour contenir les objets recherchés.
-
Évolutivité accrue : cette technique facilite la mise à l’échelle de la détection d’objets pour différentes tailles et résolutions d’image. Elle convient donc à un large éventail d’applications, de l’imagerie satellite au diagnostic médical.
| YOLO26 sans SAHI | YOLO26 avec SAHI |
|---|---|
![]() | ![]() |
Installation et préparation#
Installation#
Pour commencer, installe les dernières versions de SAHI et d’Ultralytics :
pip install -U ultralytics sahiImporter les modules et télécharger les ressources#
Voici comment télécharger quelques images de test :
from sahi.utils.file import download_from_url
# Télécharger les images de test
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 YOLO26#
Instancier le modèle#
Tu peux instancier un modèle YOLO26 pour la détection d’objets comme ceci :
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="ultralytics",
model_path="yolo26n.pt",
confidence_threshold=0.3,
device="cpu", # ou 'cuda:0'
)Effectuer une prédiction standard#
Effectue une inférence standard à partir du chemin d’une image.
from sahi.predict import get_prediction
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)
result.export_visuals(export_dir="demo_data/", hide_conf=True)Visualiser les résultats#
Exporter et visualiser les boîtes englobantes et les masques prédits :
from PIL import Image
# Ouvrir l’image prédite
processed_image = Image.open("demo_data/prediction_visual.png")
# Afficher l’image prédite
processed_image.show()Inférence par découpage avec YOLO26#
Effectue une inférence par découpage en indiquant les dimensions des portions et les taux de chevauchement :
from PIL import Image
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,
)
# Exporter les résultats
result.export_visuals(export_dir="demo_data/", hide_conf=True)
# Ouvrir l’image prédite
processed_image = Image.open("demo_data/prediction_visual.png")
# Afficher l’image prédite
processed_image.show()Gérer les résultats de prédiction#
SAHI fournit un objet PredictionResult, qui peut être converti en différents formats d’annotation :
# Accéder à la liste des prédictions d’objets
object_prediction_list = result.object_prediction_list
# Convertir aux formats d’annotation COCO et de prédiction COCO
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]Prédiction par lots#
Pour effectuer des prédictions par lots sur un répertoire d’images :
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="yolo26n.pt",
model_device="cpu", # ou '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,
)Tu peux maintenant utiliser YOLO26 avec SAHI pour l’inférence standard comme pour l’inférence par découpage.
Citations et remerciements#
Si tu utilises SAHI dans tes travaux de recherche ou de développement, cite l’article original sur SAHI et remercie ses 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 chaleureusement le groupe de recherche SAHI d’avoir créé et maintenu cette ressource précieuse pour la communauté de la vision par ordinateur. Pour en savoir plus sur SAHI et ses créateurs, consulte le dépôt GitHub de SAHI.
FAQ#
L’intégration d’Ultralytics YOLO26 à SAHI (Slicing Aided Hyper Inference) pour l’inférence par découpage optimise tes tâches de détection d’objets sur des images haute résolution en les divisant en portions de taille raisonnable. Cette approche améliore l’utilisation de la mémoire et garantit une grande précision de détection. Pour commencer, tu dois installer les bibliothèques ultralytics et sahi :
pip install -U ultralytics sahiTélécharge ensuite des images de test :
from sahi.utils.file import download_from_url # Télécharger les images de test 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", )Pour obtenir des instructions plus détaillées, consulte notre guide sur l’inférence par découpage.
L’utilisation de SAHI avec Ultralytics YOLO26 pour détecter des objets dans de grandes images présente plusieurs avantages :
- Charge de calcul réduite : les portions plus petites sont plus rapides à traiter et consomment moins de mémoire. Il devient ainsi possible d’effectuer des détections de haute qualité sur du matériel aux ressources limitées.
- Précision de détection préservée : SAHI utilise des algorithmes intelligents pour fusionner les boîtes qui se chevauchent et préserver la qualité de détection.
- Évolutivité accrue : en adaptant les tâches de détection d’objets à différentes tailles et résolutions d’image, SAHI convient parfaitement à diverses applications, comme l’analyse d’images satellites et le diagnostic médical.
Pour en savoir plus, consulte la documentation sur les avantages de l’inférence par découpage.
Oui, tu peux visualiser les résultats des prédictions lorsque tu utilises YOLO26 avec SAHI. Voici comment exporter et visualiser les résultats :
from PIL import Image result.export_visuals(export_dir="demo_data/", hide_conf=True) processed_image = Image.open("demo_data/prediction_visual.png") processed_image.show()Cette commande enregistrera les prédictions visualisées dans le répertoire indiqué. Tu pourras ensuite charger l’image pour l’afficher dans ton notebook ou ton application. Pour obtenir des instructions détaillées, consulte la section sur l’inférence standard.
SAHI (Slicing Aided Hyper Inference) offre plusieurs fonctionnalités qui complètent Ultralytics YOLO26 pour la détection d’objets :
- Intégration transparente : SAHI s’intègre facilement aux modèles YOLO et ne nécessite que très peu d’ajustements du code.
- Efficacité des ressources : SAHI divise les grandes images en portions plus petites, ce qui optimise l’utilisation de la mémoire et la vitesse.
- Grande précision : en fusionnant efficacement les boîtes de détection qui se chevauchent lors de l’assemblage, SAHI maintient une grande précision de détection.
Pour approfondir le sujet, découvre les principales fonctionnalités de SAHI.
Pour gérer des projets d’inférence à grande échelle avec YOLO26 et SAHI, suis ces bonnes pratiques :
- Installer les bibliothèques requises : assure-toi de disposer des dernières versions d’ultralytics et de sahi.
- Configurer l’inférence par découpage : détermine les dimensions de découpe et les taux de chevauchement optimaux pour ton projet.
- Exécuter des prédictions par lots : utilise les fonctionnalité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="ultralytics", model_path="path/to/yolo26n.pt", model_device="cpu", # ou '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 obtenir des instructions plus détaillées, consulte notre section sur les prédictions par lots.

