SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
PETR ZADRAŽIL
Software Engineer, Google
TensorFlow

pro mobilní vývojáře
Rozpoznávání obrázků
TensorFlow
Mobilní praxe
Obsah
Rozpoznávání obrázků
Skok Kupředu
32x32px - 10 kategorií
ukázky obrázků
správně
2015 96.53%
2014 93.72%
2013 90.68%
2012 90.50%
2011 80.00%
člověk ~94.00%
CIFAR-10
Inceptionism
Inceptionism
Inceptionism
Inceptionism
Umělecké Styly
výpočetní síla (i mobilní)
množství dat
distribuované algoritmy
větší porozumění
nové typy neuronových sítí
Proč až nyní?
Preprocessing
10 čísel (kategorií)
60 000 trénovacích
10 000 testovacích
28 x 28 pixelů
MNIST
MNIST
y = softmax (Wx + b)
Softmax Regression
i →
j
↓
Ztrátová funkce
y = softmax (Wx + b)
y = [0.5, 0.2, 0.3]
y’ = [1, 0, 0]
i →
j
↓
Výsledek
TensorFlow
distribuovaný machine-learning framework
vedlejší produkt výzkumu v Google
umožňuje:
100 000 000 000+ parametrů
100 000 000 000+ příkladů
100+ výpočetních serverů
TensorFlow
interface: Python, C++, …
portabilní: CPU, GPU, mobilní telefony, …
využití:
rozpoznávání řeči
rozpoznávání obrazu
robotika
vytežování dat
výzkum léků
TensorFlow
vstup
parametr
operace
tensor
Graf - základ výpočtu
W
b
x
MatMul
Add
Graf - základ výpočtu
W
b
x
MatMul
Add
LossLearn
y’
Ukázka Kódu
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/
examples/tutorials/mnist/mnist_softmax.py
Neuronová síť
Neuron
Σ f()W2
W3
b
W1
Aktivační funkce
Sigmoid: 1 / (1 - e^(-x))
Gausian: e ^ (-(x^2))
ReLU: max(0, x)
Neuronová Síť
Konvoluční Neuronová Síť
preprocessing - centrovani
Konvoluční Neuronová Síť
Konvoluční Neuronová Síť
Konvoluční Neuronová Síť
Animace
Ukázka Kódu
https://drive.google.com/open?id=0B00r-2PrfhYJX3l6Wnh2VHhSWms
Krizehvsky et al. (2012)
2 GPUs, ReLU, DropOut, ImageNet
Krizehvsky et al. (2012)
Krizehvsky et al. (2012)
Mobilní Praxe
Vývojový proces
Knihovna
Java
Nativní Kód (C)
TensorFlow
Android Kód
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android
tensorflow::Tensor input_tensor(
tensorflow::DT_FLOAT,
tensorflow::TensorShape({1, g_tensorflow_input_size,
g_tensorflow_input_size, 3}));
auto input_tensor_mapped = input_tensor.tensor<float, 4>();
input_tensor_mapped(i, j, k, l) = <float>;
Android Kód
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android
tensorflow::Tensor input_tensor(
tensorflow::DT_FLOAT,
tensorflow::std::vector<std::pair<std::string, tensorflow::Tensor> > input_tensors(
{{"input:0", input_tensor}});
std::vector<tensorflow::Tensor> output_tensors;
std::vector<std::string> output_names({"output:0"});
tensorflow::Status s = session->Run(input_tensors, output_names, {},
&output_tensors);
Android Kód
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android
if (!s.ok()) {
LOG(ERROR) << "Error during inference: " << s;
return "";
}
tensorflow::Tensor* output = &output_tensors[0];({1,
g_tensorflow_input_size, g_tensorflow_input_size, 3}));
Google Translate
Živé Ukázky
TensorFlow Demo App
https://www.youtube.com/watch?v=0zKU7jDA2nc&t=1m50s
Google Translate
Triky
preprocessing
detekce tvarů
normalizace
nepřesný překlad (5uper)
Triky
Generovaná Data
Kam Dál
Web TensorFlow: https://www.tensorflow.org/
TebsorFlow Android Example: https://github.com/tensorflow/
tensorflow/tree/master/tensorflow/examples/android
Materiály k prezentaci: https://drive.google.com/open?
id=0B00r-2PrfhYJQ0oyZkpyaFF5amc
Colah’s Blog: http://colah.github.io/
Karpathy’s Blog: http://karpathy.github.io/
Otázky?
Líná huba - holé neštěstí.
— moje babička
Web TensorFlow: https://www.tensorflow.org/
TensorFlow White Paper: http://download.tensorflow.org/paper/whitepaper2015.pdf
TebsorFlow Android Example: https://github.com/tensorflow/tensorflow/tree/master/
tensorflow/examples/android
Google Research Blog: http://googleresearch.blogspot.cz/
Colah’s Blog: http://colah.github.io/
Karpathy’s Blog: http://karpathy.github.io/
Rodrigo’s Blog: http://rodrigob.github.io/
XKCD: http://xkcd.com
Neural Artist Style: https://github.com/jcjohnson/neural-style
Zdroje
WWW.MDEVTALK.CZ
mdevtalk

