Upgrade to Pro — share decks privately, control downloads, hide ads and more …

にゃーんとわんわん

Doarakko
December 11, 2020

 にゃーんとわんわん

Doarakko

December 11, 2020
Tweet

More Decks by Doarakko

Other Decks in Programming

Transcript

  1. にゃーんとわんわん
    @Doarakko

    View full-size slide

  2. ・2019年12月入社(2社目)
    ・エンジニア歴1.5年
     - 仕事: Go, PHP
     - 趣味: Python, C++
    ・AtCoder 緑
    ・海外サッカーをよく見ます
    自己紹介
    2

    View full-size slide

  3. Slackbot を使ってます
    5
    ・Slack 標準搭載のボット
    ・誰でも簡単に使える
    ・改行で区切るとランダムで返る
    ・画像 URL は展開される

    View full-size slide

  4. 手動追加面倒くさい & 文字数制限あり
    6

    View full-size slide

  5. Bot 作りました
    7
    ⚽ GitHub: https://github.com/Doarakko/iyashi

    View full-size slide

  6. Heroku
    全体の構成と流れ:画像投稿
    8
    bot
    ML model
    postgres

    ② ③


    View full-size slide

  7. Heroku
    全体の構成と流れ:にゃーん
    9
    bot
    ML model
    postgres
    ① ②


    にゃーん

    View full-size slide

  8. 使用したもの
    Slack Bot
    ・Heroku:Bot を動かしている場所
    ・slackbot:Python で簡単に Slack Bot を作成するためのライブラリ
    動物の画像認識モデル
    ・PyTorch:機械学習のライブラリ
    ・flickr API:動物画像の収集
    ・Google Colab:モデル作成の作業場所
    10

    View full-size slide

  9. ・超簡単に Slack Bot を作れる
    ・特定のメッセージに対して、送信・返信・絵文字をつけられる
    Python のライブラリ slackbot
    11
    https://github.com/lins05/slackbot

    View full-size slide

  10. 1. データ収集
    2. 画像のノイズ除去
    3. 前処理
    4. 転移学習
    5. モデル評価
    モデル作成手順
    12

    View full-size slide

  11. flickr API を使って各動物 600 枚の画像を収集(合計 3,000 枚)
    モデル作成手順(1 / 5):データ収集
    13
    flickr: 写真共有サイト

    View full-size slide

  12. モデル作成手順(2 / 5):画像のノイズ除去
    14
    今回はサボりました

    View full-size slide

  13. モデル作成手順(3 / 5):前処理
    15
    今回行ったもの
    ・画像サイズをあわせる
    ・正規化
    よく行うもの
    ・ 写真から顔を切り取る(for 顔認識モデル)
    ・オリジナルを回転した画像を生成(水増し)
    ・位置の補正

    View full-size slide

  14. モデル作成手順(4 / 5):転移学習
    16
    過学習:模擬試験は 90 点だったけど本番は 30 点
    ・学習済みモデルのパラメータをそのまま使用
    ・最終層以外のパラメータを学習させないため過学習を抑えられる
    ・クラス数にあわせて最終層を変更
    https://www.youtube.com/watch?v=yv0SzIvIhGk

    View full-size slide

  15. モデル作成手順(4 / 5):転移学習
    17
    ・ImageNet で学習させた ResNet-18 を使用
    ・ResNet は最大 152 層(今回は一番小さいものを使用)
    PyTorch から簡単に学習済みのモデルを使えます
    https://www.researchgate.net/figure/Proposed-Mod
    ified-ResNet-18-architecture-for-Bangla-HCR-In-th
    e-diagram-conv-stands-for_fig1_323063171

    View full-size slide

  16. モデル作成手順(5 / 5):モデル評価
    18
    ・合計 3,000 枚の画像をランダムに分ける(各クラスごとの画像枚数は均等に)
     - 学習用:2,000 枚
     - バリデーション用:500 枚
     - テスト用:500 枚
    テスト用のデータに対して Accuracy 0.9820
    各データは必ず独立させる(例:学習用とテスト用で同じデータを使わない)

    View full-size slide

  17. 1. データ収集
    2. 画像のノイズ除去
    3. 前処理
    4. 転移学習
    5. モデル評価
    モデル作成手順(再掲)
    19

    View full-size slide

  18. ルールベース 1:80 % (仮)
    ・「ネコ」がほとんど(弊社)なので全て「ネコ」として判定
    ルールベース 2:90 % (仮)
    ・A さんは「イヌ」を飼っている → A さんから投稿された画像は全て「イヌ」として判定
    ・B さんは「ネコ」と「イヌ」を飼っている → ランダムで判定
    機械学習:98 %
    ・実装難易度、工数、スペシャリスト、運用コスト、 etc
    機械学習本当に必要ですか?
    20
    本当に機械学習が必要なのか、他に方法がないかしっかりと考える必要がある

    View full-size slide

  19. 付録:誰でもどこでもコーディングフリーで with Heroku Button
    21
    JSON ファイルを書くだけで簡単にツールを配布可能
    ⚽ https://github.com/Doarakko/iyashi

    View full-size slide

  20. ⚽ https://speakerdeck.com/8823scholar/herokuhasi-ndafalseka

    View full-size slide

  21. にゃーんとわんわん
    @Doarakko

    View full-size slide