Zephyrnet-logo

Op kleine dataset gebaseerde objectdetectie

Datum:

objectdetectie in logboeken
Illustratie: © IoT For All

Aan de slag met een machine learning-project begint vaak met de vraag: "Hoeveel data is genoeg?" Het antwoord hangt af van een aantal factoren zoals de diversiteit aan productiedata, de beschikbaarheid van open source datasets en de verwachte performance van het systeem; de lijst kan nog een hele tijd doorgaan. In dit artikel willen we een populaire mythe ontkrachten dat machines alleen leren van grote hoeveelheden gegevens, en een gebruiksvoorbeeld delen van het toepassen van ML met een kleine dataset. 

Met de snelle adoptie van diepgaand leren in computervisie zijn er een groeiend aantal uiteenlopende taken die met behulp van machines moeten worden opgelost. Laten we ons concentreren op de taak van objectdetectie om deze machine learning-toepassingen voor kleine datasets in de echte wereld te begrijpen.

Wat is objectdetectie? 

Objectdetectie is een tak van computervisie die zich bezighoudt met het identificeren en lokaliseren van objecten in een foto of video. Het doel van objectdetectie is om met behulp van machine learning objecten met bepaalde kenmerken in een digitale afbeelding of video te vinden. Objectdetectie is vaak een voorbereidende stap voor itemherkenning: eerst moeten we objecten identificeren en pas dan kunnen we herkenningsmodellen toepassen om bepaalde elementen te identificeren. 

Objectdetectie Zakelijke use-cases 

Objectdetectie is een kerntaak van AI-aangedreven oplossingen voor taken zoals visuele inspectie, magazijnautomatisering, voorraadbeheer, beveiliging en meer. Hieronder vindt u enkele gebruiksscenario's voor objectdetectie die met succes in verschillende sectoren zijn geïmplementeerd.

Productie

Van kwaliteitsborging en voorraadbeheer tot sorteren en assembleren, objectdetectie speelt een belangrijke rol bij de automatisering van veel productieprocessen. Met machine learning-algoritmen kan het systeem snel eventuele defecten detecteren of automatisch objecten tellen en lokaliseren. Met deze algoritmen kunnen ze de nauwkeurigheid van de voorraad verbeteren door menselijke fouten en de tijd die wordt besteed aan het controleren en sorteren van deze objecten te minimaliseren.

Automotive Services

Machine learning wordt gebruikt in zelfrijdende auto's, voetgangersdetectie en optimalisatie van de verkeersstroom in steden. Objectdetectie wordt gebruikt om voertuigen en obstakels in de directe omgeving van de bestuurder waar te nemen. In het transport wordt objectherkenning gebruikt om voertuigen te detecteren en te tellen. Het wordt ook gebruikt voor verkeersanalyse en helpt bij het detecteren van auto's die zijn gestopt op snelwegen of kruispunten.

Retail

Objectdetectie helpt bij het detecteren van SKU's (Stock Keeping Units) door schapafbeeldingen te analyseren en te vergelijken met de ideale staat. СComputer vision-technieken die in hardware zijn geïntegreerd, helpen de wachttijd in winkels te verminderen, de manier waarop klanten omgaan met producten te volgen en de levering te automatiseren. 

Gezondheidszorg

Objectdetectie wordt gebruikt voor het bestuderen van medische beelden zoals CT-scans, MRI's en röntgenfoto's. Het wordt ook gebruikt bij kankerscreening om patiënten met een hoog risico te helpen identificeren, afwijkingen op te sporen en zelfs chirurgische hulp te bieden. Het toepassen van objectdetectie en -herkenning om te helpen bij medische onderzoeken voor telezorg is een nieuwe trend die de manier waarop zorg aan patiënten wordt verleend, zal veranderen. 

Veiligheid en toezicht

Tot de toepassingen van objectdetectie behoren videobewakingssystemen die mensen kunnen detecteren en gezichtsherkenning. Met behulp van machine learning-algoritmen zijn dergelijke systemen ontworpen voor biometrische authenticatie en bewaking op afstand. Deze technologie is zelfs gebruikt voor zelfmoordpreventie.

Logistiek en magazijnautomatisering

Objectdetectiemodellen zijn in staat om producten visueel te inspecteren op defectdetectie, evenals voorraadbeheer, kwaliteitscontrole en automatisering van supply chain management. AI-aangedreven logistieke oplossingen gebruiken objectdetectiemodellen in plaats van barcodedetectie, en vervangen zo handmatig scannen.  

