YOLO Vision 2026:

Documentazione Ultralytics: Utilizzo di YOLO26 con SAHI per l'inferenza a fette#

Open SAHI for Sliced Inference In Colab

Benvenuto nella documentazione di Ultralytics su come utilizzare YOLO26 con SAHI (Slicing Aided Hyper Inference). Questa guida completa mira a fornirti tutta la conoscenza essenziale 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 di oggetti.

Introduzione a SAHI#

SAHI (Slicing Aided Hyper Inference) è una libreria innovativa progettata per ottimizzare gli algoritmi di rilevamento di oggetti per immagini su larga scala e ad alta risoluzione. La sua funzionalità principale risiede nella suddivisione delle immagini in fette gestibili, nell'esecuzione del rilevamento di oggetti su ciascuna fetta e nel successivo riassemblaggio dei risultati. SAHI è compatibile con una gamma di modelli di rilevamento di oggetti, inclusa la serie YOLO, offrendo così flessibilità e garantendo 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 senza sforzo con i modelli YOLO, il che significa che puoi iniziare a suddividere e rilevare senza dover modificare molto 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.
  • Alta Precisione: SAHI mantiene la precisione del rilevamento impiegando algoritmi intelligenti per unire i riquadri di rilevamento sovrapposti durante il processo di unione.

Che cos'è l'inferenza a fette?#

L'inferenza a fette si riferisce alla pratica di suddividere un'immagine di grandi dimensioni o ad alta risoluzione in segmenti più piccoli (fette), condurre il rilevamento di oggetti su queste fette e quindi ricompilare le fette per ricostruire le posizioni degli oggetti sull'immagine originale. Questa tecnica è inestimabile negli 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 fette#

  • Ridotto carico computazionale: Le fette di immagine più piccole sono più veloci da elaborare e consumano meno memoria, consentendo un funzionamento più fluido su hardware di fascia inferiore.

  • Qualità del rilevamento preservata: Poiché ogni fetta viene trattata in modo indipendente, non vi è alcuna riduzione della qualità del rilevamento degli oggetti, a condizione che le fette siano abbastanza grandi da catturare gli oggetti di interesse.

  • Scalabilità migliorata: La tecnica consente di scalare più facilmente il rilevamento degli oggetti tra diverse dimensioni e risoluzioni di immagini, rendendola ideale per una vasta 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

Importa moduli e scarica 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#

Istanzia il modello#

Puoi istanziare un modello YOLO26 per il rilevamento di 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'
)

Esegui 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)

Visualizza i risultati#

Esporta e visualizza i riquadri di delimitazione (bounding box) e le maschere previste:

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 fette con YOLO26#

Esegui l'inferenza a fette specificando le dimensioni delle fette 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 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 and COCO prediction formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
Ulteriori formati di esportazione

PredictionResult può anche convertire i rilevamenti in oggetti imantics e FiftyOne con result.to_imantics_annotations() e result.to_fiftyone_detections(). Questi metodi richiedono i rispettivi pacchetti, quindi installali prima con pip install imantics fiftyone.

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 fette.

Citazioni e riconoscimenti#

Se utilizzi SAHI nella tua ricerca o nel tuo lavoro di sviluppo, cita l'articolo originale di SAHI e ringrazia gli 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}
}

Ringraziamo il gruppo di ricerca SAHI per aver creato e mantenuto questa preziosa risorsa per la comunità della visione artificiale. Per ulteriori informazioni su SAHI e sui suoi creatori, visita il repository GitHub di SAHI.

FAQ#

  • L'integrazione di Ultralytics YOLO26 con SAHI (Slicing Aided Hyper Inference) per l'inferenza a fette ottimizza le tue attività di rilevamento di oggetti su immagini ad alta risoluzione suddividendole in fette gestibili. Questo approccio migliora l'utilizzo della memoria e garantisce un'elevata accuratezza 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, fai riferimento alla nostra guida all'inferenza a sezioni.

  • L'utilizzo di SAHI con Ultralytics YOLO26 per il rilevamento di oggetti su immagini di grandi dimensioni offre diversi vantaggi:

    • Ridotto carico computazionale: Le fette 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.
    • Accuratezza di rilevamento mantenuta: SAHI utilizza algoritmi intelligenti per unire i riquadri sovrapposti, preservando la qualità del rilevamento.
    • Scalabilità migliorata: Scalando le attività di rilevamento di oggetti su diverse dimensioni e risoluzioni di immagini, 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.

  • Sì, puoi visualizzare i risultati della 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 previsioni visualizzate nella directory specificata, e potrai quindi caricare l'immagine per visualizzarla nel tuo notebook o nella tua applicazione. Per una guida dettagliata, dai un'occhiata alla sezione sull'inferenza standard.

  • SAHI (Slicing Aided Hyper Inference) offre diverse funzionalità che completano Ultralytics YOLO26 per il rilevamento di oggetti:

    • Integrazione fluida: SAHI si integra facilmente con i modelli YOLO, richiedendo modifiche minime al codice.
    • Efficienza delle risorse: Suddivide immagini di grandi dimensioni in fette più piccole, il che ottimizza l'utilizzo della memoria e la velocità.
    • Alta precisione: Unendo efficacemente i riquadri di rilevamento sovrapposti durante il processo di riassemblaggio, SAHI mantiene un'elevata precisione di rilevamento.

    Per una comprensione più approfondita, leggi le funzionalità chiave di 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 fette: Determina le dimensioni ottimali delle fette e i rapporti di sovrapposizione per il tuo progetto specifico.
    3. Esegui predizioni in batch: Utilizza le funzionalità 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 previsione in batch.

Commenti