+ All Categories
Home > Documents > OpenAlt Konvoluční neuronové sítě

OpenAlt Konvoluční neuronové sítě

Date post: 09-Feb-2017
Category:
Upload: tranlien
View: 226 times
Download: 3 times
Share this document with a friend
80
Konvoluční neuronové sítě Michal Hradiš http://www.fit.vutbr.cz/~ihradis/
Transcript
Page 1: OpenAlt Konvoluční neuronové sítě

Konvoluční neuronové sítěMichal Hradiš

http://www.fit.vutbr.cz/~ihradis/

Page 2: OpenAlt Konvoluční neuronové sítě
Page 3: OpenAlt Konvoluční neuronové sítě

Obsah

• Motivace – highlights – industry success stories

• Cesta k hlubokému učení x ručně navržené příznaky

• Co to je neuronová síť?

• Jak se učí neuronové sítě?

• Co jsou to konvoluční sítě?

• Co jde dělat s konvolučními sítěmi?

• Nástroje

• Základy Caffe

Page 4: OpenAlt Konvoluční neuronové sítě

Vyhledávání fotek

• Google photo search – search your photo collection

– https://photos.google.com/search

Page 5: OpenAlt Konvoluční neuronové sítě

"man in black shirt

is playing guitar."

Andrej Karpathy, Li Fei-Fei: Deep Visual-Semantic Alignments for Generating Image Descriptions. CVPR 2015

http://cs.stanford.edu/people/karpathy/deepimagesent/

"girl in pink dress

is jumping in air."

Automatický popis fotek

"construction worker in orange

safety vest is working on road."

Page 6: OpenAlt Konvoluční neuronové sítě

"black cat is sitting

on top of suitcase.""boy is doing

backflip on wakeboard."

"construction worker in orange

safety vest is working on road."

Andrej Karpathy, Li Fei-Fei: Deep Visual-Semantic Alignments for Generating Image Descriptions. CVPR 2015

http://cs.stanford.edu/people/karpathy/deepimagesent/

"a cat is sitting on a couch

with a remote control."

Automatický popis fotek

Page 7: OpenAlt Konvoluční neuronové sítě

"a woman holding a teddy

bear in front of a mirror."

"a horse is standing

in the middle of a road."

Andrej Karpathy, Li Fei-Fei: Deep Visual-Semantic Alignments for Generating Image Descriptions. CVPR 2015

http://cs.stanford.edu/people/karpathy/deepimagesent/

"a young boy is

holding a baseball bat."

Automatický popis fotek

Page 8: OpenAlt Konvoluční neuronové sítě

Facebook - DeepFace

Page 9: OpenAlt Konvoluční neuronové sítě

Deep Dreams

Thorne Brandt

Page 10: OpenAlt Konvoluční neuronové sítě

Style transfer

Leon A. Gatys, Alexander S. Ecker, Matthias Bethge: A Neural Algorithm of Artistic Style

Page 11: OpenAlt Konvoluční neuronové sítě

Style transfer

Page 12: OpenAlt Konvoluční neuronové sítě

Style transfer• https://vimeo.com/139123754

Page 13: OpenAlt Konvoluční neuronové sítě

13

Co je na obrázku?

Intelligent

stuff

outdoors yes

indoors no

sport yes

person yes

water yes

trees yes

politician no

singing no

dog no

cat no

dancing no

cars no

walking no

running no

swimming no

mountains no

Tags

Page 14: OpenAlt Konvoluční neuronové sítě

Kategorie

• slovní zásoba

– aktivní 3k – 10k

– pasivní 50k

• Obecné kategorie

– Objekty, činnosti, prostředí, podmínky, nálada, pocity, druh

fotografie/záběru, žánr

• Specifické (pojmenované)

– místa, konkrétní osoby, značky aut, …

Page 15: OpenAlt Konvoluční neuronové sítě

Strojové učení

Intelligent

stuff

Flag

Flag

Flag

AK-47

AK-47

Page 16: OpenAlt Konvoluční neuronové sítě

Základ - podobnost obrazů

16

Page 17: OpenAlt Konvoluční neuronové sítě

Bag of Words

Page 18: OpenAlt Konvoluční neuronové sítě

Bag of Words

Page 19: OpenAlt Konvoluční neuronové sítě

Bag of Words

19

Page 20: OpenAlt Konvoluční neuronové sítě

Image representations

Page 21: OpenAlt Konvoluční neuronové sítě

• Fixed engineered features followed by simple trainable

classifier

Human-driven

academic evolution

Learning algorithm

Traditional approach