Hoe een objectdetectiesysteem te ontwikkelen: de PoC-aanpak

Het ontwikkelen van een objectdetectiesysteem dat kan worden gebruikt voor taken zoals de bovengenoemde is niet anders dan bij elk ander ML-project. Het begint meestal met het bouwen van een hypothese die moet worden gecontroleerd tijdens verschillende experimentrondes.

Een dergelijke hypothese maakt deel uit van de Proof of Concept (PoC) -benadering in softwareontwikkeling. Het sluit aan bij machine learning, aangezien de levering in dit geval geen eindproduct is. Door onderzoek te doen, komen we tot resultaten waarmee we kunnen bepalen of de gekozen aanpak kan worden gebruikt, of dat er extra experimenten moeten worden uitgevoerd om een ​​andere richting te kiezen.

Als de vraag is "hoeveel gegevens zijn genoeg voor machine learning", kan de hypothese een eerste verklaring zijn, zoals "150 gegevensmonsters zijn genoeg om het model een optimaal prestatieniveau te laten bereiken."

Ervaren ML-beoefenaars zoals: Andrew Ng (mede-oprichter van Google Brain en ex-hoofdwetenschapper bij Baidu) adviseren snel de eerste iteratie van het systeem bouwen met machine learning-functionaliteit, het vervolgens implementeren en van daaruit herhalen.

Deze aanpak stelt ons in staat om een ​​functioneel en schaalbaar prototypesysteem te creëren dat kan worden geüpgraded met de gegevens en feedback van het productieteam. Deze oplossing is veel efficiënter in vergelijking met het vooruitzicht om vanaf het begin het uiteindelijke systeem te bouwen. Voor een dergelijk prototype zijn niet per se grote hoeveelheden data nodig. 

Om de vraag "hoeveel gegevens zijn genoeg" te beantwoorden, is het onmiskenbaar waar dat geen enkele expert op het gebied van machine learning precies kan voorspellen hoeveel gegevens er nodig zijn. De enige manier om erachter te komen, is door een hypothese vast te stellen en deze te testen onder reële omstandigheden. Dit is precies wat we hebben gedaan met het volgende voorbeeld van objectdetectie.

Casestudy: objectdetectie met behulp van kleine dataset voor geautomatiseerd tellen van artikelen in de logistiek

Ons doel was om een ​​systeem te creëren dat objecten voor logistiek kan detecteren. Het transport van goederen van productie naar magazijn of van magazijn naar faciliteiten vereist vaak tussentijdse controle en coördinatie van de werkelijke hoeveelheid met behulp van facturen en een database. Als deze taak handmatig zou worden uitgevoerd, zou dit uren aan menselijk werk vergen en een hoog risico op verlies, schade of letsel met zich meebrengen. 

Onze aanvankelijke hypothese was dat een kleine geannoteerde dataset voldoende zou zijn om het probleem van het automatisch tellen van verschillende items voor logistieke doeleinden aan te pakken. 

De traditionele benadering van het probleem dat velen zouden nemen, is het gebruik van klassieke computervisietechnieken. Men zou bijvoorbeeld een Sobel-filterranddetectie-algoritme kunnen combineren met Hough-cirkeltransformatiemethoden om ronde objecten te detecteren en te tellen. Deze methode is eenvoudig en relatief betrouwbaar; het is echter meer geschikt voor een gecontroleerde omgeving, zoals een productielijn die objecten produceert met een goed gedefinieerde ronde of ovale vorm.

In de gebruikssituatie die we hebben geselecteerd, zijn de klassieke methoden veel minder betrouwbaar, omdat de vorm van de objecten, de kwaliteit van de afbeeldingen en de lichtomstandigheden allemaal sterk kunnen variëren. Bovendien kunnen deze klassieke methoden niet leren van de verzamelde gegevens. Dit maakt het moeilijk om het systeem te verfijnen door meer gegevens te verzamelen. In dit geval zou de beste optie zijn om in plaats daarvan een op een neuraal netwerk gebaseerde objectdetector te verfijnen.

Gegevensverzameling en etikettering 

