Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
To transcend Marugame
Search
hatobus
August 20, 2018
0
740
To transcend Marugame
This is a slide which I announced in DRECOM Co Ltd.
hatobus
August 20, 2018
Tweet
Share
More Decks by hatobus
See All by hatobus
ゼロ幅文字に関するエトセトラ
hatobus
1
240
農業とITをOSSで
hatobus
0
63
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1366
200k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Code Reviewing Like a Champion
maltzj
520
39k
Become a Pro
speakerdeck
PRO
25
5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Optimizing for Happiness
mojombo
376
70k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Documentation Writing (for coders)
carmenintech
65
4.4k
Done Done
chrislema
181
16k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Transcript
丸亀製麺を超える 会津大学 学部三年 芳賀 史都 (Fumito Haga)
1. 自己紹介 2. 作ったもの 3. 作った理由 4. 作成する(データの作成から学習まで) 5. 結果
6. デモ(ここでやります) 7. 使用したライブラリ等 Index 2
1. 自己紹介 ❏ 名前 : 芳賀 史都 (ハガ フミト) ❏
大学・学年 : 会津大学学部三年 ❏ 主に使っている言語 ❏ Python, C++, Go ❏ 研究内容 ❏ キカイガクシュウを使用して自動車の自動運転 ❏ 好きなこと, もの ❏ 電子工作(変なものを作る) ❏ vim, Linux 3 GitHub : hatobus Facebook : fumitonn Twitter : flying_hato_bus
1. 自己紹介 こんなことやりました 4 赤べこの自動化
赤べこの自動化 5 昨年シリコンバレーへと研修に行った時に作成 Raspberry piとPythonで動かす。 • 最初は反響は少なかった ◦ 池澤あやかさんがツイートした →
900RT 1300 Fav !
1. 自己紹介 こんなことやりました 夏コミに出展 6
C94(今回の夏コミ)に初出展 低意識電子工作部という名前 今までTwitterなどで作成してき た工作を解説する本。 何冊売れた? 16冊 7
2.作ったもの 丸亀製麺の食品を判別するAI 8
3. 作った理由 直前まで今回のLTのネタが思いつかなかった。 • 電子工作? • CLIツール? • ネタが思いつかなかったネタ? 今週の月曜日までネタが思いつかなかった。
9
3. 作った理由 どうしよう...... 10
3. 作った理由 その前にお腹減ったな... 11
3. 作った理由 うどん食べたい...... 12
3. 作った理由 会津若松市内唯一の丸亀製麺へ 13
3. 作った理由 かけうどん+かしわ天 14
3. 作った理由 丸亀のレジに立つ 丸亀のレジシステム • おぼんを乗せる • レジの人が確認する • 金額が出る
• 支払う 15
3. 作った理由 丸亀のレジに立つ 丸亀のレジシステム • おぼんを乗せる • レジの人が確認する • 金額が出る
• 支払う これ、機械学習とか画像認識で なんとかできるのでは!? 16
17
4. 作成する 今回使用するのはDarknetというライブラリ (C/C++) 18
4. 作成する 19 ・Darknetって何? C/C++ で書かれたディープラーニングのフレームワーク。 YOLO という画像認識の他に、画像生成、囲碁の強化学習 などが体験できる。 19
4. 作成する ~データの作成~ 20 今回は画像認識ということで必要なデータは画像。 画像の収集には google-images-download を使用。 Google画像検索での結果を自動的に保存できる。 例
(丸亀製麺 かき揚げの結果を300枚保存する) python3 google_images_download.py --keywords "丸亀製麺 かき揚げ" --limit 300 -cd /usr/bin/chromedriver -o ~/my_hdd/exp/marugame/marugame1000/kakiage/
4. 作成する ~データの作成~ 21 今回作成したデータセット 名前 学習に使用した枚数 選んだ理由 ぶっかけうどん 121枚
いつも食べてるから かけうどん 143枚 ぶっかけうどん対抗馬 釜揚げうどん 111枚 丸亀の日に安くなるので素敵 イカ天 132枚 友人にぜひ入れてくれと頼まれた かしわ天 104枚 和風フライドチキン最高 かき揚げ 117枚 圧倒的コスパ,2枚食べるだけで満腹
4. 作成する ~データの作成~ 22 データの作成に必要なのはラベリング用のツール。 ラベリング用ツールを使ってデータセットを作成。 今回使用したもの bbox-Label-Tool
23 Darknetが認識できるような形でデータを配置する (参考URL : https://github.com/AlexeyAB/darknet/blob/master/README.md) ざっくり解説 1. バウンディングボックスのデータをYOLOが認識できる形に変換 2. 学習に必要なtrain.txtとtest.txtを生成
3. 以下のファイルを生成 a. cfg / obj.data b. cfg / obj.names c. cfg / yolo-obj.cfg 4. 作成する ~学習の前段階~
24 1. obj.data 学習に使用するデータがどこに入っているかを示すファイル Darknetがあるフォルダからの相対パスで指定する。 2. obj.names カテゴリを列挙するファイル、出力はこれを元に行われる 3. yolo-obj.cfg
学習に使用するネットワークを構成するファイル (設定には色々と調べる必要がある) 4. 作成する ~学習の前段階~
25 4. 作成する ~学習の前段階~ obj.namesの指定をミスった場合
26 ここまで来たら後は学習をさせるだけ 使用マシン CPU : Corei7 - 4771 RAM :
32GB GPU : GTX1080ti 所要時間 : 20時間と少し 4. 作成する ~学習させる~
アルゴリズムについて 27 使用しているアルゴリズム YOLO (You Only Look Once) あらかじめ画像全体をグリッド分割 (
n x n 分割)しておき 各領域ごとに物体のクラスとbounding boxを求める。 また、過学習を防ぐためにepoch数に応じて学習率を変化させている。 論文より
28
5. 結果 29 5月くらいに食べた かけうどん(温)とかき揚げの画像 きちんとかけうどんとかき揚げが 判別されている。
6. デモ 30 大崎駅のところにある 丸亀製麺で食べた かけうどん(冷) かき揚げ 実際に認識するかを 今ここでデモします。
31 デモ
32
7.参考文献 論文 : YOLOv3: An Incremental Improvement /Redmon, Joseph and
Farhadi, Ali GitHub : https://github.com/pjreddie/darknet 学習をする際に使ったツール BBox Label Tool : https://github.com/puzzledqs/BBox-Label-Tool AlexeyAB darknet : https://github.com/AlexeyAB/darknet 33
34 ご静聴ありがとうございました