petr zadražil: tensorflow v mobilních aplikacích

53

Upload: mdevtalk

Post on 16-Feb-2017

568 views

Category:

Mobile


2 download

TRANSCRIPT

Page 1: Petr Zadražil: TensorFlow v mobilních aplikacích
Page 2: Petr Zadražil: TensorFlow v mobilních aplikacích

PETR ZADRAŽILSoftware Engineer, Google

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

TensorFlowpro mobilní vývojáře

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

Rozpoznávání obrázků

TensorFlow

Mobilní praxe

Obsah

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

Rozpoznávání obrázků

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

Skok Kupředu

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

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

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

Inceptionism

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

Inceptionism

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

Inceptionism

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

Inceptionism

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

Umělecké Styly

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

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í?

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

Preprocessing

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

10 čísel (kategorií)

60 000 trénovacích

10 000 testovacích

28 x 28 pixelů

MNIST

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

MNIST

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

y = softmax (Wx + b)

Softmax Regressioni →

j ↓

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

Ztrátová funkce

y = softmax (Wx + b)

y = [0.5, 0.2, 0.3]

y’ = [1, 0, 0]

i →

j ↓

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

Výsledek

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

TensorFlow

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

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

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

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

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

vstup

parametr

operace

tensor

Graf - základ výpočtu

W

b

x

MatMul

Add

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

Graf - základ výpočtu

W

b

x

MatMul

Add

LossLearn

y’

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

Ukázka Kódu

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/

examples/tutorials/mnist/mnist_softmax.py

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

Neuronová síť

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

Neuron

Σ f()W2

W3b

W1

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

Aktivační funkce

Sigmoid: 1 / (1 - e^(-x))

Gausian: e ^ (-(x^2))

ReLU: max(0, x)

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

Neuronová Síť

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

Konvoluční Neuronová Síť

preprocessing - centrovani

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

Konvoluční Neuronová Síť

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

Konvoluční Neuronová Síť

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

Konvoluční Neuronová Síť

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

Animace

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

Ukázka Kódu

https://drive.google.com/open?id=0B00r-2PrfhYJX3l6Wnh2VHhSWms

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

Krizehvsky et al. (2012)

2 GPUs, ReLU, DropOut, ImageNet

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

Krizehvsky et al. (2012)

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

Krizehvsky et al. (2012)

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

Mobilní Praxe

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

Vývojový proces

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

KnihovnaJava

Nativní Kód (C)

TensorFlow

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

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>;

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

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);

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

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}));

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

Google Translate

Živé Ukázky

TensorFlow Demo App

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

https://www.youtube.com/watch?v=0zKU7jDA2nc&t=1m50s

Google Translate

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

Triky

preprocessing

detekce tvarů

normalizace

nepřesný překlad (5uper)

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

Triky

Generovaná Data

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

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/

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

Otázky?

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

Líná huba - holé neštěstí.

— moje babička

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

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

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

WWW.MDEVTALK.CZ

mdevtalk