Počítačové vidění Prezentace přednášek Ústav počítačové grafiky a multimédií
Téma přednášky Klasifikace obrazu a konvoluční neuronové sítě Michal Hradiš UPGM FIT Brno University of Technology
Obsah: Klasifikace obrazu + demo Datasety Přehled BOW+SVM Myšlenka hlubokého učení Neuronové sítě Konvoluční sítě Aplikace CNN na další problémy Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 3
Image classification multi-label Intelligent stuff Tagy 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 Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 4
Image classification multi-class WINDSURFING Intelligent stuff Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 5
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, Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 6
Na co to je? Reprezentace obrazu pomocí sémanticky smysluplných kategorií místo nízko úrovňových příznaků Vyhledávání přímo podle kategorií Vyhledávání podle obsahu (content-based image search) Podobnostní vyhledávání podobnost může být definována jako shoda sémantických kategorií Automatické (polo-automatické) tagování fotografií a videí místo současné ruční anotace (Flickr, Youtoube) Budoucnost: Vytváření textových popisů fotografii? Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 7
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 8
MS COCO common objects in context >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 9
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. Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 10
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 11
Další datové sady PASCAL VOC 2007/2012, CALTECH 101/256 Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 12
Klasický přístup Extrakce příznaků Příznakový vektor Klasifikátor1 Klasifikátor2 Klasifikátor N ano/ne ano/ne ano/ne Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 13
Extrakce příznaků podobnost obrazu Klasifikace je založena na podobnosti obrázků stejné kategorie v prostoru příznaků Potřebujeme příznaky, které ulehčí práci klasifikátoru Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 14
Extrakce příznaků Globální příznaky popisují obraz jako celek barevné/lbp histogramy, barevné momenty, gradienty, GIST Lokální příznaky Popisují malou oblast obrazu lokálně jsou objekty a obrazy více podobné než globálně i při změně objektů, pohledů, Detektory: Harris, Harris-Laplace, Harris-affine, MSER, IBR, EBR Descriptory: SIFT, rgb-sift, GLOH, Patch descriptor Feature vector Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 15
Kvantizace lokálních příznaků Nalezení podobnosti mezi obrázky přímo z lokálních příznaků má kvadratickou složitost Všechny oblasti z jednoho obrázku se musí porovnat se všemi oblastmi z druhého obrázku Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 16
Slovníková transformace (kvantizace) Slovník - reprezentativní sada prototypů oblastí (k-means) převádí descriptor na jedno číslo (id nejpodobnějšího prototypu) Bag of Words (BOW) histogram id vizuálních slov reprezentuje obrázek porovnání obrázků má pak lin. složitost Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 17
Bag of Words Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 18
Bag of Words Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 19
Image representations Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 20
Traditional approach Fixed engineered features followed by simple trainable classifier Human-driven academic evolution Feature Extractor Learning algorithm Simple Classifier (lin./kernel SVM) SIFT Codebook transform, Sparse coding Pooling Michal Hradiš - Deep Learning for Computer Vision 21
Deep learning - CNN Features are merged with a classifier and learned jointly Learning Algorithm Feature Extractor Classiffier Learned Convolution + ReLU Fixed Pooling Learned Convolution + ReLU Fixed Pooling Michal Hradiš - Deep Learning for Computer Vision 22
Hierarchy of features Low-level features Mid-level features High-level features Michal Hradiš - Deep Learning for Computer Vision 23
Feature visualization Layer 2 Zeiler, Fergus: Visualizing and Understanding Convolutional Networks, ECCV 2014. Michal Hradiš - Deep Learning for Computer Vision 24
Feature visualization Layer 5 Zeiler, Fergus: Visualizing and Understanding Convolutional Networks, ECCV 2014. Michal Hradiš - Deep Learning for Computer Vision 25
Hluboké učení deep learning Klasický přístup Extrakce příznaků (navrženo člověkem) Učící algoritmus Jednoduchý klasifikátor (lin./kernel SVM) Hluboké učení Učící algoritmus Naučené příznaky Naučený klasifikátor Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 26
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, distance learning, SVM hinge loss (hokejka), auto-encoders, sparse respresentations, Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 27
Hlubší neuronové sítě Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/ufldl_tutorial Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 28
Neural Network Numerical input vector 0.1 0.2 0.5 0.6 0.7 0.8 0.4 0.2 0.6 Neural Network (function with trainable parameters) Numerical output vector 0 1 0.5 1.2 3 2 1 2 0 Michal Hradiš - Deep Learning for Computer Vision 29
Klasický neuron Aktivací neuronu je vážený součet vstupů, plus bias Výsledek neuronu vznikne aplikací nelineární aktivační funkce Možný zápis neuronu Aktivační funkce např. sigmoida Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/ufldl_tutorial Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 30
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) δf(x) x = h(x) g(x) g(x) x Příklad objektivní fce. half squared error Source: UFLDL tutorial, http://ufldl.stanford.edu/wiki/index.php/ufldl_tutorial Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 31
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 Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 32
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 Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 33
Stochastic Gradient Descent Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 34
Konvoluční neuronové sítě Jsou to úplně normální dopředné neuronové sítě Bývají hluboké Váhy jsou omezeny Některé jsou nuceny mít stejnou hodnotu Některé (mnoho) jsou nastavené na 0 Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 35
Historie 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í Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 36
Konvoluční vrstva Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 37
Konvoluční vrstva Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 38
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í Počítačové vidění / Klasifikace obrazu a konvoluční neuronové sítě 39
Architektura sítě Počítačové vidění / Klasifikátor typu AdaBoost 40
ReLU - Rectified Linear Unit ReLU x = max(0, z) Michal Hradiš - Deep Learning for Computer Vision 41
Dropout regularization Strong regularization L2/weight decay does not work much with ReLU Training: set random 50% of activations of a layer to 0 Testing: use all activations multiplied by 0.2 Michal Hradiš - Deep Learning for Computer Vision 42
Data augmentation Michal Hradiš - Deep Learning for Computer Vision 43
Trénování konvolučních sítí Nástroje Caffe, Troch 7, Theano Výhody Klasifikace obrázků je velmi rychlá. >100 fps na rychlé GPU Problémy 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. Řešení Na vlastní problém můžete využít spodní vrstvy z již předtrénované síťě, přida několik dalších vrstev a celou síť doučit nejlepší výsledky na mnoha datasetech. Počítačové vidění / Klasifikátor typu AdaBoost 44
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. Michal Hradiš - Deep Learning for Computer Vision 45
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-tune on your problem using back. prop. Donahue et al.:decaf: A Deep Convolutional Activation Feature for Generic Visual Recognition Michal Hradiš - Deep Learning for Computer Vision 46
Very Deep Convolutional Networks Karen Simonyan, Andrew Zisserman: Very Deep Convolutional Networks for Large-Scale Image Recognition, Michal Hradiš - Deep Learning for Computer Vision 47
GoogLeNet Szegedy et al.: Going deeper with convolutions Michal Hradiš - Deep Learning for Computer Vision 48
CNN features Donahue et al.: DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition Michal Hradiš - Deep Learning for Computer Vision 49
Cross-domain image search Crowley and Zissrman: In Search of Art, Workshop on Computer Vision for Art Analysis, ECCV, 2014 Michal Hradiš - Deep Learning for Computer Vision 50
Rich Features from RGB-D Images Gupta, Girshick, Arbeláez, Malik: Learning Rich Features from RGB-D Images for Object Detection and Segmentation. ECCV 2014 Michal Hradiš - Deep Learning for Computer Vision 51
Car orientation very small dataset 22 cars 14 for training Glasner et al.: Viewpoint-Aware Object Detection and Pose Estimation. ICCV 2011. Michal Hradiš - Deep Learning for Computer Vision 52
Car orientation Michal Hradiš - Deep Learning for Computer Vision 53
Detekce objektů R-CNN Girshick, R., Donahue, J., Darrell, T., & Malik, J., "Rich feature hierarchies for accurate object detection and semantic segmentation" Počítačové vidění / Klasifikátor typu AdaBoost 54
OverFeat fully convolutional Sermanet et al.: OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks Michal Hradiš - Deep Learning for Computer Vision 55
Text deblurring Počítačové vidění / Klasifikátor typu AdaBoost 56
Text deblurring Počítačové vidění / Klasifikátor typu AdaBoost 57
Pose estimation Toshev et al.: DeepPose: Human Pose Estimation via Deep Neural Networks. CVPR 2014 Počítačové vidění / Klasifikátor typu AdaBoost 58
Zarovnání obličejů Stejný přístup jako předchozí Sun et al.: Deep Convolutional Network Cascade for Facial Point Detection, CVPR 2013 Počítačové vidění / Klasifikátor typu AdaBoost 59
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 Počítačové vidění / Klasifikátor typu AdaBoost 60
Identity preserving face space Zhu et al.: Deep Learning Identity-Preserving Face Space. ICCV 2013. Michal Hradiš - Deep Learning for Computer Vision 61
Similarity Siamese net Chopra, Sumit, Raia Hadsell and Yann LeCun: Learning a similarity metric discriminatively, with application to face verification, CVPR 2005 Michal Hradiš - Deep Learning for Computer Vision 62
Vyhodnocení klasifikace obrazu Accuracy přesnost Top-2 accuracy Mean average precision Equal error rate Počítačové vidění / Klasifikátor typu AdaBoost 63
Zdroje 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 Počítačové vidění / Klasifikátor typu AdaBoost 64