Slide 1

Slide 1 text

C-LIS CO., LTD.

Slide 2

Slide 2 text

ਓ޻஌ೳηϛφʔɹʙΫϥ΢υɾϞόΠϧɾΤοδʹ͓͚Δػցֶशʙ ɹιϑτϐΞδϟύϯ ػցֶशϞσϧΛར༻ͨ͠
 ϞόΠϧΞϓϦ։ൃͷࣄྫ

Slide 3

Slide 3 text

༗ࢁܓೋʢ,FJKJ"3*:"."ʣ $-*4$0 -5% ઐ໳ɿ"OESPJEΞϓϦ։ൃ ػցֶशྺɿ໿̐೥ ஶॻɿ
 ʰ"OESPJE4UVEJPͰ͸͡ΊΔ؆୯"OESPJEΞϓϦ։ൃʱʢٕज़ධ࿦ࣾʣ
 ʰ5FOTPS'MPXΛ͸͡Ί·ͨ͠ʱʢΠϯϓϨε3%ʣ
 ڞஶʰ5FOTPS'MPX׆༻ΨΠυʱʢٕज़ධ࿦ࣾʣ Photo : Koji MORIGUCHI (MORIGCHOWDER)

Slide 4

Slide 4 text

5FOTPS'MPXൃදʢ೥݄ʣ

Slide 5

Slide 5 text

ػցֶशΛར༻ͨ͋͠Ε͜Ε IUUQLJWBOUJVNIBUFCMPKQFOUSZ TensorFlowͰΞχϝΏΔΏΓͷ੍࡞ձࣾΛࣝผ͢Δ IUUQCPIFNJBIBUFOBCMPHDPNFOUSZ σΟʔϓϥʔχϯάͰ͓ͦদ͞Μͷ࿡ͭࢠ͸ݟ෼͚ΒΕΔͷ͔ʁ IUUQCPIFNJBIBUFOBCMPHDPNFOUSZ IUUQDISJTUJOBIBUFOBCMPHDPNFOUSZ Deep LearningͰϥϒϥΠϒʂΩϟϥΛࣝผ͢Δ

Slide 6

Slide 6 text

؟ڸ່ͬͷΠϥετΛ
 Πϯλʔωοτ͔ΒࣗಈͰऩू͍ͨ͠ʂ

Slide 7

Slide 7 text

؟ڸ່ͬ൑ఆ

Slide 8

Slide 8 text

ධՁ༻αʔόʔ ܇࿅ɾֶश༻αʔόʔ܈ σʔληοτసૹ ʢTFRecordʣ ֶशࡁϞσϧऔಘ ը૾औಘ ը૾औಘ ϥϕϧ ෇͚ σʔληοτ؅ཧ αʔόʔ ը૾ऩू ϥϕϧ ෇͚ σʔληοτ
 ؅ཧΞϓϦ playground.megane.ai ֶशࡁΈϞσϧ഑ஔ ը૾ૹ৴ ൑ఆ݁Ռ .FHBOF$P

Slide 9

Slide 9 text

ͳͥϞόΠϧΞϓϦʹ૊ΈࠐΉͷ͔ ϨΠςϯγ͕69ʹ༩͑ΔӨڹΛ࡟ݮ͢ΔͨΊ αʔόʔʹૹ৴͢Δʢ৺ཧతɾ๏తʣϋʔυϧ͕ߴ͍σʔλΛऔΓѻ͏ͨΊ

Slide 10

Slide 10 text

ϞόΠϧΞϓϦ΁ͷػցֶशϞσϧͷ૊ΈࠐΈ 5FOTPS'MPXGPS.PCJMF 5FOTPS'MPX-JUF .-,JUʢ'JSFCBTF.-,JUʣ

Slide 11

Slide 11 text

5FOTPS'MPX-JUF σόΠε্Ͱͷਪ࿦ΛՄೳʹ͢ΔϑϨʔϜϫʔΫɻ 5FOTPS'MPXͷαϒηοτϥΠϯλΠϜͰɺར༻Ͱ ͖ͳ͍ΦϖϨʔγϣϯ͕͋Δɻ "OESPJEJ04ΤοδσόΠεʹରԠɻ IUUQTXXXUFOTPSqPXPSHMJUF

Slide 12

Slide 12 text

.-,JUCFUBʢ'JSFCBTF.-,JUʣ (PPHMF͕ఏڙ͢ΔαʔϏεͰɺ(PPHMF͕࡞੒ͨ͠ػցֶश ϞσϧΛ"OESPJEJ04ΞϓϦʹ૊ΈࠐΜͩΓɺΦϦδφϧͷ ΞϓϦΛ഑৴Ͱ͖Δɻ w7JTJPO w-BOHVBHF w$VTUPN IUUQTEFWFMPQFSTHPPHMFDPNNMLJU

