Overslaan naar inhoud

Ultralytics Documenten: YOLOv8 gebruiken met SAHI voor Sliced Inferentie

Welkom bij de Ultralytics documentatie over het gebruik van YOLOv8 met SAHI (Slicing Aided Hyper Inference). Deze uitgebreide gids is bedoeld om je te voorzien van alle essentiƫle kennis die je nodig hebt om SAHI te implementeren naast YOLOv8. We gaan diep in op wat SAHI is, waarom sliced inference cruciaal is voor grootschalige toepassingen en hoe je deze functionaliteiten kunt integreren met YOLOv8 voor verbeterde prestaties bij objectdetectie.

SAHI Gesneden Inferentie Overzicht

Inleiding tot SAHI

SAHI (Slicing Aided Hyper Inference) is een innovatieve bibliotheek die is ontworpen om objectdetectiealgoritmen te optimaliseren voor grootschalige beelden met een hoge resolutie. De kernfunctionaliteit ligt in het verdelen van beelden in hanteerbare segmenten, het uitvoeren van objectdetectie op elk segment en het weer samenvoegen van de resultaten. SAHI is compatibel met een reeks objectdetectiemodellen, waaronder de YOLO serie, en biedt zo flexibiliteit terwijl het optimaal gebruik van rekenkracht garandeert.



Kijken: Inferentie met SAHI (Slicing Aided Hyper Inference) met behulp van Ultralytics YOLOv8

Belangrijkste kenmerken van SAHI

  • Naadloze integratie: SAHI integreert moeiteloos met YOLO modellen, wat betekent dat je kunt beginnen met snijden en detecteren zonder veel code aan te passen.
  • EfficiĆ«nt gebruik van bronnen: Door grote afbeeldingen op te splitsen in kleinere delen, optimaliseert SAHI het geheugengebruik, waardoor je detectie van hoge kwaliteit kunt uitvoeren op hardware met beperkte bronnen.
  • Hoge nauwkeurigheid: SAHI behoudt de detectienauwkeurigheid door slimme algoritmes te gebruiken om overlappende detectievelden samen te voegen tijdens het stikproces.

Wat is Sliced Inference?

Sliced Inference verwijst naar de praktijk van het onderverdelen van een grote afbeelding of afbeelding met hoge resolutie in kleinere segmenten (segmenten), het detecteren van objecten op deze segmenten en vervolgens het hercompileren van de segmenten om de objectlocaties op de oorspronkelijke afbeelding te reconstrueren. Deze techniek is van onschatbare waarde in scenario's waar de rekenkracht beperkt is of bij het werken met afbeeldingen met een extreem hoge resolutie die anders tot geheugenproblemen zou kunnen leiden.

Voordelen van Sliced Inference

  • Minder rekenlast: Kleinere beeldschijven zijn sneller te verwerken en verbruiken minder geheugen, waardoor ze soepeler werken op hardware van lagere kwaliteit.

  • Behouden detectiekwaliteit: Omdat elke slice onafhankelijk wordt behandeld, is er geen vermindering in de kwaliteit van objectdetectie, op voorwaarde dat de slices groot genoeg zijn om de objecten van interesse vast te leggen.

  • Verbeterde schaalbaarheid: De techniek maakt het mogelijk om objectdetectie gemakkelijker te schalen over verschillende beeldformaten en -resoluties, waardoor het ideaal is voor een breed scala aan toepassingen, van satellietbeelden tot medische diagnostiek.

YOLOv8 zonder SAHI YOLOv8 met SAHI
YOLOv8 zonder SAHI YOLOv8 met SAHI

Installatie en voorbereiding

Installatie

Om te beginnen installeer je de nieuwste versies van SAHI en Ultralytics:

pip install -U ultralytics sahi

Modules importeren en bronnen downloaden

Hier lees je hoe je de benodigde modules importeert en een YOLOv8 model en wat testafbeeldingen downloadt:

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

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_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",
)

Standaard inferentie met YOLOv8

Het model instantiƫren

Je kunt een YOLOv8 model als volgt instantiƫren voor objectdetectie:

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

Standaard voorspelling uitvoeren

Voer standaard inferentie uit met behulp van een afbeeldingspad of een numpy afbeelding.

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)

Resultaten visualiseren

Exporteer en visualiseer de voorspelde bounding boxes en maskers:

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

Gesneden inferentie met YOLOv8

Voer sliced inferentie uit door de slice afmetingen en overlapratio's op te geven:

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

Omgaan met voorspellingsresultaten

SAHI biedt een PredictionResult object, dat kan worden geconverteerd naar verschillende annotatieformaten:

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

Batch voorspelling

Voor batchvoorspelling op een map met afbeeldingen:

from sahi.predict import predict

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

