OpenAlt Konvoluční neuronové sítě
Transkript
OpenAlt Konvoluční neuronové sítě
Konvoluční neuronové sítě Michal Hradiš http://www.fit.vutbr.cz/~ihradis/ 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 Vyhledávání fotek • Google photo search – search your photo collection – https://photos.google.com/search Automatický popis fotek "man in black shirt is playing guitar." "construction worker in orange safety vest is working on road." "girl in pink dress is jumping in air." Andrej Karpathy, Li Fei-Fei: Deep Visual-Semantic Alignments for Generating Image Descriptions. CVPR 2015 http://cs.stanford.edu/people/karpathy/deepimagesent/ Automatický popis fotek "boy is doing backflip on wakeboard." "construction "black cat worker is sitting in orange "a cat is sitting on a couch safetyon vest topisofworking suitcase." on road." with a remote control." Andrej Karpathy, Li Fei-Fei: Deep Visual-Semantic Alignments for Generating Image Descriptions. CVPR 2015 http://cs.stanford.edu/people/karpathy/deepimagesent/ Automatický popis fotek "a woman holding a teddy bear in front of a mirror." "a horse is standing in the middle of a road." "a young boy is holding a baseball bat." Andrej Karpathy, Li Fei-Fei: Deep Visual-Semantic Alignments for Generating Image Descriptions. CVPR 2015 http://cs.stanford.edu/people/karpathy/deepimagesent/ Facebook - DeepFace Deep Dreams Thorne Brandt Style transfer Leon A. Gatys, Alexander S. Ecker, Matthias Bethge: A Neural Algorithm of Artistic Style Style transfer Style transfer • https://vimeo.com/139123754 Co je na obrázku? Tags Intelligent stuff outdoors indoors sport person water trees politician singing dog cat dancing cars walking running swimming mountains yes no yes yes yes yes no no no no no no no no no no 13 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, … Strojové učení Flag AK-47 Intelligent stuff Flag AK-47 Flag Základ - podobnost obrazů 16 Bag of Words Bag of Words Bag of Words 19 Image representations Traditional approach • Fixed engineered features followed by simple trainable classifier Human-driven academic evolution Learning algorithm Simple Classifier (lin./kernel SVM) Feature Extractor SUM 9 x 0.7 = 6.3 2 x 0.4 = 0.8 0 x -0.3 = 0 1 x -0.2 = -0.2 > 0 GODDES = 7.1 < 0 Something else Hluboké učení – deep learning Navrženo člověkem (pracovití Ph.D. stud.) Učící algoritmus Extrakce příznaků Jednoduchý klasifikátor (lin./kernel SVM) • Hluboké učení Učící algoritmus Extrakce příznaků klasifikátor Hierarchy of features Low-level features Mid-level features High-level features Co je to neuronová síť? Numerical input vector Numerical output vector 0.1 0.2 0.5 0.6 0.7 0.8 0.4 0.2 0.6 0 1 0.5 1.2 3 2 1 2 0 Neural Network function with trainable parameters Příklad neuronové sítě 𝑓 𝑥 = 𝑎𝑥 + 𝑏 Strojové učení Flag AK-47 Intelligent stuff Flag AK-47 Flag Příklad neuronové sítě 𝑓 𝑥 = 𝑎𝑥 + 𝑏 argmin 𝑎,𝑏 𝑦𝑖 − 𝑓 𝑥𝑖 (𝑥𝑖 ,𝑦𝑖 ) 2 Generalizace učení Generalizace učení 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, … Hlubší neuronové sítě Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial Hlubší neuronové sítě Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial Hlubší neuronové sítě x Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial Základ neuronu 𝑥1 𝑤1 𝑥2 𝑤2 𝑓𝑤 (𝑥) 𝑥3 𝑤3 𝑓𝑤 𝑥 = 𝑤1 𝑥1 + 𝑤2 𝑥2 +𝑤3 𝑥3 Neuron s ReLU aktivační funkcí 𝑥1 𝑤1 𝑥2 𝑤2 𝑓𝑤 (𝑥) 𝑥3 𝑤3 𝑓𝑤 𝑥 = max(𝑤1 𝑥1 + 𝑤2 𝑥2 +𝑤3 𝑥3 , 0) Hlubší neuronové sítě Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial Výpočet 𝑥2 = 𝑚𝑎𝑥 𝑊1 𝑥1 , 0 𝑥3 = 𝑚𝑎𝑥 𝑊2 𝑥2 , 0 𝑥4 = 𝑚𝑎𝑥 𝑊3 𝑥3 , 0 𝑥1 𝑥2 𝑥3 𝑥4 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 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 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 Stochastic Gradient Descent Historie Konvolučních sítí • 1980 – Kunihiko Fukushima – Neocognitron: A Selforganizing 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í 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 Konvoluce Konvoluční vrstva Konvoluční vrstva - kanály 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í Architektura 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. 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 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 CNN features Donahue et al.: DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition. ICML 2014 Cross-domain image search Crowley and Zissrman: In Search of Art, Workshop on Computer Vision for Art Analysis, ECCV, 2014 Feature visualization – Layer 2 Zeiler, Fergus: Visualizing and Understanding Convolutional Networks, ECCV 2014. Feature visualization – Layer 5 Zeiler, Fergus: Visualizing and Understanding Convolutional Networks, ECCV 2014. Layers and network size • 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 Krizhevsky, A., Sutskever, I. and Hinton, G. E.: ImageNet Classification with Deep Convolutional Neural Networks, NIPS 2012. Very Deep Convolutional Networks Karen Simonyan, Andrew Zisserman: Very Deep Convolutional Networks for Large-Scale Image Recognition, GoogLeNet Szegedy et al.: Going deeper with convolutions GoogLeNet - Inception Layer • Winner of ILSVRC 2014 Szegedy et al.: Going deeper with convolutions Detekce objektů • R-CNN Girshick, R., Donahue, J., Darrell, T., & Malik, J., "Rich feature hierarchies for accurate object detection and semantic segmentation" Fully Convolutional Network: FCN 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 Further applications - depth estimation - denoising arXiv and pre-release Jon Long & Evan Shelhamer From: Shelhamer et al.: DIY Deep Learning for Vision:a Hands-On Tutorial with Caffe Pose estimation Toshev et al.: DeepPose: Human Pose Estimation via Deep Neural Networks. CVPR 2014 Zarovnání obličejů • Stejný přístup jako předchozí Sun et al.: Deep Convolutional Network Cascade for Facial Point Detection, CVPR 2013 Photo Deblurring Hradiš et al.: Convolutional Neural Networks for Direct Text Deblurring. BMVC 2015. http://www.fit.vutbr.cz/~ihradis/CNN-Deblur/ 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ů Taigman et al.: DeepFace: Closing the Gap to Human-Level Performance in Face Verification, ECCV 2014 Similarity – Siamese net Chopra, Sumit, Raia Hadsell and Yann LeCun: Learning a similarity metric discriminatively, with application to face verification, CVPR 2005 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 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 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 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. 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 Další datové sady • PASCAL VOC 2007/2012, CALTECH 101/256 Data augmentation Caffe – základy 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í > caffe train -solver lenet_solver.prototxt -gpu 0 • Python • Matlab Net ● A network is a set of layers connected as a DAG: name: "dummy-net" layers { name: "data" …} layers { name: "conv" …} layers { name: "pool" …} … more layers … LogReg ↑ layers { name: "loss" …} ● Caffe creates and checks the net from the definition. ● Data and derivatives flow through the net as blobs – a an array interface LeNet → ImageNet, Krizhevsky 2012 → Shelhamer et al.: DIY Deep Learning for Vision:a Hands-On Tutorial with Caffe Layer name: "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 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 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] 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
Podobné dokumenty
Dálkový průzkum Země Co je DPZ? DPZ je …
Aplikace a využití
Využití a pokryvnost
země (Landuse a
sexuální násilí - Intervenční centrum Praha
publikace, podpořily, jsou drobné změny ve vlastní praxi sociálních pracovnic i pracovníků a dalších pomáhajících profesí a zlepšení práce v již existujících organizacích.
Jedním z témat, které mě...
ZIMA/LÉTO 2015 - Čechoaustralan
v oblasti společenské víc, než je možné v reálném světě. Samozřejmě, že mezi své facebookové přátele přijmete přátele skutečné. A po čase najednou zjistíte, že vám začne
vadit, když někteří přátelé...
Trendy 2009 - S
Výstaviště 1
647 00 Brno
Tel.: +420 541 152 818
Fax: +420 541 153 063
E-mail: [email protected]
www.opta.cz