Usare YOLO26 con SAHI per l'inferenza su immagini suddivise#
Questa guida mostra come usare YOLO26 con SAHI (Slicing Aided Hyper Inference). Approfondiremo cos'è SAHI, perché l'inferenza su immagini suddivise è fondamentale per le applicazioni su larga scala e come integrare queste funzionalità con YOLO26 per migliorare le prestazioni di object detection.
Introduzione a SAHI#
SAHI (Slicing Aided Hyper Inference) è una libreria innovativa progettata per ottimizzare gli algoritmi di object detection su immagini di grandi dimensioni e ad alta risoluzione. La sua funzionalità principale consiste nel suddividere le immagini in porzioni gestibili, eseguire l'object detection su ciascuna porzione e ricomporre i risultati. SAHI è compatibile con diversi modelli di object detection, tra cui la serie YOLO, offrendo flessibilità e garantendo al contempo un uso ottimizzato delle risorse di calcolo.
Guarda: Come usare SAHI con Ultralytics YOLO26 per rilevare oggetti piccoli | Inferenza iper dettagliata assistita dal ritaglio 🚀
Caratteristiche principali di SAHI#
- Integrazione perfetta: SAHI si integra facilmente con i modelli YOLO, consentendoti di iniziare a suddividere le immagini e rilevare gli oggetti senza apportare molte modifiche al codice.
- Efficienza nell'uso delle risorse: suddividendo le immagini di grandi dimensioni in parti più piccole, SAHI ottimizza l'uso della memoria e ti permette di eseguire rilevamenti di alta qualità su hardware con risorse limitate.
- Elevata accuratezza: SAHI mantiene l'accuratezza del rilevamento usando algoritmi intelligenti per unire i riquadri di rilevamento sovrapposti durante la ricomposizione.
Che cos'è l'inferenza su immagini suddivise?#
L'inferenza su immagini suddivise consiste nel suddividere un'immagine di grandi dimensioni o ad alta risoluzione in segmenti più piccoli (porzioni), eseguire l'object detection su ciascuno di essi e poi ricomporli per ricostruire le posizioni degli oggetti nell'immagine originale. Questa tecnica è preziosa negli scenari in cui le risorse di calcolo sono limitate o quando si lavora con immagini ad altissima risoluzione che potrebbero altrimenti causare problemi di memoria.
Vantaggi dell'inferenza su immagini suddivise#
-
Minore carico computazionale: le porzioni di immagine più piccole sono più rapide da elaborare e consumano meno memoria, consentendo un funzionamento più fluido su hardware meno potente.
-
Qualità del rilevamento preservata: poiché ogni porzione viene trattata in modo indipendente, la qualità dell'object detection non diminuisce, a condizione che le porzioni siano abbastanza grandi da contenere gli oggetti di interesse.
-
Maggiore scalabilità: questa tecnica consente di adattare più facilmente l'object detection a immagini di dimensioni e risoluzioni diverse, rendendola ideale per un'ampia gamma di applicazioni, dalle immagini satellitari alla diagnostica medica.
| YOLO26 senza SAHI | YOLO26 con SAHI |
|---|---|
![]() | ![]() |
Installazione e preparazione#
Installazione#
Per iniziare, installa le versioni più recenti di SAHI e Ultralytics:
pip install -U ultralytics sahiImportare i moduli e scaricare le risorse#
Ecco come scaricare alcune immagini di test:
from sahi.utils.file import download_from_url
# Scarica le immagini di 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",
)Inferenza standard con YOLO26#
Istanziare il modello#
Puoi istanziare un modello YOLO26 per l'object detection in questo modo:
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="ultralytics",
model_path="yolo26n.pt",
confidence_threshold=0.3,
device="cpu", # oppure 'cuda:0'
)Eseguire una predizione standard#
Esegui l'inferenza standard usando il percorso di un'immagine.
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)Visualizzare i risultati#
Esporta e visualizza i riquadri di delimitazione e le maschere predetti:
from PIL import Image
# Apri l'immagine predetta
processed_image = Image.open("demo_data/prediction_visual.png")
# Visualizza l'immagine predetta
processed_image.show()Inferenza su immagini suddivise con YOLO26#
Esegui l'inferenza su immagini suddivise specificando le dimensioni delle porzioni e i rapporti di sovrapposizione:
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,
)
# Esporta i risultati
result.export_visuals(export_dir="demo_data/", hide_conf=True)
# Apri l'immagine predetta
processed_image = Image.open("demo_data/prediction_visual.png")
# Visualizza l'immagine predetta
processed_image.show()Gestire i risultati delle predizioni#
SAHI fornisce un oggetto PredictionResult, che può essere convertito in diversi formati di annotazione:
# Accedi all'elenco delle predizioni degli oggetti
object_prediction_list = result.object_prediction_list
# Converti nei formati di annotazione COCO e di predizione COCO
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]Predizione in batch#
Per eseguire predizioni in batch su una directory di immagini:
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="yolo26n.pt",
model_device="cpu", # oppure '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,
)Ora puoi usare YOLO26 con SAHI sia per l'inferenza standard sia per quella su immagini suddivise.
Citazioni e ringraziamenti#
Se usi SAHI nelle tue attività di ricerca o sviluppo, cita il paper originale di SAHI e riconosci il contributo degli autori:
@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}
}Ringraziamo il gruppo di ricerca SAHI per aver creato e mantenuto questa preziosa risorsa per la comunità della computer vision. Per ulteriori informazioni su SAHI e i suoi creatori, visita il repository GitHub di SAHI.
Domande frequenti#
Integrare Ultralytics YOLO26 con SAHI (Slicing Aided Hyper Inference) per l'inferenza su immagini suddivise ottimizza le attività di object detection su immagini ad alta risoluzione, suddividendole in porzioni gestibili. Questo approccio migliora l'uso della memoria e garantisce un'elevata accuratezza del rilevamento. Per iniziare, devi installare le librerie ultralytics e sahi:
pip install -U ultralytics sahiPoi, scarica le immagini di test:
from sahi.utils.file import download_from_url # Scarica le immagini di 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", )Per istruzioni più dettagliate, consulta la nostra guida all'inferenza su immagini suddivise.
Usare SAHI con Ultralytics YOLO26 per l'object detection su immagini di grandi dimensioni offre diversi vantaggi:
- Minore carico computazionale: le porzioni più piccole sono più rapide da elaborare e consumano meno memoria, rendendo possibile eseguire rilevamenti di alta qualità su hardware con risorse limitate.
- Accuratezza del rilevamento mantenuta: SAHI usa algoritmi intelligenti per unire i riquadri sovrapposti, preservando la qualità del rilevamento.
- Maggiore scalabilità: adattando le attività di object detection a immagini di dimensioni e risoluzioni diverse, SAHI è ideale per varie applicazioni, come l'analisi di immagini satellitari e la diagnostica medica.
Scopri di più sui vantaggi dell'inferenza su immagini suddivise nella nostra documentazione.
Sì, puoi visualizzare i risultati delle predizioni usando YOLO26 con SAHI. Ecco come esportare e visualizzare i risultati:
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()Questo comando salverà le predizioni visualizzate nella directory specificata; potrai poi caricare l'immagine per visualizzarla nel notebook o nell'applicazione. Per una guida dettagliata, consulta la sezione Inferenza standard.
SAHI (Slicing Aided Hyper Inference) offre diverse funzionalità che completano Ultralytics YOLO26 per l'object detection:
- Integrazione perfetta: SAHI si integra facilmente con i modelli YOLO e richiede modifiche minime al codice.
- Efficienza nell'uso delle risorse: suddivide le immagini di grandi dimensioni in porzioni più piccole, ottimizzando l'uso della memoria e la velocità.
- Elevata accuratezza: unendo efficacemente i riquadri di rilevamento sovrapposti durante la ricomposizione, SAHI mantiene un'elevata accuratezza del rilevamento.
Per approfondire, leggi le caratteristiche principali di SAHI.
Per gestire progetti di inferenza su larga scala con YOLO26 e SAHI, segui queste best practice:
- Installa le librerie necessarie: assicurati di avere le versioni più recenti di ultralytics e sahi.
- Configura l'inferenza a tasselli: determina le dimensioni ottimali dei tasselli e i rapporti di sovrapposizione per il tuo progetto specifico.
- Esegui previsioni in batch: usa le funzionalità di SAHI per eseguire previsioni in batch su una directory di immagini, migliorando così l'efficienza.
Esempio di previsione in batch:
from sahi.predict import predict predict( model_type="ultralytics", model_path="path/to/yolo26n.pt", model_device="cpu", # oppure '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, )Per istruzioni più dettagliate, visita la nostra sezione Previsione in batch.

