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

Post on 16-Feb-2017

568 views 2 download

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