Slide 13

Slide 13 text

.-,JU7JTJPO #BSDPEF4DBO 'BDF%FUFDUJPO *NBHF-BCFMJOH -BOENBSL%FUFDUJPO 0CKFDU%FUFDUJPO5SBDLJOH 5FYU3FDPHOJUJPO IUUQTEFWFMPQFSTHPPHMFDPNNMLJU

Slide 14

Slide 14 text

.-,JU-BOHVBHF -BOHVBHF*EFOUJpDBUJPO 0O%FWJDF5SBOTMBUJPO 4NBSU3FQMZ IUUQTEFWFMPQFSTHPPHMFDPNNMLJU

Slide 15

Slide 15 text

.-,JU$VTUPN ඞཁʹԠͨ͡Ϟσϧͷμ΢ϯϩʔυ ϞσϧͷࣗಈΞοϓσʔτ Ϟσϧͷ"#ςετ Ϟσϧͷಈతʢ%ZOBNJDʣͳબ୒ IUUQTEFWFMPQFSTHPPHMFDPNNMLJU

Slide 16

Slide 16 text

ػցֶशϫʔΫϑϩʔ σʔληοτͷ੔උ ϞσϧͷֶशͱධՁ ϞσϧͷσϓϩΠ ਪ࿦

Slide 17

Slide 17 text

'PPE(BMMFSZ ୺຤ʹอଘ͞Ε͍ͯΔࣸਅͷ৯΂෺͚ͩΛදࣔʢ৯΂෺ Ҏ֎Λಁաͯ͠දࣔʣͯ͠Ұཡ͢ΔΞϓϦɻ IUUQTHJUIVCDPNLFJKJGPPE@HBMMFSZ@XJUI@UFOTPSqPX

Slide 18

Slide 18 text

def _export_graph(sess, input_tensors, output_tensors, output_dir): output_path = os.path.join(output_dir, 'model.tflite') converter = TFLiteConverter.from_session(sess, input_tensors, output_tensors) # converter.post_training_quantize = True tflite_model = converter.convert() open(output_path, "wb").write(tflite_model) Ϟσϧͷग़ྗʢ5FOTPS'MPX-JUFʣ

Slide 19

Slide 19 text

