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
710
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
180
農業とITをOSSで
hatobus
0
53
Featured
See All Featured
Unsuck your backbone
ammeep
663
57k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
2
1.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
121
39k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Producing Creativity
orderedlist
PRO
337
39k
Fireside Chat
paigeccino
21
2.6k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
322
20k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.5k
Designing the Hi-DPI Web
ddemaree
276
33k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
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 ご静聴ありがとうございました