【オンライン】ゆるふわマシンラーニング vol.5 - connpass https://enebular.connpass.com/event/188257/ 登壇資料
FOFCVMBS ʷ "VUP.-ʢԻೝࣝʣͰԿ͔ͬͯΈ͍ͨͱ͍͏رʹରͯ͠ಥ͖͚ͭΒΕͨݱ࣮ʲΦϯϥΠϯʳΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ8FE)JEF'VLBOPʢIJEFGʣʢԾʣ
View Slide
ΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ॳֶऀͳΓʹ Λཧղ͠ͳ͕ΒɺͰϚγʔϯϥʔχϯάΛΔϝϦοτͱσϝϦοτΛࣗͳΓʹߟ͑ͯΈͨਆϋϯζΦϯಈը Λ௨ͯ͠ ຊ
ࣗݾհΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ )JEF'VLBOPϢυ߹ಉձࣾ දࣾһ• σʔλੳͷडୗͱϓϩδΣΫτϚωδϝϯτͷडୗۀ• ݄͔ΒҰਓͰ΅ͪ΅ͪαʔϏε։ൃͯ͠·͢'BDFCPPL IJEFGLO5XJUUFS !IJEFGLO
πΠʔτΑΖ͓͘͠Ͷ͕͍͠·͢ʵʂΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ZVSVGVXBNMϋογϡλά
ΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ଟɺ͜ͷ͋ͱϨϕϧͷߴ͍-5͕ଓͩ͘Ζ͏ʜԶʜݟӫϓϥΠυΛࣺͯͯେͷࣗͷऑ͞ΛӅͣ͞ʹ-5͢ΔʢࣗͷϋʔυϧԼ͛ͯΔ͚ͩͰ͢ʣ
ΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ࠷ۙϓϩάϥϛϯάΕ͖ͯͨʢਂࠁͳΈʣ• Ͱ͖ͳ͘ͳ͖ͬͯͨϓϩάϥϛϯάʹର͢Δʜߴ·Δۤखҙࣝ• Զ͏1E.͡Όͳͯ͘1K.ͱͯ͠ੜ͖͍͚ͯΑ͘Ͷʁͱ͍͏৬छతͳݴ͍༁*P5-5σϏϡʔΛՌͨͨ͠ͱ͖ͷεϥΠυ
ΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ FOFCVMBS ͱ͖߹͏ͱݴͬͯɺආ͚Δʑ*P5-5σϏϡʔΛՌͨͨ͠ͱ͖ͷεϥΠυ
ΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ͰͬͺΓɺͪΐͬͱຊʹFOFCVMBS ʹ৮ΕͯΈ͍ͨͷΑʜͳΜ͍ͯ͏͔ʮҰճ৮ΕͯΈ͍ͨʯΈ͍ͨͳܦݧΛੵΜͰ͓͖͍ͨͳ͍ͬͯ͏ح৺͕͋Δ
ͦΜͳͳ͔ɺϝγΞʢٹੈओʣతΠϕϯτ͕ݱΕΔΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ FOFCVMBSͱ5FBDIBCMF.BDIJOFϋϯζΦϯ ϥϯν࣌ؒ։࠵r DPOOQBTTIUUQTFOFCVMBSDPOOQBTTDPNFWFOU
߽՚෮शಈը͖ʂ͜ΕຊʹࢹௌඞਢɻϚδɻΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ FOFCVMBSͱ5FBDIBCMF.BDIJOFϋϯζΦϯ ϥϯν࣌ؒ։࠵r DPOOQBTT ͷࢀߟࢿྉಈըIUUQTFOFCVMBSDPOOQBTTDPNFWFOU
࣮ࡍʹͬͯΈͨΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ͓ੈࣙൈ͖ɾൈ͖ͰਆϋϯζΦϯಈը͔ͩΒɺຊʹͬͯΈΔͷ͓͢͢ΊͰ͢
-*/&ʹ݁ՌΛฦ͢ͷͬͯҟৗͳୡײ͕͋ΔΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ಈ࡞ϋϯζΦϯͱಉ͡ͳͷͰɺσϞׂѪ͠·͢ʔ
ΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ͱ͍͏Θ͚Ͱࠓճͷ-5ʜ͜ͷಈըͷߨࢣͰ͋Δ͕͓·Δ͞ΜͱFOFCVMBSͷ͍ํಈըΛڞ༗ͯͩͬͨ͘͠͞ϑϧͷࢁ㟒͞ΜʹϦεϖΫτΛࠐΊͯʜ
FOFCVMBS ʷ .-ΛΔϝϦοτΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ϝδϟʔͳػցֶशػೳͷ࣮ͳΒɺ໌Β͔ʹ։ൃ͔ΒσϓϩΠ·Ͱ͕ૣ͍ ϑϩʔʢϓϩάϥϜͷ࣮ߦॱংʣΛ(6*Ͱૢ࡞ɾѲͰ͖Δ͜ͱ ϩʔίʔυͰ͋Δ͜ͱʢ΄΅ߦͷίʔυͰظ͢ΔػೳΛ࣮Ͱ͖Δʣ σϓϩΠָ͕ ͔ͨ͠ʹίϛϡχςΟͷهࣄ͕ࢀߟʹͳΔ
͜ΕɺΘ͔Γ͗ͨ͢͢ɻΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ਧ͖ग़͠ͷཧղ͕ؒҧͬͯͨΒڭ͑ͯ΄͍͠Ͱ͢ どこに情報を送るのー?→enebularが勝⼿にデプロイしてくれるURL+任意のURL(ex./linebot) LINE の Messaging API を使うために、認証する返答形式を書いてるメッセージ形式で、返信メッセージとして、判別結果をテキストで返すAPI使っていいよってなったら、解析したデータ(写真)を⼊⼒して、判別結果(Class name)を出⼒する⾃分で作ったAPIを使って返信内容を返すから、そのAPIを使うためにアクセストークンとかをパパッと⼊⼒するLINE developers ドキュメントに詳しく書いてる
ຊʹɺϩʔίʔυʢߦʣ͗ͨ͢ɻΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ Ԡ༻͍ͨ͠ͳΒɺવҰߦͣͭಡΜͰཧղ͠ͳ͖ΌͳΒΜɻTeachable Machine からの判別結果が、どの変数に⼊るのかは正直わからなかったから、コピペして脳死でやってしまった メッセージの返答形式は、LINE Developersドキュメント⾒れば、理解できた .FTTBHJOH"1*ϦϑΝϨϯε c-*/&%FWFMPQFSTIUUQTEFWFMPQFSTMJOFCJ[KBSFGFSFODFNFTTBHJOHBQJ
ͬͯΈͯؾ͍ͮͨ͜ͱΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ &OFCVMBSͷσϝϦοτͰͳͯ͘ɺϩʔίʔυʹ͓͚Δ੍݅ʹ͍ۙͱ͓͏ɻ ϩʔίʔυઃܭྗ͕͋ΔΤϯδχΞʹ༩͑ΒΕͨ͝๙ඒͰ͋Δ ͍͍ͨػցֶशϥΠϒϥϦʢ"1*ͱݴͬͨ΄͏͕ਖ਼͍͠ʁʣɺ/PEF3&%ͱݺΕΔ։ൃπʔϧʹґଘ͢Δ ೖྗ͞ΕΔσʔλͱग़ྗ͞ΕΔσʔλͷܗ͕ࣜΘ͔Βͳ͍ͱɺΘΓͱ؆୯ʹ٧Ήʢ"1*Λ͍׳ΕͯΔਓશ͘ͳ͍ͱࢥ͏͚Ͳɺ"1*ͬͨ͜ͱͳ͍ਓ࠷ॳʹϋϚΔ෦ͩͱࢥ͏ʣ
ઃܭྗͱΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ FOFCVMBS Ͱ࠶ݱ͍ͨ͠ ೖྗˠϓϩάϥϜˠग़ྗ ͷҰ࿈ͷྲྀΕʢϑϩʔʣΛͭ͘Δྗ-*/&5FBDIBCMF.BDIJOF-*/&ೖྗΠϯλʔϑΣΠε͍͍ͨػೳʢػցֶशϞσϧʣग़ྗΠϯλʔϑΣΠεը૾σʔλผ݁ՌͷจࣈྻFOFCVMBSͱ5FBDIBCMF.BDIJOFϋϯζΦϯ ϥϯν࣌ؒ։࠵r DPOOQBTT ͷࢀߟࢿྉಈըIUUQTFOFCVMBSDPOOQBTTDPNFWFOU
ϩʔίʔυͰׂ͚ͯ௨Εͳ͍ɺઃܭɻΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ͨΓલͬͪΌͨΓલ͚ͩͲɺվΊͯͦͷେ͞Λ࣮ײͨ͠-*/&5FBDIBCMF.BDIJOF-*/&ೖྗΠϯλʔϑΣΠε͍͍ͨػೳʢػցֶशϞσϧʣग़ྗΠϯλʔϑΣΠεը૾σʔλผ݁Ռͷจࣈྻ
5FBDIBCMF.BDIJOF̏ͭͷػցֶशϞσϧΛ࡞ΕΔΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ˞5FBDIBCMF.BDIJOFͱʁ͍ͬͯ͏ղઆׂѪ͠·͢ʂ5FBDIBCMF.BDIJOFIUUQTUFBDIBCMFNBDIJOFXJUIHPPHMFDPN
͏Ϟσϧ͚ͩม͑Εউ֬ͩͱա৴ΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ϞσϧʹඞཁͳೖྗσʔλมΘΔͷͰɺͦ͜มߋͭͭ͠ʜ͜Εߦ͚ΔͰ͠ΐ5FBDIBCMF.BDIJOFIUUQTUFBDIBCMFNBDIJOFXJUIHPPHMFDPN
/PEF3&%ʹެ։͞Ε͍ͯΔϥΠϒϥϦΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ 5FBDIBCMF.BDIJOFͰώοτͨ͠།ҰͷϥΠϒϥϦʢݱ࣌ʣA Node-RED node based in tensorflow.js thatenables to run custom image classification trainedmodels using Teachable Machine tool.
/PEF3&%ʹґଘ͢Δ͍ͬͯ͏ͷʜ͜͏͍͏͜ͱΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ 5FBDIBCMF.BDIJOF͕ఏڙ͍ͯ͠Δػೳͷ͏ͪɺ̍ͭͷϞσϧ͔͑͠ͳ͍ʢଟʣ5FBDIBCMF.BDIJOFΛ༻ͯ͠ΧελϜը૾ྨͷֶशࡁϞσϧΛ࣮ߦͰ͖ΔΑ͏ʹ͢ΔUFOTPSGMPXKTϕʔεͷ/PEF3&%ϊʔυͰ͢Αɻ
ա৴ʹΑΔશഊΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ͦΜͳ͜ͱͳ͍Αͬͯݴ͏߹ɺڭ͑ͯ΄͍͠Ͱ͢ʢ࣮ʣ͋Δ ଟͳ͍ଟͳ͍
ࢲͷഊྫ1PTF.PEFMͰ-*/&ͰϑΟοτωείʔνΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ 1PTF.PEFMඵͰ࡞Ε͚ͨͲɺFOFCVMBS Λ࣮ͬͯ͢Δ͜ͱͰ͖ͳ͔ͬͨࠊ͕Լ͕͍ͬͯΔྑ͍εΫϫοτϙʔζࠊ͕Լ͕͍ͬͯͳ͍ѱ͍εΫϫοτϙʔζԶͷ3JOH'JU͍ͬͯ͏ͷΛ࡞Γ͔ͨͬͨ
5FBDIBCMF.BDIJOFͰ͓खܰʹ࡞ΕΔͬͯ͜ͱʜΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ʮͻ͟ͷ֯ʯͰผ͔ͨͬͨ͠ͷ͕ͩɺʮͻ͡ʯͰ&YDFMMFOUͨ݅͠簡単に作れてしまうがゆえに、間違った予測結果を簡単に出⼒してしまう
ϩʔίʔυͱ͍͏͍Ռ࣮ʹ੍͕͋ΔΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ ࣮ߦ͍ͨ͠ػೳ͕/PEF3&%Ͱఏڙ͞Ε͍ͯΔͷ͔ݕূ͢Δ͖ͩͬͨͨΊ͠ʹʮHPPHMFʯͰαʔνͯ͠ΈͨΒ͋Β·͊͜Μͳʹ৭ʑ͋ΔͰ͋Γ·ͤΜ͔ʙ
γϯϓϧ͗ͯ͢ɺͲ͏ܨ͛Εྑ͍ͷ͔໎ࢠʹͳͬͨΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ FOFCVMBS ͷσϝϦοτͰͳͯ͘ɺࣗͷٕज़ྗෆPS[ྫ (PPHMF༁ͷ"1*Λ͑ΔϥΠϒϥϦΛ͓͏ͱͯ͠Έͨ• -*/&ͷυΩϡϝϯτΛݟͳ͕ΒɺςΩετϝοηʔδͷऔಘํ๏Λཧղ͠ͳ͖ΌͳΒΜ• ͜ͷ"1*ʢϥΠϒϥϦʁͪΐͬͱΘ͔Βͳ͘ͳ͖ͬͯͨΑʂʣ͕ग़ྗ͢ΔܗࣜΛཧղ͠ͳ͖ΌͳΒΜʢී௨ͷจࣈྻͩͱࢥ͏Μ͚ͩͲ͞ʣ
FOFCVMBS ʷ .-ॳֶऀͳΓͷ·ͱΊΏΔ;ΘϚγϯϥʔχϯά WPMʲFOFCVMBSฤʳ໌͔Β͑Δ͓खܰ.-αʔϏεΛֶ΅͏ʂ • ແྉͰֶΔಈըاըΛͬͯ͘ΕΔਓͨͪਓؒ͡Όͳ͍ɻਆɻ(0%ɻϝγΞʢٹੈओʣɻຊʹ͋Γ͕ͱ͏͍͟͝·ͨ͠N @@N• FOFCVMBS Λͬͯɺૉૣ͘ɾ؆୯ʹϏδϡΞϧϓϩάϥϛϯά͍ͨ͠ͱࢥͬͨΒɺ࣮͍ͨ͠ػೳ͕ɺ/PEF3&%ͷϥΠϒϥϦʹؚ·Ε͍ͯΔ͔Ͳ͏͔ʁΛ୳͢͜ͱ͕େࣄ͔ʢͦͷϥΠϒϥϦΛ࡞ΕΔΤϯδχΞผ͚ͩͲʣ• FOFCVMBS ʷ .-ʹ͓͍ͯϝδϟʔͳػցֶशϞσϧΛΈࠐΜͩϓϩτλΠϓΛ࡞ͬͯΈΔʹ࣮֬ʹ࠷ߴͰ(PPEɻ• *P5ͩͱͬͱϥΠϒϥϦ͕๛ͰΑΓૣָ͘͘͠ΞϓϦέʔγϣϯ͕࡞ΕͪΌ͏ͷ͔ͳʁͱ͔ࢥͬͨ