Vai al contenuto

Ultralytics Documenti: Utilizzo di YOLO11 con SAHI per l'inferenza a fette

Benvenuti nella documentazione di Ultralytics su come utilizzare YOLO11 con SAHI (Slicing Aided Hyper Inference). Questa guida completa si propone di fornire tutte le conoscenze essenziali necessarie per implementare SAHI insieme a YOLO11. Approfondiremo cos'è SAHI, perché l'inferenza a fette è fondamentale per le applicazioni su larga scala e come integrare queste funzionalità con YOLO11 per migliorare le prestazioni di rilevamento degli oggetti.

Panoramica dell'inferenza a fette SAHI

Introduzione al SAHI

SAHI (Slicing Aided Hyper Inference) è 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 fette gestibili, eseguire il rilevamento degli oggetti su ciascuna fetta e quindi ricomporre i risultati. SAHI è compatibile con una serie di modelli di rilevamento degli oggetti, tra cui la serie YOLO , offrendo così flessibilità e garantendo un uso ottimizzato delle risorse computazionali.



Guarda: Inferenza con SAHI (Slicing Aided Hyper Inference) con l'utilizzo di Ultralytics YOLO11

Caratteristiche principali di SAHI

  • Integrazione perfetta: SAHI si integra facilmente con i modelli di YOLO , il che significa che è possibile iniziare a tagliare e rilevare senza dover modificare il codice.
  • Efficienza delle risorse: Suddividendo le immagini di grandi dimensioni in parti più piccole, SAHI ottimizza l'utilizzo della memoria, consentendo di eseguire rilevamenti di alta qualità su hardware con risorse limitate.
  • Alta precisione: SAHI mantiene l'accuratezza del rilevamento utilizzando algoritmi intelligenti per unire le caselle di rilevamento sovrapposte durante il processo di cucitura.

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 degli oggetti su queste fette e quindi ricompilare le fette 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 potrebbero altrimenti causare problemi di memoria.

Vantaggi dell'inferenza a fette

  • Riduzione del carico di calcolo: Le fette di immagine 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 fetta viene trattata in modo indipendente, non vi è alcuna riduzione della qualità del rilevamento degli oggetti, a condizione che le fette siano sufficientemente grandi da catturare gli oggetti di interesse.

  • Scalabilità migliorata: La tecnica consente di rilevare gli oggetti in modo più semplice su immagini di dimensioni e risoluzioni diverse, rendendola ideale per un'ampia gamma di applicazioni, dalle immagini satellitari alla diagnostica medica.

YOLO11 senza SAHI YOLO11 con SAHI
YOLO11 senza SAHI YOLO11 con SAHI

Installazione e preparazione

Installazione

Per iniziare, installare le ultime versioni di SAHI e Ultralytics:

pip install -U ultralytics sahi

Importazione di moduli e download di risorse

Ecco come importare i moduli necessari e scaricare un modello YOLO11 e alcune immagini di prova:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_model(model_path)

# 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 YOLO11

Istanziare il modello

È possibile istanziare un modello YOLO11 per il rilevamento degli oggetti in questo modo:

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="yolov8",
    model_path=yolov8_model_path,
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

Eseguire una previsione standard

Eseguire l'inferenza standard utilizzando un percorso immagine o un'immagine numpy.

from sahi.predict import get_prediction

# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# With a numpy image
result = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

Visualizzare i risultati

Esportare e visualizzare i rettangoli di selezione e le maschere previste:

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Inferenza a fette con YOLO11

Eseguire l'inferenza a fette specificando le dimensioni della fetta e i rapporti di sovrapposizione:

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

Gestione dei risultati delle previsioni

Il SAHI fornisce un 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]

Previsione del lotto

Per la previsione batch su una directory di immagini:

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolo11n.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,
)

Ecco fatto! Ora siete in grado di utilizzare YOLO11 con SAHI sia per l'inferenza standard che per quella a fette.

Citazioni e ringraziamenti

