Overslaan naar inhoud

Technieken voor het voorbewerken van gegevens voor geannoteerde Computer Vision-gegevens

Inleiding

Nadat je de doelen van je computervisieproject hebt gedefinieerd en gegevens hebt verzameld en geannoteerd, is de volgende stap om de geannoteerde gegevens voor te bewerken en voor te bereiden op de modeltraining. Schone en consistente gegevens zijn van vitaal belang om een model te maken dat goed presteert.

Voorbewerking is een stap in de workflow van computervisieprojecten die bestaat uit het aanpassen van de grootte van afbeeldingen, het normaliseren van pixelwaarden, het vergroten van de dataset en het opsplitsen van de gegevens in een trainings-, validatie- en testset. Laten we de essentiƫle technieken en best practices voor het opschonen van je gegevens verkennen!

Belang van voorbewerking van gegevens

We zijn al bezig met het zorgvuldig verzamelen en annoteren van onze gegevens met meerdere overwegingen in gedachten. Wat maakt het voorbewerken van gegevens dan zo belangrijk voor een computer vision-project? Welnu, bij gegevensvoorverwerking gaat het erom uw gegevens in een geschikt formaat te krijgen voor training die de rekenbelasting vermindert en de modelprestaties helpt verbeteren. Hier volgen enkele veelvoorkomende problemen met onbewerkte gegevens die worden aangepakt door voorverwerking:

  • Ruis: Irrelevante of willekeurige variaties in gegevens.
  • Inconsistentie: Variaties in afbeeldingsformaten, formaten en kwaliteit.
  • Onevenwichtigheid: Ongelijke verdeling van klassen of categorieĆ«n in de dataset.

Technieken voor het voorbewerken van gegevens

Een van de eerste en belangrijkste stappen bij het voorbewerken van gegevens is het wijzigen van het formaat. Sommige modellen zijn ontworpen om variabele invoergroottes te verwerken, maar veel modellen vereisen een consistente invoergrootte. Door het formaat van afbeeldingen te wijzigen, worden ze uniform en wordt de computationele complexiteit verminderd.

Afbeeldingen vergroten of verkleinen

U kunt het formaat van uw afbeeldingen op de volgende manieren wijzigen:

  • Bilineaire interpolatie: Maakt pixelwaarden glad door een gewogen gemiddelde te nemen van de vier dichtstbijzijnde pixelwaarden.
  • Dichtstbijzijnde buur: Wijst de dichtstbijzijnde pixelwaarde toe zonder te middelen, wat leidt tot een blokkerige afbeelding maar snellere berekening.

Om het wijzigen van het formaat een eenvoudigere taak te maken, kunt u de volgende hulpmiddelen gebruiken:

  • OpenCV: Een populaire computer vision library met uitgebreide functies voor beeldverwerking.
  • PIL (kussen): Een Python afbeeldingsbibliotheek voor het openen, manipuleren en opslaan van afbeeldingsbestanden.

Met betrekking tot YOLOv8 maakt de parameter 'imgsz' tijdens de modeltraining flexibele invoerformaten mogelijk. Als deze wordt ingesteld op een specifieke grootte, zoals 640, zal het model de grootte van invoerafbeeldingen aanpassen zodat hun grootste afmeting 640 pixels is, terwijl de oorspronkelijke beeldverhouding behouden blijft.

Door de specifieke behoeften van uw model en gegevensset te evalueren, kunt u bepalen of het wijzigen van het formaat een noodzakelijke voorbewerkingsstap is of dat uw model efficiƫnt kan omgaan met afbeeldingen van verschillende groottes.

Pixelwaarden normaliseren

Een andere voorbewerkingstechniek is normalisatie. Normalisatie schaalt de pixelwaarden naar een standaardbereik, wat helpt bij een snellere convergentie tijdens de training en de prestaties van het model verbetert. Hier volgen enkele veelgebruikte normalisatietechnieken:

  • Min-Max schalen: Schaalt pixelwaarden naar een bereik van 0 tot 1.
  • Z-score normalisatie: Schaalt pixelwaarden op basis van hun gemiddelde en standaardafwijking.

Met betrekking tot YOLOv8, wordt normalisatie naadloos afgehandeld als onderdeel van de voorverwerkingspijplijn tijdens modeltraining. YOLOv8 voert automatisch verschillende voorbewerkingsstappen uit, waaronder conversie naar RGB, het schalen van pixelwaarden naar het bereik [0, 1] en normalisatie met behulp van vooraf gedefinieerde gemiddelde en standaarddeviatiewaarden.