Om een ​​experiment met objectdetectie uit te voeren met een kleine dataset, hebben we verschillende afbeeldingen verzameld en handmatig geannoteerd die beschikbaar zijn via openbare bronnen. We besloten ons te concentreren op de detectie van houtblokken en verdeelden de geannoteerde afbeeldingen in: trein en bevestiging splitst.

We verzamelden bovendien een set van proef afbeeldingen zonder labels waar de logboeken op een of andere manier zouden verschillen van de trein en validatie-afbeeldingen (oriëntatie, grootte, vorm of kleur van logboeken) om te zien waar de grenzen aan de detectiemogelijkheden van het model liggen voor de gegeven trein in te stellen.

Aangezien we te maken hebben met objectdetectie, worden beeldannotaties weergegeven als selectiekaders. Om ze te maken, gebruikten we een open-source browsergebaseerde tool, VGG-beeldannotator, die voldoende functionaliteit heeft voor het maken van een kleinschalige dataset. Helaas produceert de tool annotaties in zijn eigen formaat die we vervolgens hebben geconverteerd naar de COCO objectdetectie standaard.

Bij objectdetectie wordt de hoeveelheid gegevens niet alleen bepaald door het aantal afbeeldingen in de gegevensset, maar ook door de hoeveelheid afzonderlijke objectinstanties in elke afbeelding. In ons geval waren de afbeeldingen behoorlijk dicht opeengepakt met objecten - het aantal instanties bereikte 50-90 per afbeelding.

Detectron2 Objectdetectie 

Het model dat we besloten te gebruiken was een implementatie van Snellere R-CNN door Facebook in de computer vision-bibliotheek Detector2

Laten we eens nader bekijken hoe Faster R-CNN werkt voor objectdetectie. Eerst wordt een invoerbeeld door de backbone geleid (een diep CNN-model dat vooraf is getraind op een beeldclassificatieprobleem) en wordt het omgezet in een gecomprimeerde weergave die een functiekaart wordt genoemd. Feature maps worden vervolgens verwerkt door het Region Proposal Network (RPN) dat gebieden in de feature maps identificeert die waarschijnlijk een interessant object bevatten.

Vervolgens worden de gebieden geëxtraheerd uit de feature maps met behulp van de RoI-pooling-bewerking en verwerkt door de begrenzingsdoos-offsetkop (die nauwkeurige begrenzingsdooscoördinaten voor elke regio voorspelt) en objectclassificatiekop (die de klasse van het object in de regio voorspelt).

Sneller R-CNN (Region-based Convolutional Neural Network) is de derde versie van de R-CNN-architectuur. 

Faster R-CNN is een tweetraps objectdetectiemodel. Het bevat het RPN-subnetwerk om objectvoorstellen te bekijken. Dit is echter niet de enige oplossing voor de kleine dataset voor objectdetectie.

Er zijn ook eentrapsdetectormodellen die proberen de relevante objecten te vinden zonder deze screeningfase voor het regiovoorstel. Eentrapsdetectoren hebben een eenvoudigere architectuur en zijn doorgaans sneller maar minder nauwkeurig in vergelijking met tweetrapsmodellen. Voorbeelden zijn de Yolov4 en Yolov5 architecturen, - sommige van de lichter geconfigureerde modellen uit deze families kunnen oplopen tot 50-140 FPS (hoewel de detectiekwaliteit in gevaar komt), in vergelijking met Faster R-CNN die maximaal 15-25 FPS draait.

Het originele artikel over Faster R-CNN dat werd uitgelegd, werd in 2016 gepubliceerd en ontving in de loop van de tijd enkele kleine verbeteringen aan de architectuur, die werden weerspiegeld in de Detectron2-bibliotheek die we gebruikten.

De modelconfiguratie die voor onze experimenten is geselecteerd, R50-FPN, gebruikt backbone ResNet-50 met Feature Pyramid Network – een concept dat werd geïntroduceerd in de CVPR 2017 papier en is sindsdien een hoofdbestanddeel van CNN-backbones geworden voor het extraheren van functies. In eenvoudiger bewoordingen, in Feature Pyramid Networks die we gebruiken, zijn we niet beperkt tot de diepste feature maps die zijn geëxtraheerd uit CNN, maar bevatten we ook feature maps op laag en gemiddeld niveau. Dit maakt detectie van kleine objecten mogelijk die anders verloren zouden gaan tijdens de compressie tot op de diepste niveaus.

Resultaten

