Utiliser YOLO26 avec SAHI pour l'inférence par découpage#
Ce guide montre 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 avec YOLO26 pour améliorer les performances de détection d'objets.
Introduction à SAHI#
SAHI (inférence hyper améliorée par découpage) est une bibliothèque innovante conçue pour optimiser les algorithmes de détection d’objets appliqués à des images de grande taille et haute résolution. Sa fonctionnalité principale consiste à partitionner les images en tranches faciles à gérer, à effectuer la détection d’objets sur chaque tranche, puis à rassembler les résultats. SAHI est compatible avec un large éventail de modèles de détection d’objets, notamment la série YOLO, offrant ainsi une grande flexibilité tout en garantissant une utilisation optimisée des ressources de calcul.
Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀
Fonctionnalités clés de SAHI#
- Intégration transparente : SAHI s’intègre facilement aux modèles YOLO, ce qui te permet de commencer à découper les images et à effectuer des détections sans modifier considérablement le code.
- Efficacité des ressources : en divisant les grandes images en parties plus petites, SAHI optimise l’utilisation de la mémoire et te permet d’exécuter des détections de haute qualité sur du matériel aux ressources limitées.
- Précision élevée : SAHI préserve la précision des détections grâce à des algorithmes intelligents qui fusionnent les boîtes de détection qui se chevauchent lors du ré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 (tranches), à effectuer la détection d’objets sur ces tranches, puis à les recomposer afin de reconstruire l’emplacement des objets dans l’image d’origine. Cette technique est précieuse lorsque les ressources de calcul sont limitées ou lorsque 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#
-
Réduction de la charge de calcul : les tranches 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.
-
Préservation de la qualité des détections : comme chaque tranche est traitée indépendamment, la qualité de la détection d’objets n’est pas réduite, à condition que les tranches soient suffisamment grandes pour contenir les objets d’intérêt.
-
Meilleure évolutivité : cette technique permet de faire évoluer plus facilement la détection d’objets selon les différentes tailles et résolutions d’image, ce qui la rend idéale pour un large éventail d’applications, de l’imagerie satellite au diagnostic médical.
| YOLO26 without SAHI | YOLO26 with 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
# 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 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", # or 'cuda:0'
)Effectuer une prédiction standard#
Effectue une inférence standard à l’aide 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#
Exporte et visualise les boîtes englobantes et les masques prédits :
from PIL import Image
# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")
# Display the predicted image
processed_image.show()Inférence par découpage avec YOLO26#
Effectue une inférence par découpage en spécifiant les dimensions des tranches 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,
)
# Export results
result.export_visuals(export_dir="demo_data/", hide_conf=True)
# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")
# Display the predicted image
processed_image.show()Gérer les résultats des prédictions#
SAHI fournit un objet PredictionResult, qui peut être converti dans différents formats d’annotations :
# Access the object prediction list
object_prediction_list = result.object_prediction_list
# Convert to COCO annotation and COCO prediction formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]Prédiction par lots#
Pour effectuer une prédiction par lots sur un répertoire d’images :
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="yolo26n.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,
)Tu es maintenant prêt à utiliser YOLO26 avec SAHI pour l’inférence standard et 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 consacré à SAHI et mentionne 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 pour avoir créé et maintenu cette ressource précieuse pour la communauté de la vision par ordinateur. Pour plus d’informations sur SAHI et ses créateurs, consulte le dépôt GitHub de SAHI.
FAQ#
L’utilisation de SAHI avec Ultralytics YOLO26 pour la détection d’objets sur de grandes images offre plusieurs avantages :
- Réduction de la charge de calcul : les tranches plus petites 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.
- Maintien de la précision des détections : SAHI utilise des algorithmes intelligents pour fusionner les boîtes qui se chevauchent et préserver la qualité des détections.
- Meilleure évolutivité : en adaptant les tâches de détection d’objets aux différentes tailles et résolutions d’image, SAHI devient idéal pour diverses applications, telles que l’analyse d’images satellite et le diagnostic médical.
Découvre plus d’informations sur les avantages de l’inférence par découpage dans notre documentation.
Oui, tu peux visualiser les résultats des prédictions lors de l’utilisation de 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 un guide détaillé, consulte la section sur l’inférence standard.
SAHI (inférence hyper améliorée par découpage) 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 des ajustements minimes du code.
- Efficacité des ressources : il partitionne 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 lors du réassemblage, SAHI maintient une grande précision des détections.
Pour mieux comprendre SAHI, lis la présentation de ses fonctionnalités clés.
Pour gérer des projets d’inférence à grande échelle avec YOLO26 et SAHI, suis ces bonnes pratiques :
- Installer les bibliothèques requises : vérifie que tu disposes des dernières versions de ultralytics et sahi.
- Configurer l’inférence par découpage : détermine les dimensions de tranche et les taux de chevauchement optimaux pour ton projet spécifique.
- 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 afin d’améliorer 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", # 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 découvrir les étapes détaillées, consulte notre section sur la prédiction par lots.


L’intégration d’Ultralytics YOLO26 à SAHI (inférence hyper améliorée par découpage) pour l’inférence par découpage optimise tes tâches de détection d’objets sur les images haute résolution en les partitionnant en tranches faciles à gérer. Cette approche améliore l’utilisation de la mémoire et garantit une grande précision des détections. Pour commencer, tu dois installer les bibliothèques ultralytics et sahi :
Télécharge ensuite les images de test :
Pour obtenir des instructions plus détaillées, consulte notre guide sur l’inférence par découpage.