De gegevensset splitsen

Nadat u de gegevens hebt opgeschoond, bent u klaar om de gegevensset te splitsen. Het opsplitsen van de gegevens in trainings-, validatie- en testsets wordt gedaan om ervoor te zorgen dat het model kan worden geƫvalueerd op ongeziene gegevens om de generalisatieprestaties te beoordelen. Een gebruikelijke verdeling is 70% voor training, 20% voor validatie en 10% voor testen. Er zijn verschillende tools en bibliotheken die u kunt gebruiken om uw gegevens te splitsen, zoals scikit-learn of TensorFlow.

Houd rekening met het volgende bij het splitsen van uw gegevensset:

  • Gegevensverdeling handhaven: Zorg ervoor dat de gegevensdistributie van klassen over de trainings-, validatie- en testsets behouden blijft.
  • Lekken van gegevens voorkomen: Gewoonlijk wordt gegevensuitbreiding uitgevoerd nadat de dataset is gesplitst. Gegevensuitbreiding en andere voorbewerkingen moeten alleen worden toegepast op de trainingsset om te voorkomen dat informatie uit de validatie- of testsets de modeltraining beĆÆnvloedt. -Klassen uitbalanceren: Overweeg voor onevenwichtige datasets technieken zoals het oversamplen van de minderheidsklasse of het ondersamplen van de meerderheidsklasse binnen de trainingsset.

Wat is Data Augmentation?

De meest besproken stap in de voorbewerking van gegevens is gegevensvergroting. Gegevensvergroting vergroot kunstmatig de grootte van de gegevensset door aangepaste versies van afbeeldingen te maken. Door uw gegevens uit te breiden, kunt u overfitting verminderen en de modelgeneralisatie verbeteren.

Hier zijn enkele andere voordelen van gegevensvergroting:

  • CreĆ«ert een robuustere dataset: Gegevensuitbreiding kan het model robuuster maken voor variaties en vervormingen in de invoergegevens. Hieronder vallen veranderingen in belichting, oriĆ«ntatie en schaal.
  • Kosteneffectief: Gegevensuitbreiding is een kosteneffectieve manier om de hoeveelheid trainingsgegevens te vergroten zonder nieuwe gegevens te verzamelen en te labelen.
  • Beter gebruik van gegevens: Elk beschikbaar gegevenspunt wordt maximaal benut door nieuwe variaties te creĆ«ren.

Methoden voor gegevensvergroting

Veelgebruikte augmentatietechnieken zijn onder meer spiegelen, roteren, schalen en kleuraanpassingen. Verschillende bibliotheken, zoals Albumentations, Imgaug en TensorFlow's ImageDataGenerator, kan deze augmentaties genereren.

Overzicht van gegevensuitbreidingen

Met betrekking tot YOLOv8 kun je je aangepaste dataset vergroten door het configuratiebestand van de dataset, een .yaml bestand, aan te passen. In dit bestand kun je een uitbreidingssectie toevoegen met parameters die aangeven hoe je je gegevens wilt uitbreiden.

De Ultralytics YOLOv8 repository ondersteunt een breed scala aan gegevensuitbreidingen. Je kunt verschillende transformaties toepassen zoals:

  • Willekeurige gewassen
  • Spiegelen: Afbeeldingen kunnen horizontaal of verticaal worden gespiegeld.
  • Rotatie: Afbeeldingen kunnen onder specifieke hoeken worden geroteerd.
  • Deformatie

U kunt ook de intensiteit van deze augmentatietechnieken aanpassen door middel van specifieke parameters om meer gegevensvariatie te genereren.

Een casestudy van voorbewerking

Denk aan een project gericht op het ontwikkelen van een model om verschillende soorten voertuigen te detecteren en te classificeren in verkeersbeelden met behulp van YOLOv8. We hebben verkeersafbeeldingen verzameld en deze geannoteerd met begrenzingsvakken en labels.

