Overslaan naar inhoud

Overzicht Instance Segmentatie Datasets

Ondersteunde datasetformaten

Ultralytics YOLO formaat

Het labelformaat van de dataset dat wordt gebruikt voor het trainen van YOLO segmentatiemodellen is als volgt:

  1. EĆ©n tekstbestand per afbeelding: Elke afbeelding in de dataset heeft een bijbehorend tekstbestand met dezelfde naam als het afbeeldingsbestand en de extensie ".txt".
  2. EĆ©n rij per object: Elke rij in het tekstbestand komt overeen met Ć©Ć©n object in de afbeelding.
  3. Objectinformatie per rij: Elke rij bevat de volgende informatie over de objectinstantie:
    • Objectklasse-index: Een geheel getal dat de klasse van het object weergeeft (bijv. 0 voor persoon, 1 voor auto, etc.).
    • Object begrenzende coƶrdinaten: De begrenzende coƶrdinaten rond het maskergebied, genormaliseerd tussen 0 en 1.

Het formaat voor een enkele rij in het segmentatiedatasetbestand is als volgt:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

In dit formaat, <class-index> is de index van de klasse voor het object, en <x1> <y1> <x2> <y2> ... <xn> <yn> zijn de begrenzende coƶrdinaten van het segmentatiemasker van het object. De coƶrdinaten worden gescheiden door spaties.

Hier is een voorbeeld van het formaat van de YOLO dataset voor een enkele afbeelding met twee objecten die bestaan uit een driepuntssegment en een vijfpuntssegment.

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104

Tip

  • De lengte van elke rij hoeft niet gelijk te zijn.
  • Elk segmentatielabel moet een minimaal 3 xy-punten: <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Dataset YAML formaat

Het Ultralytics framework gebruikt een YAML bestandsformaat om de dataset en modelconfiguratie voor het trainen van detectiemodellen te definiƫren. Hier is een voorbeeld van het YAML-formaat dat wordt gebruikt voor het definiƫren van een detectiedataset:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8-seg  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)

# Classes (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

De train en val velden geven de paden aan naar de mappen met respectievelijk de trainings- en validatieafbeeldingen.

names is een woordenboek met klassennamen. De volgorde van de namen moet overeenkomen met de volgorde van de objectklasse-indices in de YOLO datasetbestanden.

Gebruik

Voorbeeld

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-seg.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640

Ondersteunde datasets

Ondersteunde datasets

  • COCO: Een uitgebreide dataset voor objectdetectie, segmentatie en bijschriften, met meer dan 200.000 gelabelde afbeeldingen in een groot aantal categorieĆ«n.
  • COCO8-seg: Een compacte subset van 8 beelden van COCO, ontworpen voor het snel testen van segmentatiemodeltraining, ideaal voor CI-controles en workflowvalidatie in de ultralytics bergplaats.
  • Carparts-seg: Een gespecialiseerde dataset gericht op de segmentatie van auto-onderdelen, ideaal voor toepassingen in de auto-industrie. Het bevat een verscheidenheid aan voertuigen met gedetailleerde annotaties van afzonderlijke auto-onderdelen.
  • Crack-seg: Een dataset op maat voor de segmentatie van scheuren in verschillende oppervlakken. Essentieel voor infrastructuuronderhoud en kwaliteitscontrole, het levert gedetailleerde beelden voor het trainen van modellen om structurele zwakheden te identificeren.
  • Package-seg: Een dataset gewijd aan de segmentatie van verschillende soorten verpakkingsmaterialen en -vormen. Het is vooral nuttig voor logistiek en magazijnautomatisering en helpt bij de ontwikkeling van systemen voor het verwerken en sorteren van verpakkingen.

Je eigen dataset toevoegen

Als je een eigen dataset hebt en deze wilt gebruiken voor het trainen van segmentatiemodellen met Ultralytics YOLO formaat, zorg er dan voor dat deze het formaat volgt dat hierboven is gespecificeerd onder "Ultralytics YOLO formaat". Converteer je annotaties naar het vereiste formaat en specificeer de paden, het aantal klassen en de klassennamen in het YAML-configuratiebestand.

Labelindelingen overzetten of converteren

COCO-gegevensverzamelingsformaat naar YOLO formaat

Je kunt eenvoudig labels converteren van het populaire COCO dataset formaat naar het YOLO formaat met behulp van het volgende codefragment:

Voorbeeld

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Dit conversieprogramma kan worden gebruikt om de COCO dataset of elke andere dataset in het COCO formaat te converteren naar het Ultralytics YOLO formaat.

