Overslaan naar inhoud

Oriented Bounding Box (OBB) Datasets Overzicht

Voor het trainen van een nauwkeurig objectdetectiemodel met georiƫnteerde bounding boxes (OBB) is een grondige dataset nodig. Deze gids geeft uitleg over de verschillende OBB datasetformaten die compatibel zijn met Ultralytics YOLO modellen en biedt inzicht in hun structuur, toepassing en methoden voor formaatconversies.

Ondersteunde OBB Dataset Formaten

YOLO OBB-indeling

Het YOLO OBB formaat duidt bounding boxes aan met hun vier hoekpunten met coƶrdinaten genormaliseerd tussen 0 en 1. Het volgt dit formaat:

class_index, x1, y1, x2, y2, x3, y3, x4, y4

Intern verwerkt YOLO verliezen en output in de xywhr formaat, dat het middelpunt (xy), de breedte, de hoogte en de rotatie van de bounding box weergeeft.

OBB-formaat voorbeelden

Een voorbeeld van een *.txt labelbestand voor de bovenstaande afbeelding, dat een object van de klasse 0 in OBB-formaat, zou er zo uit kunnen zien:

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

Gebruik

Om een model te trainen met deze OBB-indelingen:

Voorbeeld

from ultralytics import YOLO

# Create a new YOLOv8n-OBB model from scratch
model = YOLO("yolov8n-obb.yaml")

# Train the model on the DOTAv2 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=640)
# Train a new YOLOv8n-OBB model on the DOTAv2 dataset
yolo detect train data=DOTAv1.yaml model=yolov8n.pt epochs=100 imgsz=640

Ondersteunde datasets

Momenteel worden de volgende datasets met Oriented Bounding Boxes ondersteund:

  • DOTA-v2: DOTA (A Large-scale Dataset for Object Detection in Aerial Images) versie 2, legt de nadruk op detectie vanuit luchtperspectief en bevat georiĆ«nteerde bounding boxes met 1,7 miljoen instanties en 11.268 afbeeldingen.
  • DOTA8: Een kleine subset van 8 afbeeldingen van de volledige DOTA dataset die geschikt is voor het testen van workflows en Continuous Integration (CI) controles van OBB training in de ultralytics bergplaats.

Je eigen OBB dataset opnemen

Voor degenen die hun eigen datasets met georiƫnteerde bounding boxes willen introduceren, moet je zorgen voor compatibiliteit met het hierboven genoemde "YOLO OBB formaat". Converteer je annotaties naar dit vereiste formaat en detailleer de paden, klassen en klassenamen in een bijbehorend YAML configuratiebestand.

Labelindelingen omzetten

DOTA Dataset-indeling naar YOLO OBB-indeling

Overgang van labels van het DOTA dataset formaat naar het YOLO OBB formaat kan worden bereikt met dit script:

Voorbeeld

from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

Dit conversiemechanisme is van groot belang voor datasets in het DOTA formaat en zorgt voor afstemming met het Ultralytics YOLO OBB formaat.

Het is noodzakelijk om de compatibiliteit van de dataset met je model te valideren en je te houden aan de noodzakelijke formaatconventies. Goed gestructureerde datasets zijn cruciaal voor het trainen van efficiƫnte objectdetectiemodellen met georiƫnteerde bounding boxes.

FAQ

Wat zijn Oriented Bounding Boxes (OBB) en hoe worden ze gebruikt in Ultralytics YOLO modellen?

Oriented Bounding Boxes (OBB) zijn een type bounding box annotatie waarbij de box kan worden geroteerd om beter uitgelijnd te zijn met het object dat wordt gedetecteerd, in plaats van alleen as-uitgelijnd. Dit is vooral handig in lucht- of satellietbeelden waar objecten mogelijk niet zijn uitgelijnd met de beeldassen. In Ultralytics YOLO modellen worden OBB's gerepresenteerd door hun vier hoekpunten in het YOLO OBB-formaat. Dit maakt een nauwkeurigere objectdetectie mogelijk omdat de bounding boxes kunnen roteren om beter bij de objecten te passen.

Hoe converteer ik mijn bestaande DOTA datasetlabels naar YOLO OBB formaat voor gebruik met Ultralytics YOLOv8 ?

Je kunt DOTA datasetlabels converteren naar YOLO OBB formaat met het convert_dota_to_yolo_obb functie van Ultralytics. Deze conversie zorgt voor compatibiliteit met de Ultralytics YOLO modellen, zodat je de OBB mogelijkheden kunt gebruiken voor verbeterde objectdetectie. Hier is een snel voorbeeld:

from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

Dit script formatteert je DOTA annotaties naar een formaat dat compatibel is met YOLO.

Hoe train ik een YOLOv8 model met georiƫnteerde bounding boxes (OBB) op mijn dataset?

Voor het trainen van een YOLOv8 model met OBB's moet je ervoor zorgen dat je dataset in het YOLO OBB formaat is en dan de Ultralytics API gebruiken om het model te trainen. Hier is een voorbeeld in zowel Python als CLI:

Voorbeeld

from ultralytics import YOLO

# Create a new YOLOv8n-OBB model from scratch
model = YOLO("yolov8n-obb.yaml")

# Train the model on the custom dataset
results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)
# Train a new YOLOv8n-OBB model on the custom dataset
yolo detect train data=your_dataset.yaml model=yolov8n.pt epochs=100 imgsz=640

Dit zorgt ervoor dat je model gebruik maakt van de gedetailleerde OBB annotaties voor een verbeterde detectienauwkeurigheid.

Welke datasets worden momenteel ondersteund voor OBB-training in Ultralytics YOLO modellen?

Momenteel ondersteunt Ultralytics de volgende datasets voor OBB-training:

  • DOTA-v2: Deze dataset bevat 1,7 miljoen instanties met georiĆ«nteerde bounding boxes en 11.268 afbeeldingen, voornamelijk gericht op objectdetectie vanuit de lucht.
  • DOTA8: Een kleinere subset van 8 afbeeldingen van de DOTA dataset die wordt gebruikt voor testen en continue integratie (CI) controles.

Deze datasets zijn op maat gemaakt voor scenario's waarin OBB's een aanzienlijk voordeel bieden, zoals analyse van lucht- en satellietbeelden.

Kan ik mijn eigen dataset met georiƫnteerde bounding boxes gebruiken voor YOLOv8 training, en zo ja, hoe?

Ja, je kunt je eigen dataset met georiƫnteerde bounding boxes gebruiken voor YOLOv8 training. Zorg ervoor dat de annotaties van je dataset geconverteerd zijn naar het YOLO OBB formaat, waarbij bounding boxes gedefinieerd worden aan de hand van hun vier hoekpunten. Je kunt dan een YAML configuratiebestand maken waarin de paden, klassen en andere noodzakelijke details van de dataset worden gespecificeerd. Raadpleeg de sectie Ondersteunde datasets voor meer informatie over het maken en configureren van je datasets.



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

Reacties