Utilizzo di YOLO26 con SAHI per l'inferenza a sezioni#
Questa guida mostra come usare YOLO26 con SAHI (Slicing Aided Hyper Inference). Analizzeremo in dettaglio cos'è SAHI, perché l'inferenza a sezioni è fondamentale per le applicazioni su larga scala e come integrare queste funzionalità con YOLO26 per migliorare le prestazioni del rilevamento di oggetti.
Introduzione a SAHI#
SAHI (inferenza iperassistita dalla suddivisione) è una libreria innovativa progettata per ottimizzare gli algoritmi di rilevamento degli oggetti per immagini su larga scala e ad alta risoluzione. La sua funzionalità principale consiste nel suddividere le immagini in sezioni gestibili, eseguire il rilevamento degli oggetti su ciascuna sezione e ricomporre quindi i risultati. SAHI è compatibile con diversi modelli di rilevamento degli oggetti, inclusa la serie YOLO, offrendo così flessibilità e garantendo al contempo un utilizzo ottimizzato delle risorse di calcolo.
Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀
Funzionalità 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 delle risorse: suddividendo le immagini di grandi dimensioni in parti più piccole, SAHI ottimizza l'utilizzo della memoria e ti consente di eseguire rilevamenti di alta qualità su hardware con risorse limitate.
- Elevata accuratezza: SAHI mantiene l'accuratezza del rilevamento utilizzando algoritmi intelligenti per unire i riquadri di rilevamento sovrapposti durante il processo di ricomposizione.
Che cos'è l'inferenza suddivisa?#
L'inferenza suddivisa consiste nel dividere un'immagine grande o ad alta risoluzione in segmenti più piccoli (sezioni), eseguire il rilevamento degli oggetti su tali sezioni e ricomporle quindi 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 suddivisa#
-
Minore carico di calcolo: le sezioni di immagine più piccole vengono elaborate più rapidamente e consumano meno memoria, consentendo un funzionamento più fluido su hardware meno potente.
-
Qualità del rilevamento preservata: poiché ogni sezione viene trattata in modo indipendente, la qualità del rilevamento degli oggetti non diminuisce, a condizione che le sezioni siano abbastanza grandi da contenere gli oggetti di interesse.
-
Maggiore scalabilità: questa tecnica consente di scalare più facilmente il rilevamento degli oggetti su immagini di dimensioni e risoluzioni diverse, rendendola ideale per un'ampia gamma di applicazioni, dalle immagini satellitari alla diagnostica medica.
| YOLO26 without SAHI | YOLO26 with SAHI |
|---|---|
![]() | ![]() |
Installazione e preparazione#
Installazione#
Per iniziare, installa le versioni più recenti di SAHI e Ultralytics:
pip install -U ultralytics sahiImportazione dei moduli e download delle risorse#
Ecco come scaricare alcune immagini di 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",
)Inferenza standard con YOLO26#
Inizializzazione del modello#
Puoi inizializzare un modello YOLO26 per il rilevamento degli oggetti 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", # or 'cuda:0'
)Esecuzione della previsione standard#
Esegui l'inferenza standard utilizzando 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)Visualizzazione dei risultati#
Esporta e visualizza i riquadri di delimitazione e le maschere predetti:
from PIL import Image
# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")
# Display the predicted image
processed_image.show()Inferenza suddivisa con YOLO26#
Esegui l'inferenza suddivisa specificando le dimensioni delle sezioni 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,
)
# 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()Gestione dei risultati della previsione#
SAHI fornisce un oggetto PredictionResult, che può essere convertito in diversi formati di annotazione:
# 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]Previsione in batch#
Per eseguire previsioni in batch su una directory di immagini:
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,
)Ora puoi utilizzare YOLO26 con SAHI sia per l'inferenza standard sia per quella suddivisa.
Citazioni e ringraziamenti#
Se utilizzi SAHI nel tuo lavoro 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 di SAHI per aver creato e mantenuto questa risorsa preziosa per la comunità della visione artificiale. Per ulteriori informazioni su SAHI e sui suoi creatori, visita il repository di SAHI su GitHub.
FAQ#
L'integrazione di Ultralytics YOLO26 con SAHI (inferenza iperassistita dalla suddivisione) per l'inferenza suddivisa ottimizza le attività di rilevamento degli oggetti su immagini ad alta risoluzione suddividendole in sezioni gestibili. Questo approccio migliora l'utilizzo della memoria e garantisce un'elevata accuratezza del rilevamento. Per iniziare, devi installare le librerie ultralytics e sahi:
pip install -U ultralytics sahiQuindi, scarica le immagini di 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", )Per istruzioni più dettagliate, consulta la nostra guida sull'inferenza suddivisa.
L'utilizzo di SAHI con Ultralytics YOLO26 per il rilevamento degli oggetti su immagini di grandi dimensioni offre diversi vantaggi:
- Minore carico di calcolo: le sezioni più piccole vengono elaborate più rapidamente e consumano meno memoria, rendendo possibile eseguire rilevamenti di alta qualità su hardware con risorse limitate.
- Accuratezza del rilevamento mantenuta: SAHI utilizza algoritmi intelligenti per unire i riquadri sovrapposti, preservando la qualità del rilevamento.
- Maggiore scalabilità: scalando le attività di rilevamento degli oggetti su immagini di dimensioni e risoluzioni diverse, SAHI è ideale per varie applicazioni, come l'analisi delle immagini satellitari e la diagnostica medica.
Scopri di più sui vantaggi dell'inferenza suddivisa nella nostra documentazione.
Sì, puoi visualizzare i risultati delle previsioni quando utilizzi YOLO26 con SAHI. Ecco come puoi 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 previsioni visualizzate nella directory specificata; potrai quindi caricare l'immagine per visualizzarla nel tuo notebook o nella tua applicazione. Per una guida dettagliata, consulta la sezione sull'inferenza standard.
SAHI (inferenza iperassistita dalla suddivisione) offre diverse funzionalità che completano Ultralytics YOLO26 per il rilevamento degli oggetti:
- Integrazione perfetta: SAHI si integra facilmente con i modelli YOLO e richiede modifiche minime al codice.
- Efficienza delle risorse: suddivide le immagini di grandi dimensioni in sezioni più piccole, ottimizzando l'utilizzo della memoria e la velocità.
- Elevata accuratezza: unendo efficacemente i riquadri di rilevamento sovrapposti durante il processo di ricomposizione, SAHI mantiene un'elevata accuratezza del rilevamento.
Per comprendere meglio SAHI, leggi le sue funzionalità principali.
Per gestire progetti di inferenza su larga scala utilizzando YOLO26 e SAHI, segui queste procedure consigliate:
- Installa le librerie necessarie: assicurati di avere le versioni più recenti di ultralytics e sahi.
- Configura l'inferenza suddivisa: determina le dimensioni ottimali delle sezioni e i rapporti di sovrapposizione per il tuo progetto specifico.
- Esegui previsioni in batch: utilizza 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", # 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, )Per ulteriori dettagli, visita la nostra sezione sulla previsione in batch.