Vergeet niet om te controleren of de dataset die je wilt gebruiken compatibel is met je model en de benodigde opmaakconventies volgt. Goed geformatteerde datasets zijn cruciaal voor het trainen van succesvolle objectdetectiemodellen.

Auto-Annotatie

Auto-annotatie is een essentiƫle functie waarmee je een segmentatiedataset kunt genereren met behulp van een vooraf getraind detectiemodel. Hiermee kun je snel en nauwkeurig een groot aantal afbeeldingen annoteren zonder dat je handmatig hoeft te labelen, wat tijd en moeite bespaart.

Segmentatiedataset genereren met detectiemodel

Om je dataset automatisch te annoteren met behulp van het Ultralytics framework, kun je de auto_annotate functie zoals hieronder getoond:

Voorbeeld

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam_b.pt")
Argument Type Beschrijving Standaard
data str Pad naar een map met afbeeldingen die geannoteerd moeten worden. None
det_model str, optional Voorgetraind YOLO detectiemodel. Standaard ingesteld op 'yolov8x.pt'. 'yolov8x.pt'
sam_model str, optional Voorgetraind SAM segmentatiemodel. Standaard ingesteld op 'sam_b.pt'. 'sam_b.pt'
device str, optional Apparaat om de modellen op uit te voeren. Standaard een lege string (CPU of GPU, indien beschikbaar). ''
output_dir str or None, optional Directory om de geannoteerde resultaten op te slaan. Standaard een 'labels' map in dezelfde map als 'data'. None

De auto_annotate De functie neemt het pad naar je afbeeldingen, samen met optionele argumenten voor het specificeren van de voorgetrainde detectie en SAM segmentatiemodellenhet apparaat om de modellen op uit te voeren en de uitvoermap om de geannoteerde resultaten op te slaan.

Door gebruik te maken van de kracht van vooraf getrainde modellen, kan auto-annotatie de tijd en moeite die nodig zijn voor het maken van segmentatiedatasets van hoge kwaliteit aanzienlijk verminderen. Deze functie is vooral nuttig voor onderzoekers en ontwikkelaars die werken met grote beeldcollecties, omdat ze zich kunnen richten op modelontwikkeling en evaluatie in plaats van handmatige annotatie.

FAQ

Welke dataset formaten ondersteunt Ultralytics YOLO voor instance segmentatie?

Ultralytics YOLO ondersteunt verschillende datasetformaten voor bijvoorbeeld segmentatie, waarbij het primaire formaat het eigen Ultralytics YOLO formaat is. Voor elke afbeelding in je dataset heb je een corresponderend tekstbestand nodig met objectinformatie gesegmenteerd in meerdere rijen (een rij per object), met de klasse-index en genormaliseerde begrenzende coƶrdinaten. Voor meer gedetailleerde instructies over het formaat van de YOLO dataset, bezoek je het Overzicht Instance Segmentation Datasets.

Hoe kan ik COCO annotaties van datasets converteren naar het YOLO formaat?

Het converteren van annotaties in COCO-formaat naar YOLO formaat is eenvoudig met de Ultralytics tools. Je kunt de convert_coco functie van de ultralytics.data.converter module:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Dit script converteert je COCO dataset annotaties naar het vereiste YOLO formaat, waardoor het geschikt wordt voor het trainen van je YOLO modellen. Raadpleeg Port of Convert Label Formats voor meer informatie.

Hoe bereid ik een YAML-bestand voor om Ultralytics YOLO modellen te trainen?

Om een YAML-bestand voor te bereiden voor het trainen van YOLO modellen met Ultralytics, moet je de datasetpaden en klassenamen definiƫren. Hier is een voorbeeld van een YAML-configuratie:

path: ../datasets/coco8-seg  # dataset root dir
train: images/train  # train images (relative to 'path') 
val: images/val  # val images (relative to 'path') 

names:
  0: person
  1: bicycle
  2: car
  # ...

Zorg ervoor dat je de paden en klassenamen aanpast aan je dataset. Kijk voor meer informatie in de sectie Dataset YAML Formaat.

Wat is de auto-annotatiefunctie in Ultralytics YOLO ?

Met auto-annotatie in Ultralytics YOLO kun je segmentatie-annotaties genereren voor je dataset met behulp van een vooraf getraind detectiemodel. Dit vermindert de noodzaak voor handmatig labelen aanzienlijk. Je kunt de auto_annotate functie als volgt:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam_b.pt")

Deze functie automatiseert het annotatieproces, waardoor het sneller en efficiƫnter verloopt. Ga voor meer informatie naar de sectie Automatisch annoteren.



Aangemaakt 2023-11-12, Bijgewerkt 2024-07-04
Auteurs: glenn-jocher (12), Burhan-Q (1)

Reacties