Petr Zadražil: TensorFlow v mobilních aplikacích
Transcript of Petr Zadražil: TensorFlow v mobilních aplikacích
PETR ZADRAŽILSoftware Engineer, Google
TensorFlowpro 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 Regressioni →
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
W3b
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
KnihovnaJava
Nativní Kód (C)
TensorFlow
Android Kódhttps://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ódhttps://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ódhttps://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