val tfInference = Interpreter( model, options) val resizedImageBuffer = ByteBuffer .allocateDirect(IMAGE_BYTES_LENGTH) .order(ByteOrder.nativeOrder()) val inputBuffer = ByteBuffer .allocateDirect(IMAGE_BYTES_LENGTH * 4) .order(ByteOrder.nativeOrder()) val resultBuffer = ByteBuffer .allocateDirect(4) .order(ByteOrder.nativeOrder()) Ϟσϧͷ࣮ߦ JPLFJKJGPPEHBMMFSZ*NBHF3FDPHOJ[FSLU

Slide 20

Slide 20 text

val scaledBitmap = Bitmap.createScaledBitmap(bitmap, IMAGE_WIDTH, IMAGE_HEIGHT, false) resizedImageBuffer.rewind() scaledBitmap.copyPixelsToBuffer(resizedImageBuffer) inputBuffer.rewind() for (index in (0..IMAGE_BYTES_LENGTH - 1)) { inputBuffer.putFloat(resizedImageBuffer[index].toInt().and(0xFF).toFloat()) } inputBuffer.rewind() resultBuffer.rewind() tfInference.run(inputBuffer, resultBuffer) resultBuffer.rewind() val confidence = resultBuffer.getFloat() Ϟσϧͷ࣮ߦ JPLFJKJGPPEHBMMFSZ*NBHF3FDPHOJ[FSLU

Slide 21

Slide 21 text

Ϟσϧͷ࣮ߦ Input Output Interpreter tfInference inputBuffer resultBuffer લॲཧ σίʔυ

Slide 22

Slide 22 text

ϞσϧΛ૊ΈࠐΉ্Ͱͷ՝୊ Ϟσϧͷେ͖͞ ࣮ߦ଎౓ ফඅϝϞϦ Ϟσϧͷอޢ ϢʔβʔϓϥΠόγʔ

Slide 23

Slide 23 text

.#Λ௒͑ΔϞσϧ IUUQTHJUIVCDPNLFJKJGPPE@HBMMFSZ@XJUI@UFOTPSqPXSFMFBTFTUBH

Slide 24

Slide 24 text

ϞσϧͷΞʔΩςΫνϟΛมߋ

Slide 25

Slide 25 text

ϞσϧʢύϥϝʔλʔʣͷྔࢠԽ CJUුಈখ਺఺਺ΛCJU੔਺ʹม׵ʢྔࢠԽʣ

Slide 26

Slide 26 text

ྔࢠԽͷબ୒ࢶ 1PTUUSBJOJOH2VBOUJ[BUJPO 2VBOUJ[BUJPOBXBSF5SBJOJOH

Slide 27

Slide 27 text

1PTUUSBJOJOHRVBOUJ[BUJPO def _export_graph(sess, input_tensors, output_tensors, output_dir): output_path = os.path.join(output_dir, 'model.tflite') converter = TFLiteConverter.from_session(sess, input_tensors, output_tensors) converter.post_training_quantize = True tflite_model = converter.convert() open(output_path, "wb").write(tflite_model)

Slide 28

Slide 28 text

if model.QUANTIZATION: g = tf.get_default_graph() tf.contrib.quantize.create_training_graph(input_graph=g, quant_delay=2000000) IUUQTHJUIVCDPNUFOTPSqPXUFOTPSqPXUSFFSUFOTPSqPXDPOUSJCRVBOUJ[F 2VBOUJ[BUJPOBXBSFUSBJOJOH

Slide 29

Slide 29 text

ϞσϧΛྔࢠԽ

Slide 30

Slide 30 text

"OESPJE/FVSBM/FUXPSLT"1* ϞόΠϧ୺຤্ͰػցֶशͷܭࢉॲཧΛ࣮ߦ͢ΔͨΊʹઃܭ͞Εͨɻ IUUQTEFWFMPQFSBOESPJEDPNOELHVJEFTOFVSBMOFUXPSLT "OESPJEʢ"1*ϨϕϧʣҎ߱ͰରԠɻ IUUQTCMPHLFJKJJPUFOTPSqPXBEWFOU@DBMFOEBSIUNM ͍·//"1*ʢ5FOTPS'MPX-JUFʣ͸࢖͑Δͷ͔

Slide 31

Slide 31 text

ਪ࿦଎౓ͷൺֱ ػछ໊ NN API͋Γ NN APIͳ͠ Essential PH-1 556,323ns 185,372,624ns Pixel 2 450,807ns 187,395,464ns Pixel 3 477,489ns 129,994,563ns IUUQTHJUIVCDPNLFJKJGPPE@HBMMFSZ@XJUI@UFOTPSqPXSFMFBTFTUBHUqJUF@OOBQJ

Slide 32

Slide 32 text

͞·͟·ͳ੍໿ εΧϥʔͰͷԋࢉ͕Ͱ͖ͳ͍ɻʷOPSNBMJ[FE@JNBHFJNBHF@QI εϥΠε͕࢖͑ͳ͍ɻʷJNBHFJNBHF< > )ZQFSCPMJD5BOHFOU͕࢖͑ͳ͍ɻʷPVUQVUUGUBOI PVU@P⒎TFU IUUQTXXXUFOTPSqPXPSHMJUFHVJEFPQT@DPNQBUJCJMJUZVOTVQQPSUFE@PQFSBUJPOT

Slide 33

Slide 33 text

ਫ਼౓͕ۃ୺ʹ௿Լ

Slide 34

Slide 34 text

max: 14.586626 min: -3.8083103 ϞσϧΛߏ੒͍ͯ͠Δύϥϝʔλʔͷ࠷େɾ࠷খ஋Λ֬ೝ

Slide 35

Slide 35 text

Ϟσϧઃܭͷ࣌఺Ͱʮଌఆͱௐ੔ʯ σʔληοτͷ੔උ ϞσϧͷֶशͱධՁ ϞσϧͷσϓϩΠ ਪ࿦ Ϟσϧͷઃܭ

Slide 36

Slide 36 text

ଌఆʹج͍ͮͨϞσϧͷௐ੔ Ϟσϧͷઃܭ Ϟσϧͷௐ੔ TensorFlow Lite΁ม׵ ʢྔࢠԽʣ αΠζɾ࣮ߦ଎౓
 ଌఆ

Slide 37

Slide 37 text

ΞϓϦଆͰͷ଎౓վળ /BWJFSגࣜձࣾ φϏΤʣ ౦ژ౎จژ۠ຊڷຊڷ࢛ஸ໨Ϗϧ' σΟʔϓϥʔχϯάΛ༻͍ͨը૾ม׵ٕज़ͷ։ൃ͓Αͼιϑτ΢ΣΞͷఏڙ IUUQTXXXOBWJFSDP Ϟσϧ͸มߋͤͣɺ࣮ߦ଎౓Λ̏ʙ̐ഒʹߴ଎Խ

Slide 38

Slide 38 text

Ϟσϧͷอޢ ʰΞϓϦʹ૊ΈࠐΉʹ౰ͨͬͯɺϞσϧʢΞʔΩςΫνϟɾ ύϥϝʔλʔʣ͕֎෦ʹྲྀग़͠ͳ͍Α͏ʹอޢ͍ͨ͠ʱ

Slide 39

Slide 39 text

Ϟσϧͷܗࣜ 5FOTPS'MPX-JUFͷϞσϧ͸'MBU#V⒎FSTɻ 'MBU#V⒎FST͸ɺσʔλͷల։΍ύʔεΛͤͣετϨʔδ ্ͷσʔλʹϝϞϦΞυϨεΛϚοϓͯ͠ΞΫηε͢Δ ͜ͱͰɺϝϞϦͷϑοτϓϦϯτΛ࡟ݮ͢Δ
 ʢʹ҉߸Խͨ͠'MBU#V⒎FSTͷϑΝΠϧ͸ɺಁաతʹಡΈ ࠐΉ͜ͱ͕Ͱ͖ͳ͍ʣɻ

Slide 40

Slide 40 text

෮߸Խͯ͠Ұ౓ϩʔΧϧϑΝΠϧʹอଘ assets app local ϑΝΠϧಡΈࠐΈ Interpreter ෮߸Խॲཧ

Slide 41

Slide 41 text

ϢʔβʔϓϥΠόγʔ ػցֶशͷϞσϧΛܧଓతʹվળ͢ΔͨΊʹ͸ɺσʔλ͕ඞཁɻ Ϣʔβʔͷ͍ΔΞϓϦͷ৔߹ɺϢʔβʔ͔ΒσʔλΛఏڙʢૹ৴ɾอଘʣ͢Δ ߹ҙΛಘΔඞཁ͕͋Δɻ ϓϥΠόγʔσʔλͷऔΓѻ͏ମ੍Λ੔͑Δඞཁ͕͋Δɻσʔλͷ಺༰ʹΑͬ ͯ͸๏཯ʹΑΔن੍΋͋Δɻ

Slide 42

Slide 42 text

'FEFSBUFE-FBSOJOH ͢΂ͯͷσʔληοτΛαʔόʔ্Ͱॲཧ͢ΔʮूதτϨʔχϯάʯͱ͸ҟͳ ΓɺҰͭҰͭͷ୺຤্ͰϞσϧͷֶशͷલஈॲཧΛߦ্ͬͨͰɺαʔόʔʹૹ ৴ͯ͠ฏۉԽ͢Δɻ IUUQTEFWFMPQFSTKQHPPHMFCMPHDPNGFEFSBUFEMFBSOJOHDPMMBCPSBUJWFIUNM

Slide 43

Slide 43 text

C-LIS CO., LTD. ຊࢿྉ͸ɺ༗ݶձࣾγʔϦεͷஶ࡞෺Ͱ͢ɻຊࢿྉͷશ෦ɺ·ͨ͸Ұ෦ʹ͍ͭͯɺஶ࡞ऀ͔ΒจॻʹΑΔڐ୚Λಘͣʹෳ੡͢Δ͜ͱ͸ې͡ΒΕ͍ͯ·͢ɻ 5IF"OESPJE4UVEJPJDPOJTSFQSPEVDFEPSNPEJpFEGSPNXPSLDSFBUFEBOETIBSFECZ(PPHMFBOEVTFEBDDPSEJOHUPUFSNTEFTDSJCFEJOUIF$SFBUJWF$PNNPOT"UUSJCVUJPO-JDFOTF ֤੡඼໊ɾϒϥϯυ໊ɺձ໊ࣾͳͲ͸ɺҰൠʹ֤ࣾͷ঎ඪ·ͨ͸ొ࿥঎ඪͰ͢ɻຊࢿྉதͰ͸ɺ˜ɺšɺäΛׂѪ͍ͯ͠·͢ɻ 5IF"OESPJESPCPUJTSFQSPEVDFEPSNPEJpFEGSPNXPSLDSFBUFEBOETIBSFECZ(PPHMFBOEVTFEBDDPSEJOHUPUFSNTEFTDSJCFEJOUIF$SFBUJWF$PNNPOT"UUSJCVUJPO-JDFOTF