Feature ExtractorSimple Classifier

(lin./kernel SVM)

9

2

0

1

x 0.7 = 6.3

x 0.4 = 0.8

x -0.3 = 0

x -0.2 = -0.2

SUM = 7.1

> 0 GODDES

< 0 Something

else

Page 22: OpenAlt Konvoluční neuronové sítě

Navrženo člověkem

(pracovití Ph.D. stud.) Učící algoritmus

Hluboké učení – deep learning

• Hluboké učení

Extrakce příznaků

Jednoduchý

klasifikátor

(lin./kernel SVM)

Učící algoritmus

Extrakce

příznakůklasifikátor

Page 23: OpenAlt Konvoluční neuronové sítě

Hierarchy of features

Low-level

features

Mid-level

features

High-level

features

Page 24: OpenAlt Konvoluční neuronové sítě

Co je to neuronová síť?

0.1

0.2

0.5

0.6

0.7

0.8

0.4

0.2

0.6

function with

trainable parameters

0

1

0.5

1.2

3

2

1

2

0

Numerical

input vectorNumerical

output vector

Neural Network

Page 25: OpenAlt Konvoluční neuronové sítě

Příklad neuronové sítě

𝑓 𝑥 = 𝑎𝑥 + 𝑏

Page 26: OpenAlt Konvoluční neuronové sítě

Strojové učení

Intelligent

stuff

Flag

Flag

Flag

AK-47

AK-47

Page 27: OpenAlt Konvoluční neuronové sítě

Příklad neuronové sítě

𝑓 𝑥 = 𝑎𝑥 + 𝑏

argmin𝑎,𝑏

(𝑥𝑖,𝑦𝑖)

𝑦𝑖 − 𝑓 𝑥𝑖2

Page 28: OpenAlt Konvoluční neuronové sítě

Generalizace učení

Page 29: OpenAlt Konvoluční neuronové sítě

Generalizace učení

Page 30: OpenAlt Konvoluční neuronové sítě

Neuronové sítě

• Klasické dopředné neuronové sítě

• Sítě můžou řešit velkou škálu úloh podle vlastností neuronů

ve výstupní vrstvě a objektivní funkce

– Multi-class, multi-label, regrese, …

Page 31: OpenAlt Konvoluční neuronové sítě

Hlubší neuronové sítě

Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

Page 32: OpenAlt Konvoluční neuronové sítě

Hlubší neuronové sítě

Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

Page 33: OpenAlt Konvoluční neuronové sítě

Hlubší neuronové sítě

Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

x

Page 34: OpenAlt Konvoluční neuronové sítě

Základ neuronu

𝑥1

𝑥2

𝑥3

𝑓𝑤(𝑥)

𝑤1

𝑤2

𝑤3

𝑓𝑤 𝑥 = 𝑤1𝑥1 +𝑤2𝑥2 +𝑤3 𝑥3

Page 35: OpenAlt Konvoluční neuronové sítě

Neuron s ReLU aktivační funkcí

𝑥1

𝑥2

𝑥3

𝑓𝑤(𝑥)

𝑤1

𝑤2

𝑤3

𝑓𝑤 𝑥 = max(𝑤1𝑥1 +𝑤2𝑥2 +𝑤3 𝑥3, 0)

Page 36: OpenAlt Konvoluční neuronové sítě

Hlubší neuronové sítě

Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

Page 37: OpenAlt Konvoluční neuronové sítě

Výpočet

𝑥2 = 𝑚𝑎𝑥 𝑊1𝑥1, 0

𝑥1 𝑥2 𝑥3 𝑥4

𝑥3 = 𝑚𝑎𝑥 𝑊2𝑥2, 0

𝑥4 = 𝑚𝑎𝑥 𝑊3𝑥3, 0

Page 38: OpenAlt Konvoluční neuronové sítě

Učení neuronových sítí

• Zpětné šíření chyby

– derivace objektivní vzhledem ke všem parametrům sítě

– využití pravidla pro efektivní derivace složené funkce (chain rule)

• Příklad chybové fce. – half squared error

𝜕𝐽(𝑥)

𝜕𝑥=𝜕ℎ(𝑥)

𝜕𝑔(𝑥)

𝜕𝑔(𝑥)

𝜕𝑥

Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

𝐽 𝑥 = ℎ(𝑔 𝑥 )

Page 39: OpenAlt Konvoluční neuronové sítě

Zpětné šíření chyby

1. Dopředný průchod sítí, spočítat a uložit aktivace všech

neuronů

2. Spočítat parciální derivace všech výstupních neuronů

3. Zpětný průchod – rekurzivně spočítat parciální derivace

