Slide 1

Slide 1 text

5'6(0LJOBXBWPM ΞΠύʔୂ௕

Slide 2

Slide 2 text

࣌·Ͱʹ ͓ΘΒ͢ ʢ༧ఆ͕͋Δʣ

Slide 3

Slide 3 text

͜ͷࢿྉ͸ҎԼͷࡐྉͰ Ͱ͖͍ͯ·͢ w5FOTPSqPX w,FSBT w+BWB4DSJQU w5γϟπΛήοτؾ࣋ͪʢ͖ͬ͞׬੒ͨ͠ʣ

Slide 4

Slide 4 text

ࣗݾ঺հ • ΞΠύʔୂ௕ʢΞΠύʔୂ௕ʣ • Pythonͱϥʔϝϯ಼ͱΰδϥͱՇʢೋ࣍ݩʣ͕޷͖Ͱ͢ • ͪΎΒσʔλגࣜձࣾ • PyData.OkinawaڞಉΦʔΨφΠβʔ • ࠷ۙ෱ԬͷPyConͰൃද͖ͯ͠·ͨ͠ • ࣮ફͯ͠Θ͔ͬͨPython & ਂ૚ڧԽֶश

Slide 5

Slide 5 text

͓࿩͢Δ͜ͱ

Slide 6

Slide 6 text

+BWB4DSJQUͰ σΟʔϓ ϥʔχϯά

Slide 7

Slide 7 text

૎Δ͜ͱ໿̑ϲ݄લ

Slide 8

Slide 8 text

JavaScript MeetUp Okinawa

Slide 9

Slide 9 text

LT͖ͯͨ͠

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Tensorflow.jsͱ͸ • Webϒϥ΢β্ͰػցֶशͷϞσϧͷߏஙɺֶशɺֶशࡁΈϞσ ϧͷ࣮ߦͳͲ͕ՄೳʹͳΔJavaScriptϥΠϒϥϦ ʮTensorFlow.jsʯ͕GoogleʹΑͬͯެ։͞Ε·ͨ͠ • ·ͨɺݱ࣌఺Ͱ͸ TensorFlow.jsͰֶशͤͨ͞ϞσϧΛΤΫε ϙʔτ͢Δػೳ͸࣮૷͞Ε͍ͯ·ͤΜɻNode.jsʹ΋ରԠ͓ͯ͠Β ͣɺ͜ΕΒ͸ࠓޙͷ՝୊ͱͳ͍ͬͯΔͱͷ͜ͱ Ҿ༻: http://www.publickey1.jp/blog/18/tensorflowjswebwebglgpu.html

Slide 14

Slide 14 text

Ϟνϕʔγϣϯ wษڧ w໘നͦ͏

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Ϟνϕʔγϣϯ wษڧ w໘നͦ͏
 w 5γϟπ

Slide 17

Slide 17 text

༡ΜͰΈͨ

Slide 18

Slide 18 text

ಈ͔͢ wTDSJQUλάͰϩʔυ wOQNͰJOTUBMM UFOTPSqPXUGKTcެࣜϦϙδτϦ

Slide 19

Slide 19 text

TDSJQUλάͰϩʔυ const model = tf.sequential(); model.add(tf.layers.dense({units: 1, inputShape: [1]})); model.compile({loss: 'meanSquaredError', optimizer: 'sgd'}); const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]); const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]); // Train the model using the data. model.fit(xs, ys).then(() => { model.predict(tf.tensor2d([5], [1, 1])).print(); });

Slide 20

Slide 20 text

OQNͰΠϯετʔϧ $ npm install @tensorflow/tfjs w QZUIPO͕ඞཁHZQ͕1ZUIPOܥʹରԠ͍ͯ͠ͳ͍ w HZQͬͯͳΜͧʁ w OPEFͷόʔδϣϯ͕YYͩͱΤϥʔ w OPEF⒏͕ରԠ͍ͯ͠ͳ͍ w /PEFKTͷੈք͔ΒμΠφϛοΫϥΠϒϥϦͷؔ਺ΛݺͿਆΞυΦϯ w YY΁μ΢ϯάϨʔυ

Slide 21

Slide 21 text

ιʔεΛॻ͘ import * as tf from '@tensorflow/tfjs'; // Define a model for linear regression. const model = tf.sequential(); model.add(tf.layers.dense({units: 1, inputShape: [1]})); FYBNQMFKT JOEFYIUNM

Slide 22

Slide 22 text

ίϯύΠϧ $ npm install -g parcel-bundler $ parcel build src/index.html --public-url ./ $ open dist/index.html w Α͘Θ͔ΒΜ͕ɺQBSDFM͕ଟ͍ʢυΩϡϝϯτ΋QBSDFMʣ w 1BSDFMͰ࢝ΊΔ5FOTPS'MPXKT ϒϥ΢β/PEFKT