Dit is hoe elke stap van de voorbewerking eruit zou zien voor dit project:

  • Formaat van afbeeldingen wijzigen: Sinds YOLOv8 Verwerkt flexibele invoergroottes en past het formaat automatisch aan, handmatig formaat wijzigen is niet vereist. Het model past de afbeeldingsgrootte aan volgens de opgegeven 'imgsz'-parameter tijdens de training.
  • Pixelwaarden normaliseren: YOLOv8 Normaliseert pixelwaarden automatisch naar een bereik van 0 tot 1 tijdens de voorbewerking, dus dit is niet vereist.
  • De gegevensset splitsen: Verdeel de gegevensset in trainingssets (70%), validatiesets (20%) en tests (10%) met behulp van tools zoals scikit-learn.
  • Gegevensvergroting: Wijzig het configuratiebestand van de gegevensset (.yaml) om technieken voor gegevensvergroting op te nemen, zoals willekeurig bijsnijden, horizontaal spiegelen en helderheidsaanpassingen.

Deze stappen zorgen ervoor dat de dataset zonder mogelijke problemen wordt voorbereid en klaar is voor Exploratory Data Analysis (EDA).

Verkennende data-analysetechnieken

Na het voorbewerken en uitbreiden van uw dataset, is de volgende stap het verkrijgen van inzichten door middel van Exploratory Data Analysis. EDA maakt gebruik van statistische technieken en visualisatietools om inzicht te krijgen in de patronen en verdelingen in uw gegevens. U kunt problemen zoals onevenwichtigheden of uitschieters in klassen identificeren en weloverwogen beslissingen nemen over verdere gegevensvoorverwerking of aanpassingen van modeltraining.

Statistische EDA-technieken

Statistische technieken beginnen vaak met het berekenen van basisstatistieken zoals gemiddelde, mediaan, standaarddeviatie en bereik. Deze statistieken bieden een snel overzicht van de eigenschappen van uw afbeeldingsgegevensset, zoals de verdeling van de pixelintensiteit. Als u deze basisstatistieken begrijpt, krijgt u inzicht in de algehele kwaliteit en kenmerken van uw gegevens, zodat u eventuele onregelmatigheden in een vroeg stadium kunt opsporen.

Visuele EDA-technieken

Visualisaties zijn essentieel in EDA voor afbeeldingsgegevenssets. De analyse van klassenonevenwichtigheden is bijvoorbeeld een ander essentieel aspect van EDA. Het helpt te bepalen of bepaalde klassen ondervertegenwoordigd zijn in uw dataset, Het visualiseren van de verdeling van verschillende afbeeldingsklassen of categorieĆ«n met behulp van staafdiagrammen kan snel eventuele onevenwichtigheden aan het licht brengen. Op dezelfde manier kunnen uitschieters worden geĆÆdentificeerd met behulp van visualisatietools zoals boxplots, die anomalieĆ«n in pixelintensiteit of functieverdelingen markeren. Detectie van uitschieters voorkomt dat ongebruikelijke gegevenspunten uw resultaten vertekenen.

Veelgebruikte hulpmiddelen voor visualisaties zijn onder meer:

  • Histogrammen en boxplots: handig voor het begrijpen van de verdeling van pixelwaarden en het identificeren van uitschieters.
  • Spreidingsdiagrammen: Handig voor het verkennen van relaties tussen afbeeldingskenmerken of annotaties.
  • Heatmaps: Effectief voor het visualiseren van de verdeling van pixelintensiteiten of de ruimtelijke verdeling van geannoteerde objecten in afbeeldingen.

Gebruik Ultralytics Verkenner voor EDA

Voor een meer geavanceerde benadering van EDA kunt u de Ultralytics Verkenner gereedschap. Het biedt robuuste mogelijkheden voor het verkennen van computer vision-datasets. Door semantisch zoeken, SQL-query's en zoeken naar vectorovereenkomsten te ondersteunen, maakt de tool het gemakkelijk om uw gegevens te analyseren en te begrijpen. Met Ultralytics In Explorer kunt u insluitingen voor uw gegevensset maken om vergelijkbare afbeeldingen te vinden, SQL-query's uitvoeren voor gedetailleerde analyse en semantische zoekopdrachten uitvoeren, allemaal via een gebruiksvriendelijke grafische interface.

Overzicht van Ultralytics Verkenner

Neem contact op en maak contact

Door gesprekken over uw project te voeren met andere liefhebbers van computervisie, kunt u nieuwe ideeƫn vanuit verschillende perspectieven krijgen. Hier zijn enkele geweldige manieren om te leren, problemen op te lossen en te netwerken:

Kanalen om in contact te komen met de community

  • GitHub problemen: Bezoek de YOLOv8 GitHub repository en gebruik de Issues tab om vragen te stellen, bugs te melden en features voor te stellen. De gemeenschap en beheerders staan klaar om je te helpen met eventuele problemen.
  • Ultralytics Discord-server: Word lid van de Ultralytics Discord server om in contact te komen met andere gebruikers en ontwikkelaars, ondersteuning te krijgen, kennis te delen en ideeĆ«n te brainstormen.

Officiƫle documentatie

  • Ultralytics YOLOv8 Documentatie: Raadpleeg de officiĆ«le YOLOv8 documentatie voor grondige handleidingen en waardevolle inzichten in talloze computer vision taken en projecten.

Uw dataset is klaar!

Gegevens waarvan het formaat op de juiste manier wordt gewijzigd, genormaliseerd en uitgebreid, verbeteren de prestaties van het model door ruis te verminderen en generalisatie te verbeteren. Door de voorbewerkingstechnieken en best practices te volgen die in deze handleiding worden beschreven, kunt u een solide gegevensset maken. Als uw voorbewerkte dataset klaar is, kunt u vol vertrouwen doorgaan naar de volgende stappen in uw project.

FAQ

Wat is het belang van gegevensvoorbewerking in computervisieprojecten?

Het voorbewerken van gegevens is essentieel bij computer vision projecten omdat het ervoor zorgt dat de gegevens schoon, consistent en in een formaat zijn dat optimaal is voor modeltraining. Door problemen zoals ruis, inconsistentie en onevenwichtigheid in de ruwe gegevens aan te pakken, helpen voorbewerkingsstappen zoals verkleinen, normaliseren, vergroten en opsplitsen van datasets de computerbelasting te verminderen en de modelprestaties te verbeteren. Ga voor meer informatie naar de stappen van een computervisieproject.

Hoe kan ik Ultralytics YOLO gebruiken voor gegevensvergroting?

Voor gegevensvergroting met Ultralytics YOLOv8 moet je het configuratiebestand van de dataset (.yaml) aanpassen. In dit bestand kun je verschillende ophogingstechnieken specificeren, zoals willekeurige bijsnijdingen, horizontale flips en helderheidsaanpassingen. Dit kan effectief worden gedaan met behulp van de trainingsconfiguraties die hier worden uitgelegd. Gegevensuitbreiding helpt om een robuustere dataset te maken, overfitting te verminderen en de generalisatie van het model te verbeteren.

Wat zijn de beste datanormaliseringstechnieken voor computervisiegegevens?

Normalisatie schaalt pixelwaarden naar een standaardbereik voor snellere convergentie en betere prestaties tijdens het trainen. Gebruikelijke technieken zijn onder andere:

  • Min-Max schalen: Schaalt pixelwaarden naar een bereik van 0 tot 1.
  • Z-score normalisatie: Schaalt pixelwaarden op basis van hun gemiddelde en standaardafwijking.

Voor YOLOv8 wordt normalisatie automatisch uitgevoerd, inclusief conversie naar RGB en schaling van pixelwaarden. Lees er meer over in het gedeelte over modeltraining.

Hoe moet ik mijn geannoteerde dataset voor training opsplitsen?

Om je dataset op te splitsen, is het gebruikelijk om deze te verdelen in 70% voor training, 20% voor validatie en 10% voor testen. Het is belangrijk om de gegevensverdeling van klassen over deze splitsingen te behouden en gegevenslekkage te voorkomen door augmentatie alleen op de trainingsset uit te voeren. Gebruik tools zoals scikit-learn of TensorFlow voor het efficiƫnt splitsen van de dataset. Zie de gedetailleerde handleiding voor het voorbereiden van de dataset.

Kan ik verschillende afbeeldingsformaten verwerken in YOLOv8 zonder handmatig de grootte aan te passen?

Ja, Ultralytics YOLOv8 kan omgaan met verschillende afbeeldingsformaten via de 'imgsz' parameter tijdens de modeltraining. Deze parameter zorgt ervoor dat het formaat van afbeeldingen wordt aangepast zodat hun grootste afmeting overeenkomt met de opgegeven grootte (bijvoorbeeld 640 pixels), terwijl de beeldverhouding behouden blijft. Kijk voor meer flexibele invoerverwerking en automatische aanpassingen in het gedeelte over modeltraining.



Aangemaakt 2024-05-31, Bijgewerkt 2024-07-05
Auteurs: glenn-jocher (4), abirami-vina (1)

Reacties