Dat was het! Nu kun je YOLOv8 gebruiken met SAHI voor zowel standaard als gesneden inferentie.

Citaten en erkenningen

Als je SAHI gebruikt in je onderzoek of ontwikkeling, citeer dan het originele SAHI artikel en vermeld de auteurs:

@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}
}

We bedanken de SAHI onderzoeksgroep voor het maken en onderhouden van deze onschatbare bron voor de computer vision gemeenschap. Ga voor meer informatie over SAHI en de makers naar de SAHI GitHub repository.

FAQ

Hoe kan ik YOLOv8 integreren met SAHI voor gesneden inferentie in objectdetectie?

De integratie van Ultralytics YOLOv8 met SAHI (Slicing Aided Hyper Inference) voor gesneden inferentie optimaliseert je objectdetectietaken op hogeresolutiebeelden door ze op te delen in hanteerbare segmenten. Deze aanpak verbetert het geheugengebruik en zorgt voor een hoge detectienauwkeurigheid. Om te beginnen moet je de bibliotheken ultralytics en sahi installeren:

pip install -U ultralytics sahi

Download vervolgens een YOLOv8 model en testafbeeldingen:

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

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_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",
)

Raadpleeg onze Sliced Inference gids voor meer gedetailleerde instructies.

Waarom zou ik SAHI met YOLOv8 gebruiken voor objectdetectie op grote afbeeldingen?

Het gebruik van SAHI met Ultralytics YOLOv8 voor objectdetectie op grote afbeeldingen biedt verschillende voordelen:

  • Lagere computerbelasting: Kleinere segmenten zijn sneller te verwerken en verbruiken minder geheugen, waardoor het haalbaar is om detecties van hoge kwaliteit uit te voeren op hardware met beperkte middelen.
  • Behouden detectienauwkeurigheid: SAHI gebruikt intelligente algoritmen om overlappende vakken samen te voegen, waardoor de detectiekwaliteit behouden blijft.
  • Verbeterde schaalbaarheid: Door objectdetectietaken te schalen over verschillende beeldformaten en resoluties, wordt SAHI ideaal voor diverse toepassingen, zoals analyse van satellietbeelden en medische diagnostiek.

Lees meer over de voordelen van sliced inference in onze documentatie.

Kan ik voorspellingsresultaten visualiseren als ik YOLOv8 met SAHI gebruik?

Ja, je kunt voorspellingsresultaten visualiseren als je YOLOv8 met SAHI gebruikt. Hier lees je hoe je de resultaten kunt exporteren en visualiseren:

result.export_visuals(export_dir="demo_data/")
from IPython.display import Image

Image("demo_data/prediction_visual.png")

Dit commando slaat de gevisualiseerde voorspellingen op in de opgegeven map, waarna je de afbeelding kunt laden om deze in je notitieblok of applicatie te bekijken. Kijk voor een gedetailleerde handleiding in de Standaard Inferentie sectie.

Welke functies biedt SAHI om YOLOv8 objectdetectie te verbeteren?

SAHI (Slicing Aided Hyper Inference) biedt verschillende functies die een aanvulling zijn op Ultralytics YOLOv8 voor objectdetectie:

  • Naadloze integratie: SAHI integreert eenvoudig met YOLO modellen en vereist minimale aanpassingen in de code.
  • EfficiĆ«nt gebruik van bronnen: Het verdeelt grote afbeeldingen in kleinere segmenten, waardoor het geheugengebruik en de snelheid worden geoptimaliseerd.
  • Hoge nauwkeurigheid: Door overlappende detectievelden effectief samen te voegen tijdens het stikproces, behoudt SAHI een hoge detectienauwkeurigheid.

Lees voor een beter begrip over de belangrijkste kenmerken van SAHI.

Hoe pak ik grootschalige inferentieprojecten aan met YOLOv8 en SAHI?

Volg deze best practices om grootschalige inferentieprojecten uit te voeren met YOLOv8 en SAHI:

  1. Installeer de benodigde bibliotheken: Zorg ervoor dat je de nieuwste versies van ultralytics en sahi hebt.
  2. Gesneden inferentie configureren: Bepaal de optimale slice afmetingen en overlapratio's voor je specifieke project.
  3. Batchvoorspellingen uitvoeren: Gebruik de mogelijkheden van SAHI om batchvoorspellingen uit te voeren op een map met afbeeldingen, wat de efficiƫntie verbetert.

Voorbeeld voor batchvoorspelling:

from sahi.predict import predict

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

Ga voor meer gedetailleerde stappen naar ons gedeelte over Batchvoorspelling.



Aangemaakt 2023-11-12, Bijgewerkt 2024-07-05
Auteurs: glenn-jocher (7), RizwanMunawar (1)

Reacties