In onze experimenten hebben we de volgende methode gebruikt: 

  1. Neem een ​​snellere R-CNN-instantie die vooraf is getraind op COCO2017 dataset met 80 objectklassen.
  2. Vervang 320 eenheden in begrenzingsvakregressie en 80 eenheden in classificatiekoppen met respectievelijk 4 en 1 eenheden, om het model te trainen voor 1 nieuwe klasse (begrenzingsvakregressiekop heeft 4 eenheden voor elke klasse om X, Y, W te regresseren , H-afmetingen van het begrenzingsvak waarbij X, Y de middencoördinaten van het bbox-centrum zijn en W, H de breedte en hoogte zijn). 

Na wat voorbereidende runs hebben we de volgende trainingsparameters gekozen:

  • Modelconfiguratie: R50-FPN
  • Leertarief: 0.000125
  • Partijgrootte: 2
  • Batchgrootte voor RoI-koppen: 128
  • Max iteraties: 200

Met de ingestelde parameters zijn we begonnen met het onderzoeken van het meest interessante aspect van training: hoeveel trainingsinstanties waren er nodig om fatsoenlijke resultaten te behalen op de validatieset. Omdat zelfs 1 afbeelding tot 90 instanties bevatte, moesten we willekeurig een deel van de annotaties verwijderen om een ​​kleiner aantal instanties te testen. Wat we ontdekten was dat voor onze validatieset met 98 instanties, we bij 10 trainingsinstanties slechts 1-2 testinstanties konden oppikken, bij 25 hadden we er al ongeveer 40 en bij 75 en hoger konden we alle instanties voorspellen.

Het verhogen van het aantal trainingsinstanties van 75 naar 100 en 200 leidde tot dezelfde uiteindelijke trainingsresultaten. Het model convergeerde echter sneller door de grotere diversiteit van de trainingsvoorbeelden.

Voorspellingen van het model getraind met 237 instanties op afbeelding van validatieset zijn te zien in de onderstaande afbeelding; er zijn verschillende valse positieven (aangegeven door rode pijlen) maar ze hebben een laag vertrouwen en kunnen dus grotendeels worden uitgefilterd door de betrouwbaarheidsdrempel in te stellen op ~80%. 

In de volgende stap hebben we de prestaties van het getrainde model op testafbeeldingen zonder labels onderzocht. Zoals verwacht hadden afbeeldingen die vergelijkbaar waren met de distributie van de trainingsset betrouwbare voorspellingen van hoge kwaliteit, terwijl de afbeeldingen met de logs en ongebruikelijke vorm, kleur of oriëntatie veel moeilijker waren voor het model om mee te werken.

Maar zelfs op de uitdagende afbeeldingen uit de testset zagen we een positief effect van het verhogen van het aantal trainingsinstanties. In onderstaande afbeelding laten we zien hoe het model extra instanties (gemarkeerd met groene sterren) leert op te pikken met de toename van het aantal treinafbeeldingen (1 treinafbeelding - 91 instanties, 2-4 afbeeldingen - 127-237 instanties). 

Samenvattend toonden de resultaten aan dat het model ~95% van de instanties in de validatiedataset kon oppikken. Na fijnafstemming met 75-200 objectinstanties leken de verstrekte validatiegegevens op de treingegevens. Dit bewijst dat het selecteren van de juiste trainingsvoorbeelden hoogwaardige objectdetectie mogelijk maakt in een scenario met beperkte gegevens.

Toekomst van objectdetectie

Objectdetectie is een van de meest gebruikte computervisietechnologieën die de afgelopen jaren is ontstaan. De reden hiervoor is vooral veelzijdigheid. Sommige van de bestaande modellen zijn met succes geïmplementeerd in consumentenelektronica of geïntegreerd in software voor bestuurdersassistentie, terwijl andere de basis vormen voor robotoplossingen die worden gebruikt om de logistiek te automatiseren en de gezondheidszorg en de productie-industrie te transformeren.

De taak van objectdetectie is essentieel voor digitale transformatie, omdat het dient als basis voor AI-gestuurde software en robotica, die ons op de lange termijn in staat zullen stellen om mensen te bevrijden van saaie taken en meerdere risico's te beperken.

PlatoAi. Web3 opnieuw uitgevonden. Gegevensintelligentie versterkt.
Klik hier om toegang te krijgen.

Bron: https://www.iotforall.com/small-dataset-based-object-detection

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?