フロントエンドカンファレンス沖縄で発表したスライドです
ϑϩϯτΤϯυΧϯϑΝϨϯεԭೄ2022ϑϩϯτΤϯυ͚ͩͰػցֶश@aipacommander 2022/11/19
View Slide
ࣗݾհ• @aipacommanderʢΞΠύʔୂʣ• ԭೄݝͰ࠺ͱࢠڙ2ਓͱݘ2ඖͱೣ1ඖͰੜ׆• CBCloudגࣜձࣾͰۈ͢ΔϑϩϯτΤϯυΤϯδχΞʢݞॻʣ• ೖࣾͯ͠ಡΈॻ͖ͨ͠ݴޠDartʢFlutterʣɺScalaɺRubyɺGASɺPython…• ϑϩϯτΤϯυΤϯδχΞɾɾɾɾʁ• 3ϲ݄લɺͪΎΒσʔλʹ͍·ͨ͠
͓ɾɾɾʁ
લ৬ vs ݱ৬ʢ͜ͷεϥΠυൃදޙʹരൃͯ͠ফ͑·͢ʣ
ຊ͢͜ͱ
https://www.tensorflow.org/js
TensorFlow.jsͱ• ϒϥβʢJavaScriptʣͰσΟʔϓϥʔχϯάͰ͖Δ͍ͭ͢͝• TensorflowʢPythonʣΛͬͯͨΒॻ͚ͦ͏ͳงғؾͷ͍ͭ͢͝• Ұੲલdeeplearn.jsͱݺΕͯͨॏ͍ͭʢͷओ؍ʣͩͬͨ• 2022ݱࡏ࣌ͱൺͨΒരʹͳ͍ͬͯΔ͍ͭ͢͝
Ͱ͖Δ͜ͱʢGoogleͷϒϩάΑΓʣ• ͜Ε·Ͱग़͖ͯͨϞσϧ͍͍ͩͩΠέΔʢงғؾʣ• BodyPixʢGoogle meetʹ͋Δഎܠ΅͔͠ʣ• BERTΛͬͨChrome Pluginʢϖʔδݕࡧػೳʹ࣭Λॻ͘ͱɺ֘ʢճͱ༧ଌ͞Εͨʣจষ͕ϋΠϥΠτ͞ΕΔʣ
͠Ύ͍͝ʢ͍͢͝ʣ
ʢվΊͯʣຊ͢͜ͱ
ຊ͢͜ͱ•؆୯ͳνϡʔτϦΞϧ• มσϞ → ແཧͰͨ࣍͠ճ• ήʔϜͱউෛ͢ΔσϞ → ࡢͤ͞Δ༧ఆ͕ͩͬͨಥવੜͷҿΈձ͕(ry ※Nuxt3ͷઆ໌͠ͳ͍Ͱ͕͢ɺσϞNuxt3্Ͱಈ͍͍ͯ·͢
؆୯ͳνϡʔτϦΞϧ
༻ҙ͢Δͷhttps://avinton.com/blog/2018/03/single-shot-multibox-detector-explained1/
TensorFlow Hubhttps://tfhub.dev/tensorflow/ssd_mobilenet_v2/2
εςοϓ1. TensorFlow.jsͷΠϯετʔϧ2. WebΧϝϥ͔ΒಈըͷऔಘˠCanvasදࣔ3. ϞσϧͷηοτΞοϓ4. Ϟσϧʹೖྗ͢Δ5. Ϟσϧͷग़ྗΛՃ͢Δ6. ݁Ռදࣔ
ᶃScriptλάɾnpmɾyarnͰΠϯετʔϧhttps://www.tensorflow.org/js/tutorials/setup?hl=ja
ᶄಈըʢը૾ʣΛೖྗ͢Δ४උ̍
ᶄಈըʢը૾ʣΛೖྗ͢Δ४උ̎
ᶅϞσϧͷηοτΞοϓ
ᶆϞσϧʹΧϝϥ͔Βͷσʔλʢը૾ʣΛೖྗ͢Δ̍
ᶆϞσϧʹΧϝϥ͔Βͷσʔλʢը૾ʣΛೖྗ͢Δ̎
ᶆϞσϧʹΧϝϥ͔Βͷσʔλʢը૾ʣΛೖྗ͢Δ̏
ᶆϞσϧʹΧϝϥ͔Βͷσʔλʢը૾ʣΛೖྗ͢Δ̐1൪ϥϕϧ(ཁૉ൪߸)ͱ༧ଌ֬ʢ1ʹ͍ۙ΄Ͳࣗ৴͕͋Δʣ̎൪bounding boxͷҐஔ[y, x, yͷେ͖͞, xͷେ͖͞]
ิhttps://avinton.com/blog/2018/03/single-shot-multibox-detector-explained1/̎൪bounding boxͷҐஔ[y, x, ॎͷαΠζ, ԣͷαΠζ]:[0, 0] 9[y, x] ԣͷαΠζॎͷαΠζ[ॎͷαΠζ - y,ԣͷαΠζ - x]
ᶇϞσϧͷग़ྗΛՃ͢Δˠᶈ݁Ռදࣔ
σϞ
ͳͥͳͷ͔ʘiϑΟʔϧυ!!ʗ• ݕग़݁Ռશ෦දࣔ͢Δͱ͜͏ͳΔ• ϑΟϧλͷςΫχοΫʢSSDͷجຊͷʣ• ༧ଌ֬ʢ৴པʣͰߴ͍ॱʹιʔτͯ͠ϑΟϧλ• Intersection over UnionʢIoUʣͰϑΟϧλ• 2ͭͷbounding box͔ΒείΞΛܭࢉ͢Δ• bounding box͕શʹॏͳ͍ͬͯͨΒ1ʹͳΔ• ͋ΘͤͯɺNonmaximum suppressionʢNMSʣͰ ॏͳ͍ͬͯͯͭɺIoU͕খ͍͞bounding boxΛআ
ͳΜͱ࣮͞Ε͍ͯΔ
࠶ͼσϞ
·ͱΊ
·ͱΊ• ϒϥβʢJavaScriptʣͰσΟʔϓϥʔχϯάͰ͖Δ• ࠓհͰ͖ͳ͔ͬͨͰ͕͢ɺ͍ΖΜͳ͜ͱ͕Ͱ͖Δ• ϒϥβͰֶशͰ͖ΔɺసҠֶश͍͚Δ• όοΫΤϯυʹWASM͕༻ҙ͞Ε͍ͯΔͨΊɺΑΓϙʔλϒϧʹʢNode.js͕ಈ͘αʔόͰಈ࡞͢Δʣ
͓·͚σϞʢ͕࣌ؒ͋Εʣ
ENDʢདྷո्ͷʂʂʣ