všech neuronů v síti vždy z parciálních derivací neuronů v

následující vrstvě

4. Spočítat derivace vah a biasů z aktivací předešlé vstvy a

derivací následující vrstvy

Page 40: OpenAlt Konvoluční neuronové sítě

Stochastic Gradient Descent

• Jak minimalizovat hodnotu objektivní funkce na datasetu?

• Gradient

– Parciální derivace dohromady tvoří gradient

– Pohyb ve směru gradientu zvyšuje hodnotu funkce (zhoršuje

výsledky sítě) a pohyb proti směru gradientu snižuje hodnotu funkce

(zlepšuje síť)

• Stochastic – gradient se počítá na podmnožinách trénovací

sady

• Pravidlo pro učení v Stochastic Gradient Descent

Page 41: OpenAlt Konvoluční neuronové sítě

Stochastic Gradient Descent

Page 42: OpenAlt Konvoluční neuronové sítě

Historie Konvolučních sítí

• 1980 – Kunihiko Fukushima – Neocognitron: A Self-

organizing Neural Network Model for a Mechanism of

Pattern Recognition Unaffected by Shift in Position

• 1998 – LeCun et al.: Gradient-Based Learning Applied to

Document Recognition

• 2012 – Krizhevsky et al.: ImageNet Classification with Deep

Convolutional Neural Networks

• 2013-dnes – exploze aplikací

Page 43: OpenAlt Konvoluční neuronové sítě

Konvoluční neuronové sítě

• Jsou to úplně normální dopředné neuronové sítě

• Bývají hluboké

• Vrstvy mají pevnou strukturu propojení – KONVOLUCE

– váhy neuronových sítí = konvoluční jádra konvolučních sítí

43

Page 44: OpenAlt Konvoluční neuronové sítě

Konvoluce

Page 45: OpenAlt Konvoluční neuronové sítě

Konvoluční vrstva

Page 46: OpenAlt Konvoluční neuronové sítě

Konvoluční vrstva - kanály

Page 47: OpenAlt Konvoluční neuronové sítě

Pooling vrstva

• Podvzorkování

– pixely z okolí se agregují do jedné hodnoty

– zmenšení rozměru vrstvy

– používají se operace MAX/MEAN

– MAX přímo zvyšuje invarianci vůči posunutí

Page 48: OpenAlt Konvoluční neuronové sítě

Architektura sítě

Page 49: OpenAlt Konvoluční neuronové sítě

Vlastnosti konvolučních sítí

• Výhody

– Klasifikace obrázků je velmi rychlá. >100 fps na rychlé GPU

• Problémy

– Pro trénování je potřeba rozumět, co se děje uvnitř. Často sítě

nedělají, co mají, a je potřeba zjistit proč.

– Trénování je výpočetně náročné. Velké sítě se na nejnovějších GPU

trénují klidně měsíc.

Page 50: OpenAlt Konvoluční neuronové sítě

Jak trénovat sítě?

• Koupit rychlou herní grafiku

– GTX 970/980 a podobné

• Vybrat nástroj a nainstalovat

– Caffe, Lasagne, Keras, OpenDeep

• Definovat problém

– Jaké vstupy, jaké výstupy

• Sehnat data

• Stáhnout existující předtrénovanou síť

– Model Zoo https://github.com/BVLC/caffe/wiki/Model-Zoo

• Podle potřeby vyměnit výstupní vrstvu sítě

• Dotrénovat síť na vlastním datasetu

Page 51: OpenAlt Konvoluční neuronové sítě

CNN features

• Take pre-trained network and use activation of a late layer

as features

– https://github.com/BVLC/caffe/wiki/Model-Zoo

– E.g. learned on ImageNet

• Use any classifier for your problem

• Fine-tuning on your problem gives better results.

Donahue et al.:DeCAF: A Deep Convolutional Activation Feature for Generic Visual

Recognition

Page 52: OpenAlt Konvoluční neuronové sítě

CNN features

5

Donahue et al.: DeCAF: A Deep Convolutional Activation Feature for Generic Visual

Recognition. ICML 2014

Page 53: OpenAlt Konvoluční neuronové sítě

Cross-domain image search

Crowley and Zissrman: In Search of Art, Workshop on Computer Vision for Art Analysis,

ECCV, 2014

Page 54: OpenAlt Konvoluční neuronové sítě

Feature visualization – Layer 2

Zeiler, Fergus: Visualizing and Understanding Convolutional Networks, ECCV 2014.

Page 55: OpenAlt Konvoluční neuronové sítě

