Sist uppdaterad den 27 januari 2021
Det kan vara en utmaning för nybörjare att skilja mellan olika relaterade datorseendeuppgifter.
Bildklassificering är till exempel enkel, men skillnaderna mellan objektlokalisering och objektsdetektering kan vara förvirrande, särskilt när alla tre uppgifterna lika gärna kan kallas objektsigenkänning.
Bildklassificering innebär att man tilldelar en klassbeteckning till en bild, medan objektlokalisering innebär att man ritar en avgränsande box runt ett eller flera objekt i en bild. Objektdetektering är mer utmanande och kombinerar dessa två uppgifter och ritar en avgränsande box runt varje objekt av intresse i bilden och tilldelar dem en klassbeteckning. Tillsammans kallas alla dessa problem för objektigenkänning.
I det här inlägget kommer du att upptäcka en försiktig introduktion till problemet med objektigenkänning och de senaste modellerna för djupinlärning som är utformade för att ta itu med det.
När du har läst det här inlägget kommer du att veta:
- Objektigenkänning är hänvisar till en samling relaterade uppgifter för att identifiera objekt i digitala fotografier.
- Region-Based Convolutional Neural Networks, eller R-CNNs, är en familj av tekniker för att hantera uppgifter för lokalisering och igenkänning av objekt, utformade för modellprestanda.
- You Only Look Once, eller YOLO, är en andra familj av tekniker för objektigenkänning som är utformade för snabbhet och användning i realtid.
Kicka igång ditt projekt med min nya bok Deep Learning for Computer Vision, inklusive steg-för-steg-handledning och Python-källkodfiler för alla exempel.
Vi sätter igång.
En försiktig introduktion till objektigenkänning med Deep Learning
Foto av Bart Everson, vissa rättigheter förbehållna.
Översikt
Denna handledning är uppdelad i tre delar; de är:
- Vad är objektigenkänning?
- R-CNN-modellfamiljen
- YOLO-modellfamiljen
Vill du ha resultat med djupinlärning för datorseende?
Ta min kostnadsfria 7-dagars snabbkurs via e-post nu (med exempelkod).
Klicka för att registrera dig och få en gratis PDF-version av kursen.
Ladda ner din kostnadsfria minikurs
Vad är objektigenkänning?
Objektigenkänning är en allmän term för att beskriva en samling relaterade datorseendeuppgifter som innebär att identifiera objekt i digitala fotografier.
Bildklassificering innebär att förutsäga klassen för ett objekt i en bild. Objektlokalisering avser identifiering av platsen för ett eller flera objekt i en bild och ritning av abounding box runt deras utbredning. Objektdetektering kombinerar dessa två uppgifter och lokaliserar och klassificerar ett eller flera objekt i en bild.
När en användare eller praktiker hänvisar till ”objektigenkänning” menar de ofta ”objektdetektering”.
… vi kommer att använda termen objektigenkänning brett för att omfatta både bildklassificering (en uppgift som kräver att en algoritm avgör vilka objektklasser som finns i bilden) och objektsdetektering (en uppgift som kräver att en algoritm lokaliserar alla objekt som finns i bilden
– ImageNet Large Scale Visual Recognition Challenge, 2015.
Som sådan kan vi skilja mellan dessa tre datorseende uppgifter:
- Bildklassificering:
- Inmatning: Förutsägelse av typen eller klassen av ett objekt i en bild: En bild med ett enskilt objekt, t.ex. ett fotografi.
- Utdata: En bild med ett enskilt objekt, t.ex. ett fotografi: En klassmärkning (t.ex. ett eller flera heltal som är mappade till klassmärkningar).
- Objektlokalisering: Lokalisera förekomsten av objekt i en bild och ange deras plats med en avgränsande box.
- Indata: En bild med ett eller flera objekt, t.ex. ett fotografi.
- Utgång: En bild med ett eller flera objekt, t.ex. ett fotografi: En eller flera avgränsande boxar (t.ex. definierade av en punkt, bredd och höjd).
- Objektdetektering:
- Inmatning: Lokaliserar förekomsten av objekt med en avgränsande box och typer eller klasser av de lokaliserade objekten i en bild.
- Inmatning: En bild med ett eller flera objekt, t.ex. ett fotografi.
- Utgång: En bild med ett eller flera objekt, t.ex. ett fotografi: En eller flera avgränsande boxar (t.ex. definierade av en punkt, bredd och höjd) och en klassbeteckning för varje avgränsande box.
En ytterligare utvidgning av denna indelning av datorseende uppgifter är objektsegmentering, även kallad ”objektinstanssegmentering” eller ”semantisk segmentering”, där instanser av igenkända objekt anges genom att framhäva objektets specifika pixlar i stället för en grov avgränsande box.
Från denna uppdelning kan vi se att objektigenkänning avser en rad utmanande datorseendeuppgifter.
Översikt över datorseende uppgifter för objektigenkänning
De flesta av de senaste innovationerna när det gäller bildigenkänningsproblem har kommit som en del av deltagandet i ILSVRC-uppgifterna.
Detta är en årlig akademisk tävling med en separat utmaning för var och en av dessa tre problemtyper, med avsikten att främja oberoende och separata förbättringar på varje nivå som kan utnyttjas mer allmänt. Se till exempel listan över de tre motsvarande uppgiftstyperna nedan från 2015 års ILSVRC-granskningsdokument:
- Bildklassificering: Algoritmer producerar en lista över objektkategorier som finns i bilden.
- Lokalisering av enskilda objekt: Algoritmerna producerar en lista över objektkategorier som finns i bilden, tillsammans med en axeljusterad avgränsande box som anger position och skala för en instans av varje objektkategori.
- Objektdetektering: Algoritmer producerar en lista över objektkategorier som finns i bilden tillsammans med en axeljusterad avgränsande box som anger position och skala för varje instans av varje objektkategori.
Vi kan se att ”lokalisering av ett enda objekt” är en enklare version av den mer allmänt definierade ”lokalisering av objekt”, som begränsar lokaliseringsuppgifterna till objekt av en typ i en bild, vilket vi kan anta är en enklare uppgift.
Nedan följer ett exempel som jämför lokalisering av ett enda objekt och objektsdetektering, hämtat från ILSVRC-handlingen. Notera skillnaden i förväntningar på grundsanning i varje fall.
Comparison Between Single Object Localization and Object Detection.Taken From: ImageNet Large Scale Visual Recognition Challenge.
Prestationen hos en modell för bildklassificering utvärderas med hjälp av det genomsnittliga klassificeringsfelet för alla förutspådda klassbeteckningar. Prestandan hos en modell för lokalisering av enskilda objekt utvärderas med hjälp av avståndet mellan den förväntade och den förutspådda gränslådan för den förväntade klassen. Medan prestandan hos en modell för objektigenkänning utvärderas med hjälp av precisionen och återkallelsen över var och en av de bäst matchande avgränsande boxarna för de kända objekten i bilden.
Nu när vi är bekanta med problemet med lokalisering och upptäckt av objekt, låt oss ta en titt på några aktuella toppresterande modeller för djupinlärning.
R-CNN-modellfamiljen
Metodfamiljen R-CNN hänvisar till R-CNN, som kan stå för ”Regions with CNN Features” (regioner med CNN-funktioner) eller ”Region-Based Convolutional Neural Network”, utvecklat av Ross Girshick, et al.
Detta inkluderar teknikerna R-CNN, Fast R-CNN och Faster-RCNN som utformats och demonstrerats för objektlokalisering och objektigenkänning.
Låt oss titta närmare på höjdpunkterna i var och en av dessa tekniker i tur och ordning.
R-CNN
R-CNN beskrevs i en artikel från 2014 av Ross Girshick, et al. från UC Berkeley med titeln ”Rich feature hierarchies for accurate object detection and semantic segmentation.”
Det kan ha varit en av de första stora och framgångsrika tillämpningarna av konvolutionella neurala nätverk på problemet med lokalisering, upptäckt och segmentering av objekt. Metoden demonstrerades på referensdatamängder och uppnådde då de bästa resultaten på datamängden VOC-2012 och den 200-klassiga ILSVRC-2013-datamängden för objektsdetektering.
Den av dem föreslagna R-CNN-modellen består av tre moduler; de är:
- Modul 1: Regionförslag. Genererar och extraherar kategorioberoende regionförslag, t.ex. kandidatboxar.
- Modul 2: Feature Extractor. Extraherar funktioner från varje kandidatregion, t.ex. med hjälp av ett djupt konvolutionellt neuralt nätverk.
- Modul 3: Klassificering. Klassificera funktioner som en av de kända klasserna, t.ex. linjär SVM-klassificeringsmodell.
Modellens arkitektur sammanfattas i bilden nedan, hämtad från artikeln.
Sammanfattning av R-CNN-modellens arkitekturTagen från Rika funktionshierarkier för noggrann objektsdetektion och semantisk segmentering.
En teknik för datorseende används för att föreslå kandidatregioner eller avgränsande lådor för potentiella objekt i bilden som kallas ”selektiv sökning”, även om konstruktionens flexibilitet gör det möjligt att använda andra algoritmer för att föreslå regioner.
Den funktionsextraherare som användes av modellen var den djupa CNN AlexNet som vann bildklassificeringstävlingen ILSVRC-2012. Utgången från CNN var en vektor med 4 096 element som beskriver bildens innehåll och som matas till en linjär SVM för klassificering, specifikt tränas en SVM för varje känd klass.
Det är en relativt enkel och okomplicerad tillämpning av CNN:er på problemet med lokalisering och igenkänning av objekt. En nackdel med tillvägagångssättet är att det är långsamt, eftersom det krävs en CNN-baserad funktionsextraktion för var och en av de kandidatregioner som genereras av regionförslagsalgoritmen. Detta är ett problem eftersom artikeln beskriver att modellen arbetar med cirka 2 000 föreslagna regioner per bild vid testtillfället.
Python- (Caffe) och MatLab-källkoden för R-CNN som beskrivs i artikeln har gjorts tillgänglig i R-CNN GitHub-arkivet.
Fast R-CNN
Med tanke på den stora framgången med R-CNN föreslog Ross Girshick, som då arbetade på Microsoft Research, en utvidgning för att ta itu med hastighetsfrågorna med R-CNN i en artikel från 2015 med titeln ”Snabbt R-CNN.”
Artikeln inleds med en genomgång av begränsningarna med R-CNN, som kan sammanfattas på följande sätt:
- Träning är en flerstegs pipeline. Innebär förberedelse och drift av tre separata modeller.
- Träning är dyrt i tid och rum. Träning av en djup CNN på så många regionförslag per bild är mycket långsam.
- Objektdetektering är långsam. Att göra förutsägelser med hjälp av en djup CNN på så många regionförslag är mycket långsamt.
Ett tidigare arbete föreslogs för att snabba upp tekniken som kallas spatial pyramid pooling networks, eller SPPnets, i artikeln ”Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition” från 2014. Detta påskyndade utvinningen av funktioner, men använde i huvudsak en typ av forward pass caching-algoritm.
Fast R-CNN föreslås som en enda modell i stället för en pipeline för att lära sig och ge ut regioner och klassificeringar direkt.
Modellens arkitektur tar fotografiet en uppsättning regionförslag som indata som passerar genom ett djupt konvolutionellt neuralt nätverk. Ett förtränat CNN, t.ex. ett VGG-16, används för extraktion av funktioner. Slutet på det djupa CNN är ett anpassat lager som kallas Region of Interest Pooling Layer, eller RoI Pooling, som extraherar funktioner som är specifika för en given inmatningskandidatregion.
Utgången från CNN tolkas sedan av ett fullt anslutet lager, varefter modellen delas upp i två utgångar, en för klassförutsägelsen via ett softmax-skikt, och en annan med en linjär utgång för den avgränsande boxen. Denna process upprepas sedan flera gånger för varje intresseområde i en viss bild.
Modellens arkitektur sammanfattas i bilden nedan, hämtad från artikeln.
Summary of the Fast R-CNN Model Architecture.
Hämtat från: Fast R-CNN.Modellen är betydligt snabbare att träna och göra förutsägelser, men kräver fortfarande att en uppsättning kandidatregioner föreslås tillsammans med varje inmatningsbild.
Python- och C++-källkoden (Caffe) för Fast R-CNN enligt beskrivningen i artikeln gjordes tillgänglig i ett GitHub-förråd.
Faster R-CNN
Modellarkitekturen förbättrades ytterligare både när det gäller tränings- och detektionshastighet av Shaoqing Ren et al. vid Microsoft Research i artikeln från 2016 med titeln ”Faster R-CNN: Arkitekturen låg till grund för de förstaplatsresultat som uppnåddes i både ILSVRC-2015 och MS COCO-2015 tävlingsuppgifter för objektigenkänning och -detektering.
Arkitekturen utformades för att både föreslå och förfina regionförslag som en del av träningsprocessen, vilket kallas Region Proposal Network, eller RPN. Dessa regioner används sedan tillsammans med en Fast R-CNN-modell i en enda modellkonstruktion. Dessa förbättringar både minskar antalet regionförslag och påskyndar modellens testtidsverksamhet till nästan realtid med då toppmoderna prestanda.
… vårt detekteringssystem har en bildfrekvens på 5 fps (inklusive alla steg) på en GPU, samtidigt som det uppnår toppmoderna objektsdetekteringsnoggrannhet på PASCAL VOC 2007, 2012 och MS COCO-datasetterna med endast 300 förslag per bild. I tävlingarna ILSVRC och COCO 2015 utgör Faster R-CNN och RPN grunden för de vinnande bidragen på första plats i flera spår
– Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, 2016.
Trots att det är en enda enhetlig modell består arkitekturen av två moduler:
- Modul 1: Regionförslagsnätverk. Konvolutionellt neuralt nätverk för att föreslå regioner och vilken typ av objekt som ska beaktas i regionen.
- Modul 2: Fast R-CNN. Konvolutionellt neuralt nätverk för att extrahera egenskaper från de föreslagna regionerna och ge ut den avgränsande boxen och klassbeteckningar.
Båda modulerna arbetar med samma utdata från ett djupt CNN. Regionförslagsnätverket fungerar som en uppmärksamhetsmekanism för det snabba R-CNN-nätverket och informerar det andra nätverket om var det ska titta eller uppmärksamma.
Modellens arkitektur sammanfattas i bilden nedan, hämtad från artikeln.
Sammanfattning av Faster R-CNN-modellarkitekturen.Taget från: Faster R-CNN: RPN fungerar genom att man tar resultatet från ett förtränat djupt CNN, t.ex. VGG-16, och låter ett litet nätverk passera över funktionskartan för att ge ut flera regionförslag och en klassförutsägelse för var och en av dem. Regionförslagen är avgränsande boxar, baserade på så kallade ankarboxar eller fördefinierade former som är utformade för att påskynda och förbättra förslagen till regioner. Klassförutsägelsen är binär och anger om det finns ett objekt eller inte, så kallad ”objectness” för den föreslagna regionen.
En procedur för alternerande träning används där båda delnätverken tränas samtidigt, även om de är interfolierade. Detta gör det möjligt att skräddarsy eller finjustera parametrarna i den djupa CNN:en för funktionsdetektorn för båda uppgifterna samtidigt.
I skrivande stund är denna Faster R-CNN-arkitektur toppen av modellfamiljen och fortsätter att uppnå resultat som ligger nära toppnivå när det gäller objektigenkänningsuppgifter. En ytterligare utvidgning lägger till stöd för bildsegmentering, vilket beskrivs i artikeln ”Mask R-CNNN” från 2017.
Python- och C++ (Caffe)-källkoden för Fast R-CNN enligt beskrivningen i artikeln har gjorts tillgänglig i ett GitHub-arkiv.
YOLO-modellfamiljen
En annan populär familj av objektigenkänningsmodeller kallas kollektivt för YOLO eller ”You Only Look Once”, och har utvecklats av Joseph Redmon, et al.
R-CNN-modellerna kan generellt sett vara mer exakta, men YOLO-modellfamiljen är snabb, mycket snabbare än R-CNN, och uppnår objektsdetektering i realtid.
YOLO
YOLO-modellen beskrevs för första gången av Joseph Redmon, m.fl. i en artikel från 2015 med titeln ”You Only Look Once: Unified, Real-Time Object Detection”. Observera att Ross Girshick, utvecklare av R-CNN, också var författare och bidragsgivare till detta arbete, då på Facebook AI Research.
Metoden innebär ett enda neuralt nätverk som tränas från början till slut och som tar ett fotografi som indata och förutspår avgränsande rutor och klassbeteckningar för varje avgränsande ruta direkt. Tekniken ger lägre prediktionsnoggrannhet (t.ex. fler lokaliseringsfel), även om den fungerar med 45 bilder per sekund och upp till 155 bilder per sekund för en hastighetsoptimerad version av modellen.
Vår enhetliga arkitektur är extremt snabb. Vår YOLO-basmodell behandlar bilder i realtid med 45 bilder per sekund. En mindre version av nätverket, Fast YOLO, bearbetar häpnadsväckande 155 bilder per sekund …
– You Only Look Once: Unified, Real-Time Object Detection, 2015.
Modellen fungerar genom att först dela upp inmatningsbilden i ett rutnät av celler, där varje cell ansvarar för att förutsäga en avgränsande ruta om centrum av en avgränsande ruta faller inom cellen. Varje rutnätscell förutsäger en bounding box som inbegriper x-, y-koordinaten och bredden och höjden samt förtroendet. En klassförutsägelse baseras också på varje cell.
En bild kan t.ex. delas in i ett rutnät på 7×7 och varje cell i rutnätet kan förutsäga två avgränsande boxar, vilket resulterar i 94 föreslagna förutsägelser av avgränsande boxar. Kartan över klassernas sannolikheter och de avgränsande rutorna med konfidens kombineras sedan till en slutlig uppsättning av avgränsande rutor och klassbeteckningar. Bilden från artikeln nedan sammanfattar modellens två resultat.
Sammanfattning av förutsägelser gjorda av YOLO-modellen.Taget från: You Only Look Once: Unified, Real-Time Object Detection
YOLOv2 (YOLO9000) och YOLOv3
Modellen uppdaterades av Joseph Redmon och Ali Farhadi i ett försök att ytterligare förbättra modellens prestanda i deras artikel från 2016 med titeln ”YOLO9000: Better, Faster, Stronger.”
Och även om denna variant av modellen kallas YOLO v2, beskrivs en instans av modellen som tränades parallellt på två datamängder för objektigenkänning och som kunde förutsäga 9 000 objektklasser, därav namnet ”YOLO9000″.”
Ett antal tränings- och arkitekturförändringar gjordes i modellen, t.ex. användning av batch-normalisering och högupplösta inmatningsbilder.
I likhet med Faster R-CNN använder sig YOLOv2-modellen av ankarboxar, fördefinierade avgränsande boxar med användbara former och storlekar som skräddarsys under träningen. Valet av avgränsande lådor för bilden förbearbetas med hjälp av en k-means-analys på träningsdatamängden.
Väsentligt är att den förutsagda representationen av de avgränsande lådorna ändras så att små förändringar får en mindre dramatisk effekt på förutsägelserna, vilket resulterar i en mer stabil modell. I stället för att förutsäga position och storlek direkt förutsägs förskjutningar för att flytta och omforma de fördefinierade ankarrutorna i förhållande till en rutnätscell och dämpas av en logistisk funktion.
Exempel på den representation som valts vid förutsägelse av Bounding Box position och formTagen från: YOLO9000: Better, Faster, Stronger
Fortsatta förbättringar av modellen föreslogs av Joseph Redmon och Ali Farhadi i deras artikel från 2018 med titeln ”YOLOv3: An Incremental Improvement”. Förbättringarna var ganska små, inklusive ett djupare nätverk för funktionsdetektorer och mindre representationsförändringar.
Fördjupad läsning
Det här avsnittet innehåller fler resurser i ämnet om du vill gå djupare.
Papers
- ImageNet Large Scale Visual Recognition Challenge, 2015.
R-CNN Family Papers
- Rich feature hierarchies for accurate object detection and semantic segmentation, 2013.
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition, 2014.
- Fast R-CNN, 2015.
- Faster R-CNN: Mot objektdetektering i realtid med regionförslagsnätverk, 2016.
- Mask R-CNN, 2017.
YOLO Family Papers
- You Only Look Once: Unified, Real-Time Object Detection, 2015.
- YOLO9000: Better, Faster, Stronger, 2016.
- YOLOv3: An Incremental Improvement, 2018.
Code Projects
- R-CNN: Regioner med funktioner i konvolutionella neurala nätverk, GitHub.
- Snabb R-CNN, GitHub.
- Snabbare R-CNN Python-kod, GitHub.
- YOLO, GitHub.
Resurser
- Ross Girshick, Homepage.
- Joseph Redmon, hemsida.
- YOLO: Real-Time Object Detection, hemsida.
Artiklar
- A Brief History of CNNs in Image Segmentation: Från R-CNN till Mask R-CNN, 2017.
- Object Detection for Dummies Part 3: R-CNN Family, 2017.
- Object Detection Part 4: Fast Detection Models, 2018.
Summary
I det här inlägget upptäckte du en försiktig introduktion till problemet med objektsigenkänning och de senaste modellerna för djupinlärning som utformats för att lösa det.
Specifikt har du lärt dig:
- Objektigenkänning är en samling relaterade uppgifter för att identifiera objekt i digitala fotografier.
- Region-Based Convolutional Neural Networks, eller R-CNNs, är en familj av tekniker för att hantera uppgifter för lokalisering och igenkänning av objekt, utformade för modellprestanda.
- You Only Look Once, eller YOLO, är en andra familj av tekniker för objektigenkänning som är utformade för snabbhet och användning i realtid.
Har du några frågor?
Ställ dina frågor i kommentarerna nedan så ska jag göra mitt bästa för att besvara dem.Utveckla modeller för djupinlärning för vision i dag!
Utveckla dina egna visionsmodeller på några minuter
…med bara några rader pythonkod
Upptäck hur i min nya Ebook:
Deep Learning for Computer VisionDen innehåller självstudierutorier om ämnen som:
klassificering, objektsökning (yolo och rcnn), ansiktsigenkänning (vggface och facenet), dataförberedelse och mycket mer…Du kan äntligen använda djupinlärning i dina visionsprojekt
Skippa akademikerna. Bara resultat.
Se vad som finns inuti
Tweet Share Share Share - Inmatning: Lokaliserar förekomsten av objekt med en avgränsande box och typer eller klasser av de lokaliserade objekten i en bild.