Se utilizzate SAHI nel vostro lavoro di ricerca o sviluppo, siete pregati di citare il documento originale di SAHI e di riconoscerne gli 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 sui suoi creatori, visitare il repository SAHI GitHub.

FAQ

Come si può integrare YOLO11 con SAHI per l'inferenza a fette nel rilevamento di oggetti?

L'integrazione di Ultralytics YOLO11 con SAHI (Slicing Aided Hyper Inference) per l'inferenza a fette ottimizza le attività di rilevamento degli oggetti su immagini ad alta risoluzione suddividendole in fette gestibili. Questo approccio migliora l'utilizzo della memoria e garantisce un'elevata precisione di rilevamento. Per iniziare, è necessario installare le librerie ultralytics e sahi:

pip install -U ultralytics sahi

Quindi, scaricare un modello YOLO11 e le immagini di prova:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_model(model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)

Per istruzioni più dettagliate, consultare la nostra guida sull'inferenza a fette.

Perché utilizzare SAHI con YOLO11 per il rilevamento di oggetti su immagini di grandi dimensioni?

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

  • Riduzione dell'onere computazionale: Le fette più piccole sono più veloci da elaborare e consumano meno memoria, rendendo possibile l'esecuzione di rilevamenti di alta qualità su hardware con risorse limitate.
  • Accuratezza di rilevamento mantenuta: SAHI utilizza algoritmi intelligenti per unire le caselle sovrapposte, preservando la qualità del rilevamento.
  • Scalabilità migliorata: Grazie alla scalabilità dei compiti di rilevamento degli oggetti su diverse dimensioni e risoluzioni delle immagini, SAHI diventa ideale per varie applicazioni, come l'analisi delle immagini satellitari e la diagnostica medica.

Per saperne di più sui vantaggi dell'inferenza a fette, consultare la nostra documentazione.

È possibile visualizzare i risultati delle previsioni quando si utilizza YOLO11 con SAHI?

Sì, è possibile visualizzare i risultati delle previsioni quando si utilizza YOLO11 con SAHI. Ecco come esportare e visualizzare i risultati:

from IPython.display import Image

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Questo comando salverà le previsioni visualizzate nella directory specificata e sarà possibile caricare l'immagine per visualizzarla nel notebook o nell'applicazione. Per una guida dettagliata, consultare la sezione Inferenza standard.

Quali funzioni offre SAHI per migliorare il rilevamento degli oggetti YOLO11 ?

SAHI (Slicing Aided Hyper Inference) offre diverse funzionalità che completano Ultralytics YOLO11 per il rilevamento degli oggetti:

  • Integrazione perfetta: SAHI si integra facilmente con i modelli YOLO , richiedendo modifiche minime al codice.
  • Efficienza delle risorse: Suddivide le immagini di grandi dimensioni in fette più piccole, ottimizzando l'uso della memoria e la velocità.
  • Alta precisione: unendo efficacemente le caselle di rilevamento sovrapposte durante il processo di cucitura, SAHI mantiene un'elevata precisione di rilevamento.

Per una comprensione più approfondita, leggete le caratteristiche principali di SAHI.

Come posso gestire progetti di inferenza su larga scala utilizzando YOLO11 e SAHI?

Per gestire progetti di inferenza su larga scala utilizzando YOLO11 e SAHI, seguite queste best practice:

  1. Installare le librerie necessarie: Assicurarsi di avere le ultime versioni di ultralytics e sahi.
  2. Configurare l'inferenza a fette: Determinare le dimensioni ottimali delle fette e i rapporti di sovrapposizione per il progetto specifico.
  3. Esecuzione di previsioni in batch: Utilizzate le funzionalità di SAHI per eseguire previsioni in batch su una directory di immagini, migliorando l'efficienza.

Esempio di previsione in batch:

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolo11n.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 maggiori dettagli, visitate la nostra sezione sulla Predizione dei lotti.

📅C reato 1 anno fa ✏️ Aggiornato 2 mesi fa

Commenti