Feature visualization – Layer 5

Zeiler, Fergus: Visualizing and Understanding Convolutional Networks, ECCV 2014.

Page 56: OpenAlt Konvoluční neuronové sítě

Layers and network size

5

Krizhevsky, A., Sutskever, I. and Hinton, G. E.: ImageNet Classification with Deep

Convolutional Neural Networks, NIPS 2012.

• Start small

– low resolution, ~4 hidden layers, not too many channels

– run fast experiments

• Scale-up until overfitting takes over

• Fix overfitting and scale-up again

Page 57: OpenAlt Konvoluční neuronové sítě

Very Deep Convolutional Networks

5

Karen Simonyan, Andrew Zisserman: Very Deep Convolutional Networks for Large-Scale

Image Recognition,

Page 58: OpenAlt Konvoluční neuronové sítě

GoogLeNet

5

Szegedy et al.: Going deeper with convolutions

Page 59: OpenAlt Konvoluční neuronové sítě

GoogLeNet - Inception Layer

5

Szegedy et al.: Going deeper with convolutions

• Winner of ILSVRC 2014

Page 60: OpenAlt Konvoluční neuronové sítě

Detekce objektů

• R-CNN

Girshick, R., Donahue, J., Darrell, T., & Malik, J., "Rich feature hierarchies for accurate

object detection and semantic segmentation"

Page 61: OpenAlt Konvoluční neuronové sítě

Model family for pixel prediction by conv. net

applied to semantic segmentation

- end-to-end learning

- efficiency in inference and learning

175 ms per-image prediction

- multi-modal, multi-task

Fully Convolutional Network: FCN

Further applications

- depth estimation

- denoising

Jon Long & Evan Shelhamer

arXiv and pre-release

From: Shelhamer et al.: DIY Deep Learning for Vision:a Hands-On Tutorial with Caffe

Page 62: OpenAlt Konvoluční neuronové sítě

Pose estimation

Toshev et al.: DeepPose: Human Pose Estimation via Deep Neural Networks. CVPR 2014

6

Page 63: OpenAlt Konvoluční neuronové sítě

Zarovnání obličejů

• Stejný přístup jako předchozí

Sun et al.: Deep Convolutional Network Cascade for Facial Point Detection, CVPR 2013

Page 64: OpenAlt Konvoluční neuronové sítě

Photo Deblurring

Hradiš et al.: Convolutional Neural Networks for Direct Text Deblurring.

BMVC 2015. http://www.fit.vutbr.cz/~ihradis/CNN-Deblur/

Page 65: OpenAlt Konvoluční neuronové sítě

Rozpoznání obličejů

• Facebook – DeepFace

– detekce obličejových bodů a napasování 3D modelu

– „frontalizace“ obličeje do 2D

– natrénování CNN klasifikátoru na obrovském datasetu 4.4M obrázků,

4k lidí

– uříznutí poslední vrstvy – předposlední se používá jako příznaky pro

porovnávání obrázků

6

Taigman et al.: DeepFace: Closing the Gap to Human-Level Performance in Face Verification,

ECCV 2014

Page 66: OpenAlt Konvoluční neuronové sítě

Similarity – Siamese net

Chopra, Sumit, Raia Hadsell and Yann LeCun: Learning a similarity

metric discriminatively, with application to face verification, CVPR 2005

Page 67: OpenAlt Konvoluční neuronové sítě

Deep dreams and others

• Image captioning

– http://cs.stanford.edu/people/karpathy/deepimagesent/

– https://www.youtube.com/watch?v=URms8S-m5rU

• Generating images

– numbers https://www.youtube.com/watch?v=Zt-7MI9eKEo

– chairs https://www.youtube.com/watch?v=QCSW4isBDL0

• Painting style transfer

– https://www.youtube.com/watch?v=-R9bJGNHltQ

– https://vimeo.com/139123754

• Deep dreams

– https://www.youtube.com/watch?v=a1On8Diw_Og

– https://www.youtube.com/watch?v=w5U7EL72ngI

Page 68: OpenAlt Konvoluční neuronové sítě

Dataset: ImageNet

• Fotografie z webu

– obrázky vyhledány podle klíčových slov a ručně zkontrolovány

– jeden obrázek patří do jedné třídy

• 21k tříd (podstatná jména, většinou objekty, živočichové,

rostliny)

• 14M obrázků

• Lokalizace objektů pro část datasetu

– ~200 tříd objektů - vhodné pro detekci

• Large Scale Visual Recognition Challenge

– 1000 tříd, 1.2M trénovačích obrázků

