Documentazione Ultralytics: Utilizzare YOLO26 con SAHI per l'inferenza a sezioni (Sliced Inference)
Benvenuto nella documentazione Ultralytics su come utilizzare YOLO26 con SAHI (Slicing Aided Hyper Inference). Questa guida completa mira a fornirti tutte le conoscenze essenziali di cui avrai bisogno per implementare SAHI insieme a YOLO26. Approfondiremo 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 oggetti.
Introduzione a SAHI
SAHI (Slicing Aided Hyper Inference) è una libreria innovativa progettata per ottimizzare gli algoritmi di rilevamento oggetti per immagini ad alta risoluzione e su larga scala. La sua funzionalità principale consiste nel suddividere le immagini in sezioni gestibili, eseguire il rilevamento oggetti su ciascuna sezione e poi ricomporre i risultati. SAHI è compatibile con una gamma di modelli di rilevamento oggetti, inclusa la serie YOLO, offrendo così flessibilità e garantendo al contempo un uso ottimizzato delle risorse computazionali.
Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀
Caratteristiche principali di SAHI
- Integrazione fluida: SAHI si integra facilmente con i modelli YOLO, il che significa che puoi iniziare a suddividere e rilevare senza troppe modifiche al codice.
- Efficienza delle risorse: Suddividendo le immagini di grandi dimensioni in parti più piccole, SAHI ottimizza l'utilizzo della memoria, consentendoti di eseguire rilevamenti di alta qualità su hardware con risorse limitate.
- Elevata precisione: SAHI mantiene l'accuratezza del rilevamento impiegando algoritmi intelligenti per unire i riquadri di rilevamento sovrapposti durante il processo di ricomposizione.
Cos'è l'inferenza a sezioni (Sliced Inference)?
L'inferenza a sezioni si riferisce alla pratica di suddividere un'immagine grande o ad alta risoluzione in segmenti più piccoli (sezioni), condurre il rilevamento oggetti su queste sezioni e poi ricompilare le sezioni per ricostruire le posizioni degli oggetti sull'immagine originale. Questa tecnica è preziosa in scenari in cui le risorse computazionali sono limitate o quando si lavora con immagini ad altissima risoluzione che altrimenti potrebbero causare problemi di memoria.
Vantaggi dell'inferenza a sezioni
-
Ridotto carico computazionale: Le sezioni di immagini più piccole sono più veloci da elaborare e consumano meno memoria, consentendo un funzionamento più fluido su hardware di fascia bassa.
-
Qualità di rilevamento preservata: Poiché ogni sezione viene trattata in modo indipendente, non vi è alcuna riduzione della qualità del rilevamento oggetti, a condizione che le sezioni siano abbastanza grandi da catturare gli oggetti di interesse.
-
Scalabilità migliorata: La tecnica consente di scalare più facilmente il rilevamento oggetti su diverse dimensioni e risoluzioni di immagini, 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 sahiImportare moduli e scaricare 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
Istanziare il modello
Puoi istanziare un modello YOLO26 per il rilevamento 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'
)Eseguire la predizione standard
Esegui l'inferenza standard utilizzando un percorso 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 previsti:
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 a sezioni con YOLO26
Esegui l'inferenza a sezioni specificando le dimensioni della sezione 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 di predizione
SAHI fornisce un oggetto PredictionResult, che può essere convertito in vari formati di annotazione:
# 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]Predizione in batch
Per la predizione 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 sei pronto a utilizzare YOLO26 con SAHI sia per l'inferenza standard che per quella a sezioni.
Citazioni e Riconoscimenti
Se utilizzi SAHI nel tuo lavoro di ricerca o sviluppo, cita il documento SAHI originale e dai credito agli 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}
}Estendiamo i nostri ringraziamenti al gruppo di ricerca SAHI per aver creato e mantenuto questa risorsa inestimabile per la comunità della computer vision. Per ulteriori informazioni su SAHI e i suoi creatori, visita il repository GitHub di SAHI.
FAQ
Come posso integrare YOLO26 con SAHI per l'inferenza a sezioni nel rilevamento oggetti?
Integrare Ultralytics YOLO26 con SAHI (Slicing Aided Hyper Inference) per l'inferenza a sezioni ottimizza le tue attività di rilevamento oggetti su immagini ad alta risoluzione suddividendole in sezioni gestibili. Questo approccio migliora l'utilizzo della memoria e garantisce un'elevata precisione di 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 all'inferenza a sezioni.
Perché dovrei usare SAHI con YOLO26 per il rilevamento oggetti su immagini di grandi dimensioni?
L'utilizzo di SAHI con Ultralytics YOLO26 per il rilevamento oggetti su immagini di grandi dimensioni offre diversi vantaggi:
- Ridotto carico computazionale: Le sezioni più piccole sono più veloci da elaborare e consumano meno memoria, rendendo fattibile l'esecuzione di rilevamenti di alta qualità su hardware con risorse limitate.
- Precisione di rilevamento mantenuta: SAHI utilizza algoritmi intelligenti per unire i riquadri sovrapposti, preservando la qualità del rilevamento.
- Scalabilità migliorata: Scalando le attività di rilevamento oggetti su diverse dimensioni e risoluzioni di immagine, SAHI diventa ideale per varie applicazioni, come l'analisi di immagini satellitari e la diagnostica medica.
Scopri di più sui vantaggi dell'inferenza a sezioni nella nostra documentazione.
Posso visualizzare i risultati di predizione quando utilizzo YOLO26 con SAHI?
Sì, puoi visualizzare i risultati di predizione 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 predizioni visualizzate nella directory specificata e potrai quindi caricare l'immagine per visualizzarla nel tuo notebook o applicazione. Per una guida dettagliata, dai un'occhiata alla sezione Inferenza standard.
Quali funzionalità offre SAHI per migliorare il rilevamento oggetti con YOLO26?
SAHI (Slicing Aided Hyper Inference) offre diverse funzionalità che completano Ultralytics YOLO26 per il rilevamento oggetti:
- Integrazione fluida: SAHI si integra facilmente con i modelli YOLO, richiedendo modifiche minime al codice.
- Efficienza delle risorse: Suddivide le immagini di grandi dimensioni in sezioni più piccole, il che ottimizza l'utilizzo della memoria e la velocità.
- Elevata precisione: Unendo efficacemente i riquadri di rilevamento sovrapposti durante il processo di ricomposizione, SAHI mantiene un'elevata precisione di rilevamento.
Per una comprensione più approfondita, leggi le caratteristiche principali di SAHI.
Come gestisco progetti di inferenza su larga scala utilizzando YOLO26 e SAHI?
Per gestire progetti di inferenza su larga scala utilizzando YOLO26 e SAHI, segui queste migliori pratiche:
- Installa le librerie richieste: Assicurati di avere le versioni più recenti di ultralytics e sahi.
- Configura l'inferenza a sezioni: Determina le dimensioni ottimali della sezione e i rapporti di sovrapposizione per il tuo progetto specifico.
- Esegui predizioni in batch: Usa le capacità di SAHI per eseguire predizioni in batch su una directory di immagini, il che migliora l'efficienza.
Esempio per la predizione 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 passaggi più dettagliati, visita la nostra sezione sulla predizione in batch.

