Rustで作る機械学習を用いた画像クロッピングシステム

94d84ab8892edd568011b406f9a0ef08?s=47 johshisha
December 19, 2019
1.8k

 Rustで作る機械学習を用いた画像クロッピングシステム

ML@Loft #9. Deep Learning フレームワークと推論
https://ml-loft.connpass.com/event/157785/

94d84ab8892edd568011b406f9a0ef08?s=128

johshisha

December 19, 2019
Tweet

Transcript

  1. 3VTUͰ࡞Δ ػցֶशΛ༻͍ͨ ը૾ΫϩοϐϯάγεςϜ 1 .-!-PGU %FFQ-FBSOJOHϑϨʔϜϫʔΫͱਪ࿦ ࡾᑍஐ࢙ 

  2. ࡾᑍஐ࢙ @johshisha wΫοΫύουגࣜձࣾ w೥৽ଔೖࣾ wݚڀ։ൃ෦ w΍ͬͯΔ͜ͱ wϨγϐͷը૾ݕࡧ w޿ࠂ഑৴࠷దԽ wը૾ͷݟӫ͑ਪఆ 2

  3. 3 ͱࢥ͍·͔͢ʁ ඒຯͦ͠͏ ࡞Γ͍ͨ Ͳ͕ͬͪ ྆ํࡾᑍ͕ࡱӨ ᶃ ᶄ

  4. 4 ͱࢥ͍·͔͢ʁ ඒຯͦ͠͏ ࡞Γ͍ͨ Ͳ͕ͬͪ ྆ํࡾᑍ͕ࡱӨ ᶃ ᶄ Ϋϩοϐϯά͸ ඒຯͦ͠͏ɾ࡞Γ͍ͨʹ

    ༩͑ΔӨڹ͕େ͖͍
  5. ࠓ೔ͷ࿩ 5 ը૾ͷΫϩοϐϯάΛ ػցֶशΛ࢖͍͍ͬͯײ͡ʹ͢Δ γεςϜΛ࡞ͬͨ࿩

  6. ࠓ೔ͷ࿩ 6 ը૾ͷΫϩοϐϯάΛ ػցֶशΛ࢖͍͍ͬͯײ͡ʹ͢Δ γεςϜΛ࡞ͬͨ࿩ ͍͍ײ͡ʹ͢Δͷ͸ΊͪΌͪ͘Όେม

  7. 7 εϧʔϓοτ SQT ڐ༰ϨΠςϯγʔ NTSFR ը૾Λ഑৴͢Δͷ͸͍ͨ΁Μ αΠτ಺ʹͨ͘͞Μͷը૾͕͋Δ ͨ͘͞ΜͷϢʔβ͕ར༻͍ͯ͠Δ ௿ϨΠςϯγʔɾߴεϧʔϓοτ଱ੑ͕ඞਢ ػցֶशΛ༻͍ͨγεςϜͰ

    ௿ϨΠςϯγʔɾߴεϧʔϓοτΛ࣮ݱ͢ΔͨΊͷ γεςϜઃܭઓུʹ͍ͭͯ࿩͠·͢
  8. എܠ·ͱΊ • ը૾഑৴γεςϜ͸͢Ͱʹ͋Δ͕վળ఺͋Γ • Ϩγϐը૾ͷ಺༰ʹؔΘΒͣಉ͡Α͏ʹΫϩοϐϯά͍ͯ͠Δ • ը૾͸αʔϏεར༻ऀ΁༩͑Δҹ৅͕େ͖͍ͨΊԿͱ͔͍ͨ͠ • ػցֶशΛ࢖ͬͯ࠷దͳը૾ΫϩοϐϯάΛ࣮ݱ͍ͨ͠ •

    ྉཧͷ৔ॴΛݕग़ͯ͠ΫϩοϐϯάΛߦ͑͹ɼΑΓΑ͍ը૾ΛఏڙͰ͖Δ • ՝୊: ը૾഑৴γεςϜ͸௿ϨΠςϯγʔɾߴεϧʔϓοτ଱ੑ͕ඞਢ • ࠷େ 600 req / secɼ஗ͯ͘΋(95ύʔηϯλΠϧͰ) 200 ms / req ͘Β͍ 8 ˞QSPEVDUJPOʹಋೖؒʹ߹͍·ͤΜͰͨ͠ ಋೖͯ͠ύϑΥʔϚϯεͷ࿩΋͔ͨͬͨ͠ͷͰ͕ؒ͢ʹ߹͍·ͤΜͰͨ͠ γεςϜઃܭઓུΛॏ఺తʹ࿩͠·͢
  9. γεςϜઃܭ͢Δલʹௐ΂ͨ਺ࣈ 9 ը૾ೖྗˠΫϩοϐϯάྖҬग़ྗɿNT QZUIPO खݩͷ.#1Ͱ  4͔Βը૾Λऔͬͯ͘ΔɿNTʢ&$্Ͱʣ ΫϩοϐϯάྖҬͷਪ࿦ɿNT ݁ߏॏ͍ͷͰී௨ʹॲཧͯͨ͠Βؒʹ߹Θͳ͍

  10. 10 όονͰܭࢉ͓͚ͯ͠͹͍͍ͷͰ͸ʁ

  11. ৽ػೳͷϓϩτλΠϐϯά 11 ͪΐͬͱࢼ͍ͨ͠ͱ͖ʹରԠͰ͖ͳ͍ ৽6*ࢼͨ͢ͼʹόον૸ΒͤΔɽɽʁ

  12. 12 ࢼߦࡨޡʹ͸ରԠͰ͖ͳ͍͚Ͳ ຊ൪Ͱ࢖͏αΠζ͸ࣄલʹ஌ΕΔͷͰ͸ʁ

  13. ࣄલܭࢉ͢ΔαΠζͷ؅ཧ 13 YͷϨγϐը૾Λ ࢖͍͍ͨͰ͢ Yͷͭ͘ΕΆը૾Λ ࢖͍͍ͨͰ͢ Yͷࣄલܭࢉͬͯ ΋͏ऴΘͬͯΔʁ Yͷࣄલܭࢉґཔ ๨Εͯͨʂʂʂ

    ๨Εͳ͍Α͏ʹ αʔϏεͷ࢖͍ͬͯΔαΠζΈͯ ࣗಈͰґཔ౤͛Δ࢓૊Έ࡞Γ·ͨ͠ Ϧιʔε͝ͱʹҟͳΔαΠζ ܭࢉऴ͍ྃͯ͠Δ͔ͷ֬ೝ ෳࡶʹͳΔपลαʔϏε
  14. ࣄલܭࢉ͢ΔαΠζͷ؅ཧ 14 YͷϨγϐը૾Λ ࢖͍͍ͨͰ͢ Yͷͭ͘ΕΆը૾Λ ࢖͍͍ͨͰ͢ Yͷࣄલܭࢉͬͯ ΋͏ऴΘͬͯΔʁ Yͷࣄલܭࢉґཔ ๨Εͯͨʂʂʂ

    ๨Εͳ͍Α͏ʹ αʔϏεͷ࢖͍ͬͯΔαΠζΈͯ ࣗಈͰґཔ౤͛Δ࢓૊Έ࡞Γ·ͨ͠ Ϧιʔε͝ͱʹҟͳΔαΠζ ܭࢉऴ͍ྃͯ͠Δ͔ͷ֬ೝ ෳࡶʹͳΔपลαʔϏε αΠζͷ؅ཧ͸ߟ͑Δ͜ͱ͕ଟ͍ ΍Γͨ͘ͳ͍
  15. • ը૾഑৴γεςϜ͸͢Ͱʹ͋Δ͕վળ఺͋Γ • Ϩγϐը૾ͷ಺༰ʹؔΘΒͣಉ͡Α͏ʹΫϩοϐϯά͍ͯ͠Δ • ը૾͸αʔϏεར༻ऀ΁༩͑Δҹ৅͕େ͖͍ͨΊԿͱ͔͍ͨ͠ • ػցֶशΛ࢖ͬͯ࠷దͳը૾ΫϩοϐϯάΛ࣮ݱ͍ͨ͠ • ྉཧͷ৔ॴΛݕग़ͯ͠ΫϩοϐϯάΛߦ͑͹ɼΑΓΑ͍ը૾ΛఏڙͰ͖Δ

    • ՝୊: ը૾഑৴γεςϜ͸௿ϨΠςϯγʔɾߴεϧʔϓοτ଱ੑ͕ඞਢ • ࠷େ 600 req / secɼ஗ͯ͘΋(95ύʔηϯλΠϧͰ) 200 ms / req ͘Β͍ • ཧ૝: αΠζͷ؅ཧΛͨ͘͠ͳ͍ 15 എܠ·ͱΊʢ࠶ʣ Ͳ͏࣮ݱ͢Δ͔
  16. ௿ϨΠςϯγʔɾߴεϧʔϓοτͳ ΞϓϦέʔγϣϯΛߏங͢Δ 16 1ZUIPOΛબ୒͢Δ͔ʁ ػցֶशͷ͜ͱ͸Ұ୴ஔ͍͓͍ͯͯ

  17. ௿ϨΠςϯγʔɾߴεϧʔϓοτΛ 1ZUIPOͰ࣮ݱ͢Δͷ͸೉͍͠ w ஗͍ʢ͜ͱ͕ଟ͍ʣ w ύϑΥʔϚϯεͷνϡʔχϯά͕େม w ϝϞϦίϐʔ͕Ͳ͜Ͱى͍ͬͯ͜Δͷ͔೺Ѳͮ͠Β͍ w ϚϧνεϨουॲཧ͕஗͍

    w (*- άϩʔόϧΠϯλϓϦλϩοΫ  w ؆୯ʹݴ͏ͱɼҰͭͷεϨουͰ͔͠$16ॲཧ͕࣮ߦ͞Εͳ͍ 17
  18. 3VTU 18 ҆શ ଎͍ ฒߦੑ Τί γεςϜ -JGFUJNF 0XOFSTIJQʹΑͬͯϝϞϦΛ؅ཧ $$

    ʹඖఢ͢Δ଎͞ ϚϧνεϨουΛߟྀͨ͠ݴޠઃܭ ศརͳΫϨʔτ ϥΠϒϥϦ ͕ଟ਺ఏڙ͞Ε͍ͯΔ QZUIPO΄ͲͰ͸ͳ͍͕
  19. ػցֶशΛ༻͍ͨ
 ௿ϨΠςϯγʔɾߴεϧʔϓοτͳ ΞϓϦέʔγϣϯΛߏங͢Δ 19 3VTUΛબ୒͢Δ͔ʁ

  20. 3VTU 20 ҆શ ଎͍ ฒߦੑ Τί γεςϜ -JGFUJNF 0XOFSTIJQʹΑͬͯϝϞϦΛ؅ཧ $$

    ʹඖఢ͢Δ଎͞ ϚϧνεϨουΛߟྀͨ͠ݴޠઃܭ ศརͳΫϨʔτ ϥΠϒϥϦ ͕ଟ਺ఏڙ͞Ε͍ͯΔ QZUIPO΄ͲͰ͸ͳ͍͕ Τί γεςϜ ศརͳΫϨʔτ ϥΠϒϥϦ ͕ଟ਺ఏڙ͞Ε͍ͯΔ
  21. 21

  22. 3VTUͰਪ࿦ w χϡʔϥϧωοτϫʔΫ෦෼ͷҠߦ͸؆୯ w TBWFE@NPEFMΛ࢖͏ͱωοτϫʔΫͷఆٛ͸Ұߦ w લॲཧɾޙॲཧ͸ॻ͖௚͢ඞཁ͕͋Δ w ը૾ܥͷλεΫͩͱ͜ͷ෦෼͸؆୯ʢͳ͜ͱ͕ଟ͍ʣ w

    ॲཧ଎౓ w ׂݮʢQZUIPONT SVTUNT˞લॲཧɾޙॲཧؚΉʣ 22
  23. Ϟσϧͷ֓ཁ 23 .PCJMF/FUTਤhttps://arxiv.org/pdf/1704.04861.pdf ྉཧΒ͠͞Λද͢ώʔτϚοϓΛऔಘ  ΢Οϯυ΢ΛҠಈͤ͞ͳ͕Β είΞ͕Ұ൪ߴ͘ͳΔ෦෼Λ୳͠ग़͢ 

  24. Ϟσϧͷ֓ཁ 24 .PCJMF/FUTਤhttps://arxiv.org/pdf/1704.04861.pdf ྉཧΒ͠͞Λද͢ώʔτϚοϓΛऔಘ  ΢Οϯυ΢ΛҠಈͤ͞ͳ͕Β είΞ͕Ұ൪ߴ͘ͳΔ෦෼Λ୳͠ग़͢  1ZUIPOϥΠϒϥϦ 1*-

    OVNQZ LFSBT OVNQZ
  25. Ϟσϧͷ֓ཁ 25 .PCJMF/FUTਤhttps://arxiv.org/pdf/1704.04861.pdf ྉཧΒ͠͞Λද͢ώʔτϚοϓΛऔಘ  ΢Οϯυ΢ΛҠಈͤ͞ͳ͕Β είΞ͕Ұ൪ߴ͘ͳΔ෦෼Λ୳͠ग़͢  3VTUΫϨʔτ JNBHF

    OEBSSBZ UFOTPSqPX OEBSSBZ
  26. 26 ਪ࿦ʹݶఆͨ͠৔߹ 3VTUͰ΋ػցֶशΛ༻͍ͨγεςϜΛ ؆୯ʹ࣮ݱͰ͖Δ

  27. 27 3VTUʹ͚ͨͩ͠Ͱ ύϑΥʔϚϯεཁ݅ΛຬͨͤΔΘ͚Ͱ͸ͳ͍ ͱ͸͍͑

  28. 28  ॏ͍ͨॲཧ͸Ωϟογϡ͢Δ  ఘΊΔ෦෼͸ఘΊΔ γεςϜઃܭํ਑ ͳʹΛ͍·͞Β౰ͨΓલͷ͜ͱΛʁ

  29. 29  ॏ͍ͨॲཧ͸Ωϟογϡ͢Δ  ఘΊΔ෦෼͸ఘΊΔ γεςϜઃܭํ਑ ػցֶश͕བྷΉγεςϜͰ΋ී௨ʹઃܭ͢Ε͹͍͍ ͳʹΛ͍·͞Β౰ͨΓલͷ͜ͱΛʁ

  30. Ϋϩοϐϯά݁ՌͷΩϟογϡ 30 ಉ͡αΠζͷϦΫΤετ͸݁Ռ͕ಉ͡ͳͷͰ࢖͍ճ͢ ܭࢉ͕ඞཁͳ͍ͷͰߴ଎

  31. 31 .PCJMF/FUTਤhttps://arxiv.org/pdf/1704.04861.pdf ྉཧΒ͠͞Λද͢ώʔτϚοϓΛऔಘ  ΢Οϯυ΢ΛҠಈͤ͞ͳ͕Β είΞ͕Ұ൪ߴ͘ͳΔ෦෼Λ୳͠ग़͢  ॏ͍ͨॲཧ͸Ͱ͖Δ͚ͩΩϟογϡ͍ͨ͠ Ϟσϧ֓ཁ ਪ࿦ͷΩϟογϡ

  32. 32 .PCJMF/FUTਤhttps://arxiv.org/pdf/1704.04861.pdf ྉཧΒ͠͞Λද͢ώʔτϚοϓΛऔಘ  ΢Οϯυ΢ΛҠಈͤ͞ͳ͕Β είΞ͕Ұ൪ߴ͘ͳΔ෦෼Λ୳͠ग़͢  ਪ࿦ͷΩϟογϡ Ϟσϧ֓ཁ Ϟσϧͷڞ௨෦෼͸ΩϟογϡͰ͖Δ

    ώʔτϚοϓ͕͋Ε͹ ΫϩοϐϯάྖҬͷܭࢉ͕Մೳ
  33. ఘΊΔ൑அ w Ͱ͖Δ͚ͩࣸਅͷݟӫ͑ΛΑ͍ͨ͘͠ w ը૾഑৴͕஗͘ͳΒͳ͍͜ͱ͕ॏཁ w ը૾഑৴γεςϜ͸͢Ͱʹ͋Δ 33 ॲཧ͕٧·͍ͬͯΕ͹ ఘΊͯطଘͷ࢓૊ΈͰ഑৴͢Ε͹Α͍

    ώʔτϚοϓΩϟογϡͰ͖͍ͯͳ͍৔߹ ॲཧ͕٧·Δ ʢॳճಋೖ࣌ɾ৽͍͠Ϧιʔε ͭ͘ΕΆʹ΋ରԠ౳ ͕૿͑ͨ৔߹ʣ
  34. ը૾഑৴ͷํ๏ 34 طଘ഑৴αʔό ΫϩοϐϯάγεςϜ ϦΫΤετ ৔ॴࢦఆͳ͠ ϦΫΤετ ແ ཧ طଘ഑৴αʔό

    ΫϩοϐϯάγεςϜ ϦΫΤετ Ϋϩοϓ৔ॴࢦఆͯ͠ ϦΫΤετ ͜ͷ৔ॴͰ Ϋϩοϓͯ͠΄͍͠ ը૾Λฦ͢ ௨ৗ࣌ ఘΊΔ࣌ ૣΊʹఘΊΔ൑அΛ͢Δ͜ͱ͕େࣄ
  35. ࡞ͬͨγεςϜ 35

  36. 36

  37. 37 աڈʹΫϩοϐϯά͍ͯͨ͠Βͦͷ݁ՌΛ࠶ར༻ Ϋϩοϐϯά݁ՌͷΩϟογϡ

  38. 38 ώʔτϚοϓ͕͋Ε͹ॊೈͳαΠζʹରԠՄೳ ώʔτϚοϓΛΩϟογϡͯ͠//ʹ͔͔ΔॲཧΛল͘ ৽͍͠ϦΫΤετʹ͸ώʔτϚοϓΛܭࢉͯ͠ฦ͢ ϦΫΤετϕʔεͰܭࢉ͢ΔͷͰ؅ཧ͠ͳ͍͍ͯ͘ ώʔτϚοϓͷΩϟογϡ

  39. 39 ܭࢉࢿݯͷޮ཰ར༻ ֎෦Ϧιʔε͕བྷΜͩॲཧ͸͢΂ͯඇಉظॲཧ ϦΫΤετΛϚϧνεϨουͰॲཧ͍ͯ͠ΔͷͰ ޮ཰Α͘$16Λར༻Ͱ͖Δ

  40. 40 ఘΊΔ൑அ ผεϨουͰෳ਺ಈ͔͓ͯ͘͠ ΩϡʔͰλεΫΛ؅ཧ Ωϡʔ͕٧·͍ͬͯΕ͹ఘΊͯ طଘͷγεςϜͰ഑৴ ఘΊͨ৔߹͸ ΩϟογϡΛૣΊʹ&YQJSF͢Δ

  41. 41 ఘΊΒΕΔ࢓૊Έ Ͱ͖ͳ͔ͬͨ৔߹͸ ྖҬΛࢦఆͤͣʹطଘ഑৴αʔόʹϦΫΤετ ΫϩοϓྖҬΛܭࢉͰ͖ͨ৔߹͸ ΫϩοϓྖҬΛࢦఆͯ͠طଘ഑৴αʔόʹϦΫΤετ

  42. 42 ΩϟογϡʹΑΓύϑΥʔϚϯεΛҡ࣋ͭͭ͠ ॊೈͳϦΫΤετʹରԠՄೳ ͔ͭϝϯςφϯεϑϦʔ

  43. 43 ͜ͷγεςϜΛຊ൪Ͱಈ͔ͨ͠ΒͲ͏ͳ͔ͬͨ͸·ͨผͷػձʹɽɽɽɽ

  44. ·ͱΊ • ݱঢ়ͷը૾഑৴͸಺༰ʹؔΘΒͣಉ͡Α͏ʹΫϩοϐϯά͍ͯ͠Δ • ػցֶशΛ༻͍ͯը૾͝ͱʹ࠷దͳҐஔͰͷΫϩοϐϯάΛ࣮ݱ͠ Α͏ͱͨ͠ • ը૾഑৴γεςϜʹٻΊΒΕΔ௿ϨΠςϯγʔɾߴτϥϑΟοΫ଱ੑͷ ͋ΔΞϓϦέʔγϣϯΛ࣮૷͢ΔͨΊʹpythonͰ͸ͳ͘rustΛબ୒ͨ͠ •

    ػցֶशΛ༻͍ͨγεςϜͰ΋ී௨ʹઃܭ͢Ε͹࣮ݱՄೳ • Ωϟογϡઓུɾݱ࣮తͳམͱ͠ॴΛݟ͚ͭΔ 44