Contenu connexe

Plus de mdevtalk

David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?mdevtalk
 
Maxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisationMaxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisationmdevtalk
 
Nikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutionsNikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutionsmdevtalk
 
Milan Oulehla: Bezpečnost mobilních aplikací na Androidu
Milan Oulehla: Bezpečnost mobilních aplikací na AndroiduMilan Oulehla: Bezpečnost mobilních aplikací na Androidu
Milan Oulehla: Bezpečnost mobilních aplikací na Androidumdevtalk
 
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundůTomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundůmdevtalk
 
David Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVPDavid Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVPmdevtalk
 
Adam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerViewAdam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerViewmdevtalk
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncmdevtalk
 
Charles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX DesignCharles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX Designmdevtalk
 
Honza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package ManagerHonza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package Managermdevtalk
 
David Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a AzureDavid Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a Azuremdevtalk
 
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatDominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatmdevtalk
 
Jiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOSJiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOSmdevtalk
 
Petr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkémPetr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkémmdevtalk
 
Ondřej David: Zabezpečení Androidu na úrovni hardwaru
Ondřej David: Zabezpečení Androidu na úrovni hardwaruOndřej David: Zabezpečení Androidu na úrovni hardwaru
Ondřej David: Zabezpečení Androidu na úrovni hardwarumdevtalk
 
Petr Šíma: Principy funkcionálně reaktivního programovaní na mobilních platfo...
Petr Šíma: Principy funkcionálně reaktivního programovaní na mobilních platfo...Petr Šíma: Principy funkcionálně reaktivního programovaní na mobilních platfo...
Petr Šíma: Principy funkcionálně reaktivního programovaní na mobilních platfo...mdevtalk
 
Petr Hamerník: Textová analytika v mobilních aplikacích
Petr Hamerník: Textová analytika v mobilních aplikacíchPetr Hamerník: Textová analytika v mobilních aplikacích
Petr Hamerník: Textová analytika v mobilních aplikacíchmdevtalk
 

Plus de mdevtalk (17)

David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?
 
Maxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisationMaxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisation
 
Nikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutionsNikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutions
 
Milan Oulehla: Bezpečnost mobilních aplikací na Androidu
Milan Oulehla: Bezpečnost mobilních aplikací na AndroiduMilan Oulehla: Bezpečnost mobilních aplikací na Androidu
Milan Oulehla: Bezpečnost mobilních aplikací na Androidu
 
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundůTomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
 
David Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVPDavid Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVP
 
Adam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerViewAdam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerView
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & sync
 
Charles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX DesignCharles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX Design
 
Honza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package ManagerHonza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package Manager
 
David Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a AzureDavid Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a Azure
 
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatDominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
 
Jiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOSJiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOS
 
Petr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkémPetr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkém
 
Ondřej David: Zabezpečení Androidu na úrovni hardwaru
Ondřej David: Zabezpečení Androidu na úrovni hardwaruOndřej David: Zabezpečení Androidu na úrovni hardwaru
Ondřej David: Zabezpečení Androidu na úrovni hardwaru
 
Petr Šíma: Principy funkcionálně reaktivního programovaní na mobilních platfo...
Petr Šíma: Principy funkcionálně reaktivního programovaní na mobilních platfo...Petr Šíma: Principy funkcionálně reaktivního programovaní na mobilních platfo...
Petr Šíma: Principy funkcionálně reaktivního programovaní na mobilních platfo...
 
Petr Hamerník: Textová analytika v mobilních aplikacích
Petr Hamerník: Textová analytika v mobilních aplikacíchPetr Hamerník: Textová analytika v mobilních aplikacích
Petr Hamerník: Textová analytika v mobilních aplikacích
 

Petr Zadražil: TensorFlow v mobilních aplikacích