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

Zeker, hier is de tabel bijgewerkt met codefragmenten:

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.



Gemaakt op 2023-11-12, Bijgewerkt op 2024-04-18
Auteurs: glenn-jocher (8)

Reacties