Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 10.6 KB

File metadata and controls

179 lines (101 loc) · 10.6 KB

Objectdetectie

De beeldclassificatiemodellen die we tot nu toe hebben behandeld, namen een afbeelding en produceerden een categorisch resultaat, zoals de klasse 'nummer' in een MNIST-probleem. Echter, in veel gevallen willen we niet alleen weten dat een afbeelding objecten toont - we willen ook hun exacte locatie bepalen. Dit is precies het doel van objectdetectie.

Objectdetectie

Afbeelding van YOLO v2 website

Een eenvoudige aanpak voor objectdetectie

Stel dat we een kat op een afbeelding willen vinden, een zeer eenvoudige aanpak voor objectdetectie zou als volgt zijn:

  1. Verdeel de afbeelding in een aantal tegels.
  2. Voer beeldclassificatie uit op elke tegel.
  3. De tegels die een voldoende hoge activatie opleveren, kunnen worden beschouwd als tegels die het betreffende object bevatten.

Eenvoudige objectdetectie

Afbeelding uit Exercise Notebook

Deze aanpak is echter verre van ideaal, omdat het algoritme de begrenzingskaders van het object slechts zeer onnauwkeurig kan bepalen. Voor een nauwkeurigere locatie moeten we een vorm van regressie uitvoeren om de coördinaten van begrenzingskaders te voorspellen - en daarvoor hebben we specifieke datasets nodig.

Regressie voor objectdetectie

Deze blogpost biedt een uitstekende introductie tot het detecteren van vormen.

Datasets voor objectdetectie

Je kunt de volgende datasets tegenkomen voor deze taak:

  • PASCAL VOC - 20 klassen
  • COCO - Common Objects in Context. 80 klassen, begrenzingskaders en segmentatiemaskers

COCO

Objectdetectie-metrics

Intersection over Union

Bij beeldclassificatie is het eenvoudig om te meten hoe goed het algoritme presteert, maar bij objectdetectie moeten we zowel de juistheid van de klasse als de precisie van de voorspelde locatie van het begrenzingskader meten. Voor dat laatste gebruiken we de zogenaamde Intersection over Union (IoU), die meet hoe goed twee kaders (of twee willekeurige gebieden) overlappen.

IoU

Figuur 2 uit deze uitstekende blogpost over IoU

Het idee is simpel - we delen het gebied van de overlap tussen twee figuren door het gebied van hun unie. Voor twee identieke gebieden zou IoU 1 zijn, terwijl voor volledig gescheiden gebieden IoU 0 is. Anders varieert het van 0 tot 1. We beschouwen doorgaans alleen die begrenzingskaders waarvoor IoU boven een bepaalde waarde ligt.

Gemiddelde precisie

Stel dat we willen meten hoe goed een bepaalde klasse van objecten $C$ wordt herkend. Om dit te meten gebruiken we de Gemiddelde Precisie-metric, die als volgt wordt berekend:

  1. Beschouw de Precision-Recall-curve die de nauwkeurigheid toont afhankelijk van een detectiedrempelwaarde (van 0 tot 1).
  2. Afhankelijk van de drempelwaarde worden meer of minder objecten gedetecteerd in de afbeelding, met verschillende waarden voor precisie en recall.
  3. De curve ziet er als volgt uit:

Afbeelding van NeuroWorkshop

De gemiddelde precisie voor een bepaalde klasse $C$ is het gebied onder deze curve. Meer precies, de Recall-as wordt doorgaans verdeeld in 10 delen, en de precisie wordt gemiddeld over al deze punten:

$$ AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) $$

AP en IoU

We beschouwen alleen die detecties waarvoor IoU boven een bepaalde waarde ligt. Bijvoorbeeld, in de PASCAL VOC-dataset wordt doorgaans $\mbox{IoU Threshold} = 0.5$ aangenomen, terwijl in COCO AP wordt gemeten voor verschillende waarden van $\mbox{IoU Threshold}$.

Afbeelding van NeuroWorkshop

Gemiddelde gemiddelde precisie - mAP

De belangrijkste metric voor objectdetectie wordt Gemiddelde Gemiddelde Precisie, of mAP, genoemd. Dit is de waarde van de gemiddelde precisie, gemiddeld over alle objectklassen, en soms ook over $\mbox{IoU Threshold}$. Het proces van het berekenen van mAP wordt in meer detail beschreven in deze blogpost), en ook hier met codevoorbeelden.

Verschillende benaderingen voor objectdetectie

Er zijn twee brede categorieën van objectdetectie-algoritmen:

  • Region Proposal Networks (R-CNN, Fast R-CNN, Faster R-CNN). Het belangrijkste idee is om Regions of Interest (ROI) te genereren en CNN eroverheen te laten lopen, op zoek naar maximale activatie. Het lijkt een beetje op de eenvoudige aanpak, met als uitzondering dat ROI's op een slimmere manier worden gegenereerd. Een van de grootste nadelen van dergelijke methoden is dat ze traag zijn, omdat we veel passes van de CNN-classificator over de afbeelding nodig hebben.
  • One-pass (YOLO, SSD, RetinaNet) methoden. In deze architecturen ontwerpen we het netwerk om zowel klassen als ROI's in één keer te voorspellen.

R-CNN: Region-Based CNN

R-CNN gebruikt Selective Search om een hiërarchische structuur van ROI-regio's te genereren, die vervolgens door CNN-feature extractors en SVM-classificators worden geleid om de objectklasse te bepalen, en lineaire regressie om de coördinaten van begrenzingskaders te bepalen. Officiële paper

RCNN

Afbeelding van van de Sande et al. ICCV’11

RCNN-1

Afbeeldingen uit deze blog

F-RCNN - Fast R-CNN

Deze aanpak lijkt op R-CNN, maar regio's worden gedefinieerd nadat convolutielagen zijn toegepast.

FRCNN

Afbeelding uit de officiële paper, arXiv, 2015

Faster R-CNN

Het belangrijkste idee van deze aanpak is om een neuraal netwerk te gebruiken om ROI's te voorspellen - de zogenaamde Region Proposal Network. Paper, 2016

FasterRCNN

Afbeelding uit de officiële paper

R-FCN: Region-Based Fully Convolutional Network

Dit algoritme is zelfs sneller dan Faster R-CNN. Het belangrijkste idee is als volgt:

  1. We extraheren features met behulp van ResNet-101.
  2. Features worden verwerkt door Position-Sensitive Score Map. Elk object uit $C$ klassen wordt verdeeld in $k\times k$ regio's, en we trainen om delen van objecten te voorspellen.
  3. Voor elk deel uit $k\times k$ regio's stemmen alle netwerken op objectklassen, en de objectklasse met de meeste stemmen wordt geselecteerd.

r-fcn afbeelding

Afbeelding uit officiële paper

YOLO - You Only Look Once

YOLO is een realtime one-pass algoritme. Het belangrijkste idee is als volgt:

  • De afbeelding wordt verdeeld in $S\times S$ regio's.
  • Voor elke regio voorspelt CNN $n$ mogelijke objecten, begrenzingskader-coördinaten en vertrouwen=waarschijnlijkheid * IoU.

YOLO

Afbeelding uit officiële paper

Andere algoritmen

✍️ Oefeningen: Objectdetectie

Ga verder met leren in het volgende notebook:

ObjectDetection.ipynb

Conclusie

In deze les heb je een snelle rondleiding gekregen langs de verschillende manieren waarop objectdetectie kan worden uitgevoerd!

🚀 Uitdaging

Lees deze artikelen en notebooks over YOLO en probeer ze zelf uit:

Review & Zelfstudie