Documentazione Ultralytics: Utilizzare YOLO26 con SAHI per l'inferenza a sezioni (Sliced Inference)

Apri SAHI per l'inferenza a sezioni in Colab

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.

SAHI tiled inference for small objects

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 SAHIYOLO26 with SAHI
YOLO26 without SAHIYOLO26 with SAHI

Installazione e preparazione

Installazione

Per iniziare, installa le versioni più recenti di SAHI e Ultralytics:

pip install -U ultralytics sahi

Importare 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:

Citazione
@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 sahi

Quindi, 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:

  1. Installa le librerie richieste: Assicurati di avere le versioni più recenti di ultralytics e sahi.
  2. Configura l'inferenza a sezioni: Determina le dimensioni ottimali della sezione e i rapporti di sovrapposizione per il tuo progetto specifico.
  3. 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.

Commenti