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
290
農業とITをOSSで
hatobus
0
71
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
299
21k
How GitHub (no longer) Works
holman
314
140k
BBQ
matthewcrist
89
9.7k
Documentation Writing (for coders)
carmenintech
71
4.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
GraphQLとの向き合い方2022年版
quramy
47
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
33
5.9k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Embracing the Ebb and Flow
colly
86
4.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
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 ご静聴ありがとうございました