Slide 23

Slide 23 text

Ͷ͘͢ͱ

Slide 24

Slide 24 text

ਓͷϞσϧͰ ༡Ϳ

Slide 25

Slide 25 text

࢖ͬͨσʔλ w5IF$*'"3EBUBTFU wUBXBEBEBUBTFUTʢࠓճ͜Εʣ

Slide 26

Slide 26 text

UBXBEBEBUBTFUT w5XBEB͘ΜͷՇʢͱͦͷଞʣΛֶशͤ͞Δͨ Ίͷσʔληοτ wৄࡉ͸Լه w ʲԶຓʳେ޷͖ͳࠇೣΛσΟʔϓϥʔχϯάͰ
 ೝࣝ͠ͳ͍Θ͚͕ͳ͍ʲσʔλऩूฤʳ w ଟ෼ɺࠓ೔ຊਓ͖͍ͯΔͷͰ
 ຊਓʹฉ͍͍ͯͩ͘͞ 5XBEBͷՇ 5XBEBͷՇ ͡Όͳ͍ 5XBEBͷՇ ͡Όͳ͍ 5XBEBͷՇ ͡Όͳ͍ 5XBEBͷՇ ͡Όͳ͍

Slide 27

Slide 27 text

खॱ wϞσϧΛֶश͢Δ wֶशͨ͠ϞσϧΛIEGͰอଘ wKTʹΑΉΑ͏ʹม׵ wKTଆͰΑΉ

Slide 28

Slide 28 text

ϞσϧΛֶश͢Δ ׂѪ ଟ෼͜ͷลΈͨΒΘ͔Δ͸ͣ IUUQTHJUIVCDPN"JQBLB[VNBUGKT@UVSUPSJBM

Slide 29

Slide 29 text

ͪͳΈʹਫ਼౓

Slide 30

Slide 30 text

KTͰΑΉΑ͏ʹม׵ $ pip install tensorflowjs $ tensorflowjs_converter --input_format keras model.hdf5 ./ $ ls group1-shard1of1 group3-shard1of1 model.json group2-shard1of1 group4-shard1of1 w UFOTPSqPXKTΛQJQͰΠϯετʔϧʢಾʣ w OVNQZ΍ΒɺLFSBT΍ΒόʔδϣϯͷґଘͰೖΕସ͑ΒΕΔͷͰɺ QZFOWͱ͔Ͱࢼ͢؀ڥΛม͑ͨ΄͏͕͍͍ w ࢀߟIUUQTKTUFOTPSqPXPSHUVUPSJBMTJNQPSULFSBTIUNM

Slide 31

Slide 31 text

KTଆͰΑΉ async function loadModel() { tf.loadModel('https://localhost:8000/mobilenet/model.json') .then(model => { const m = tf.model({inputs: model.inputs, outputs: model.outputs}); const img = webcam.capture(); const img2 = _reshape(img); // warmup const predicts = m.predict(img2); console.log(predicts.dataSync()); console.log(predicts.argMax().dataSync()[0]); mobilenet = m; return m; }); } w UFOTPSqPXͱ͍͏ΑΓɺLFSBTͬΆ͍ w XBSNVQڬ·ͳ͍ͱ࠷ॳͷQSFEJDU͕ॏ͘ʁࣦഊ͢Δ w 44-͕ඞཁʢࣗݾূ໌ॻΛ࡞ͬͯɺ1ZUIPOͰ'MBTLΛཱͯͨʣ

Slide 32

Slide 32 text

KTଆͰΑΉQSFEJDU async function predict() { if (isPredicting) { isPredicting = false; const predictedClass = tf.tidy(() => { var imgElement = document.getElementById('get-image'); var _img = preprocessing(imgElement); // javascript data -> Tensor var img = tf.fromPixels(_img, 1); const img2 = _reshape(img); const predictions = mobilenet.predict(img2); return predictions.argMax(); }); const classId = (await predictedClass.data()); return classId; } } w ΰϛΈ͍ͨͳม਺໊࢖͍ͬͯΔ͕ڐͯ͠΄͍͠ w 5FOTPS͔Β+4ͷσʔλʹ໭͍ͨ͠৔߹͸ɺEBUB ͱ͔EBUB4ZOD Λ࢖ ͑͹Α͍

Slide 33

Slide 33 text

Ͱ͖ͨ΋ͷ

Slide 34

Slide 34 text

σϞ IUUQTHJUIVCDPN"JQBLB[VNBUGKT@UVSUPSJBM

Slide 35

Slide 35 text

·ͱΊ • Tensorflowͱ͍͏ΑΓ͸KerasͬΆ͔ͬͨ • JSʹ૊ΈࠐΊΔ఺͸͢͹Β͍͠ • ࢖͍ॴ͸͜Ε͔Βߟ͑Δ • Twada͘Μʹײँ