Deng et al.: ImageNet: A Large-Scale Hierarchical Image Database, CVPR 2009 68

Page 69: OpenAlt Konvoluční neuronové sítě

Dataset: MS COCO

• >70 kategorií, segmentace objektů, více tříd a objektů na

obrázku, >300k obrázků, >2M instancí objektů,

• http://mscoco.org/

Lin et al.: Microsoft COCO: Common Objects in Context, ECCV 2014

Page 70: OpenAlt Konvoluční neuronové sítě

MS COCO

a woman posing for a pic in front of a mountain, near the water.

a woman poses for a photo while sitting on a bench by the seaside.

lady in the jacket is sitting on the concrete bench smiling.

woman sitting at a picnic table next to the ocean.

a woman sitting on a stone bench in front of the beach.

Page 71: OpenAlt Konvoluční neuronové sítě

Dataset: SUN397 – „from Abbey to Zoo“

• 397 typů scén

• > 100 obrázků na kategorii

Xiao et al.: SUN database: Large-scale scene recognition from abbey to zoo, CVPR 2010

Page 72: OpenAlt Konvoluční neuronové sítě

Další datové sady

• PASCAL VOC 2007/2012, CALTECH 101/256

Page 73: OpenAlt Konvoluční neuronové sítě

Data augmentation

Page 74: OpenAlt Konvoluční neuronové sítě

Caffe – základy

Page 75: OpenAlt Konvoluční neuronové sítě

Caffe – základy

• Vytvořit dataset

• Textový soubor s obrázky a jejich třídami

• Trénovací a testovací sada

• Definovat síť

• Protobuf soubor definující vrstvy a jejich propojení

• Nastavit trénování

• Konfigurační soubor

• Spustit trénování

• Python

• Matlab

> caffe train -solver lenet_solver.prototxt -gpu 0

Page 76: OpenAlt Konvoluční neuronové sítě

Net

name: "dummy-net"

layers { name: "data" …}

layers { name: "conv" …}

layers { name: "pool" …}

… more layers …

layers { name: "loss" …}

● A network is a set of layers

connected as a DAG:

LogReg ↑

LeNet →

ImageNet, Krizhevsky 2012 →

● Caffe creates and checks the net from

the definition.

● Data and derivatives flow through the

net as blobs – a an array interface

Shelhamer et al.: DIY Deep Learning for Vision:a Hands-On Tutorial with Caffe

Page 77: OpenAlt Konvoluční neuronové sítě

Layername: "conv1"

type: CONVOLUTION

bottom: "data"

top: "conv1"

convolution_param {

num_output: 20

kernel_size: 5

stride: 1

weight_filler {

type: "xavier"

}

}

name, type, and the

connection structure

(input blobs and

output blobs)

layer-specific

parameters

Shelhamer et al.: DIY Deep Learning for Vision:a Hands-On Tutorial with Caffe

Page 78: OpenAlt Konvoluční neuronové sítě

Konfigurace trénování – solver

train_net: "train_net.prototxt"

base_lr: 0.01

momentum: 0.9

weight_decay: 0.0005

max_iter: 10000

snapshot_prefix: "lenet_snapshot"

Shelhamer et al.: DIY Deep Learning for Vision:a Hands-On Tutorial with Caffe

Page 79: OpenAlt Konvoluční neuronové sítě

Caffe - python

import caffe

caffe.set_mode_gpu()

net = caffe.Net(args.model_def, pretrained_model,

'test')

out = classifier.forward_all(data=data)

out = out[extract_layer]

Page 80: OpenAlt Konvoluční neuronové sítě

Zdroje

• https://sites.google.com/site/deeplearningcvpr2014/

• http://tutorial.caffe.berkeleyvision.org/

• Krizhevsky, A., Sutskever, I. and Hinton, G. E.: ImageNet Classification

with Deep Convolutional Neural Networks, NIPS 2012.

• LeCun et al.: Gradient-Based Learning Applied to Document

Recognition, Proceedings of the IEEE, 1998

• Hinton: Neural Networks for Machine Learning, on-line kurz

COURSERA, https://www.coursera.org/course/neuralnets

• http://www.deeplearning.net/tutorial/

• UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

• http://tutorial.caffe.berkeleyvision.org/

• Toshev et al.: DeepPose: Human Pose Estimation via Deep Neural

Networks

• Girshick, R., Donahue, J., Darrell, T., & Malik, J., "Rich feature

hierarchies for accurate object detection and semantic segmentation„

• Taigman et al.: DeepFace: Closing the Gap to Human-Level

Performance in Face Verification, ECCV 2014


Recommended