52
認識技術 研究開発 が捗る環境 2016.7.29 山口 陽平 JAWS-UG 名古屋 AWS勉強会 第13回 AWS活用事例 Docker編

JAWS-UG Nagoya 20160729

Embed Size (px)

Citation preview

Page 1: JAWS-UG Nagoya 20160729

認識技術 の 研究開発 が捗る環境 2016.7.29 山口 陽平 JAWS-UG 名古屋 AWS勉強会 第13回

来 栖 川 電 算 に お け る A W S 活 用 事 例

Docker編

Page 2: JAWS-UG Nagoya 20160729

今日話すこと

• 自己紹介 & 会社紹介

• Docker とは?

• 事例紹介

–詰め込み過ぎサーバ

– Jenkins × Docker

–その他の作業

– TensorFlowとは?

– TensorFlow Manager

• まとめ

2

Page 3: JAWS-UG Nagoya 20160729

自己紹介 & 会社紹介

とりあえず

3

Page 4: JAWS-UG Nagoya 20160729

山 口 陽 平 @melleo1978

• 所属 & 経歴 – 有限会社 来栖川電算 取締役

– Mashup Awards 9 優秀賞受賞

– 名古屋工業大学大学院 博士前期課程修了

– IPA未踏ソフトウェア創造事業 採択

• 自己紹介 企画 ~ 実装まで全部やる人

– 認識技術 & アルゴリズム の研究開発

• 文字認識,物体認識,動作認識,行動認識

– 言語処理系 の研究開発

• 分散DB,仮想機械,コンパイラ

• 好きなAWS S3 × Lambda × API Gateway

※実物に髪の毛はありません。

4

Page 5: JAWS-UG Nagoya 20160729

山 口 陽 平 @melleo1978

• [実践]画像認識 を執筆 WEB+DB PRESS Vol.83

–これから画像認識をはじめる人におススメ

5

– OpenCV の使い方や実装例

– SIFTなどの各種アルゴリズムや特定物体認識のしくみ

–精度改善への取り組み方

Page 6: JAWS-UG Nagoya 20160729

来栖川電算 設立 2003年(名古屋工業大学発ベンチャー) 従業員 38人

• SF世界の技術を実現し、社会に役立てる

–人工知能技術のライセンス販売・研究・SI

• 文字認識,物体認識,動作認識,行動認識

–スマホアプリの企画・制作・運営

スマートライフ技術

NTTドコモ様との共同研究

スマートドライブ技術

大手自動車メーカー様むけ

メイドさん もふくめて

6

Page 7: JAWS-UG Nagoya 20160729

来栖川電算 様々なアルゴリズムを駆使する技術者集団

• 様々な認識技術

–文字認識,物体認識,モーション認識

• 限界性能を引き出す優れた実装技術

–機械学習・コンパイラ・データベース・仮想機械などのアルゴリズムとバイナリハック

• 高速化,並列化,分散化,省空間化,高精度化

• ビジネスを差別化する認識エコシステム

–スケールに応じた仕組,競争力の自動強化

7

Page 8: JAWS-UG Nagoya 20160729

Docker とは?

要するに軽量な VM

8

Page 9: JAWS-UG Nagoya 20160729

Docker とは? 雑に言えば、作り捨てても痛くないくらい軽い VM

• コンテナ型の仮想化

–ホストOSと同じOSの仮想化しかサポートしないため、計算資源を名前空間で分離するオーバーヘッドしかかからない。

–ハイパーバイザー型の仮想化(VMwareなど)と比べて、インスタンス作成や起動が速く、ディスクやメモリの使用量は少なく、速度劣化が少ない。

9

Page 10: JAWS-UG Nagoya 20160729

Docker の概念 実はみなさんよく知っている考え方

• Docker ファイル:Makefile 的なもの

• Docker イメージ:コンテナを保存した物

• Docker コンテナ:実行中のイメージ

10

Page 11: JAWS-UG Nagoya 20160729

詰め込み過ぎサーバ

Docker でなんとかなった

11

Page 12: JAWS-UG Nagoya 20160729

発端 節約のために1台に様々な社内サービスを集約

• C をアップデートしたら、芋づる式に D

と E もアップデートされ動かなくなった

12

Page 13: JAWS-UG Nagoya 20160729

苦悩 調べてみると D の依存先を外から変更不可能!

• 仕方がないので、おおもとの依存先を変えてみたけどダメだった

13

Page 14: JAWS-UG Nagoya 20160729

閃き 2 台あればいけるのに ⇒ Docker で出来るじゃん!

• 各サービスを Docker コンテナに閉じ込めればアップデートが干渉しなくなる

14

Page 15: JAWS-UG Nagoya 20160729

解決 小規模なら Docker Compose がおススメ

• Docker Compose –凄くシンプルなオーケストレーションツール

–設定(docker-compose.yml)が簡単

• docker run のオプションと同じことを書くだけ

• コンテナ連携,ポートフォワード,ボリューム,

–起動が簡単(docker-compose up –d のみ) • 依存先のコンテナも一緒に起動

• サービス単位で管理すると楽

–簡潔さよりポータビリティを優先した方が吉

15

Page 16: JAWS-UG Nagoya 20160729

Jenkins × Docker

快適な CI を実現する

16

Page 17: JAWS-UG Nagoya 20160729

Jenkins × Docker プルリクが更新されるたびにクリーンな環境で試験

• Docker が 0.6 の頃から採用

– Jenkins から Docker を使うプラグインを自作

17

Page 18: JAWS-UG Nagoya 20160729

Jenkins × Docker プルリクが更新されるたびにクリーンな環境で試験

• 本番なみにクリーンな環境 – 毎回作り捨てるのでゴミに邪魔されない

• 不正な依存関係の早期発見 – 特定の人の環境にしかないライブラリ

– 納品先の人がアクセスできないライブラリ

• Dockerfile による安全な構成管理 – ソースコードと同様の構成管理

– 確実に動く環境構築方法やビルド方法

– 本番環境と同じコードから生成される開発環境

• VM と違って軌道がサクサク

18

Page 19: JAWS-UG Nagoya 20160729

開発作業

Docker を使うと捗る

19

Page 20: JAWS-UG Nagoya 20160729

その他の作業 Docker はちょっとしたことにも大活躍

• 手順書の確認作業 – 手順を修正したら、まっさらの環境からすぐやり直せる。

• 依存ライブラリの収集作業 – まっさらの環境でコマンド(mvn,gradle,sbt)を実行すれば、必要なライブラリを確実に収集できる。

• バッチ処理の受け渡し – コンテナの中に必要なものを全部入れておけるので、受けとったスクリプトの動かし方が分からないということが少ない。

20

Page 21: JAWS-UG Nagoya 20160729

TensorFlow Manager

たくさんの計算機を使う深層学習の実験を手軽にする

21

Page 22: JAWS-UG Nagoya 20160729

TensorFlow Manager オンプレ環境でも動かせる ECS っぽいシステム

22

Page 23: JAWS-UG Nagoya 20160729

TensorFlow Manager Docker なら割と簡単に実現可能

• 計算資源の有効活用

–資源が豊富な計算機では、複数の実験を並行実行したいが、他と干渉しないようにしたい。

–実験が始まるまでの待ち時間をなくしたい。

• 様々な環境

–どんな環境でもすぐに使えるようにしたい。

• クラウド環境,社内環境,お客様環境

• ※持ち出し範囲が限定されたデータがある。

–1台の開発PCでクラスタを再現したい。

23

Page 24: JAWS-UG Nagoya 20160729

まとめ

もうお分かりですよね

24

Page 25: JAWS-UG Nagoya 20160729

まとめ Docker は使うべき(ほとんどの場合、良い選択)

• 使い捨て環境を手軽に作る方法

• 干渉や想定外の事態が起こりにくい環境を手軽に作る方法

• 手順を伝える安全な方法

• 構成管理可能な環境を実現する良い方法

• CIやCDを実現する良い方法

25

Page 26: JAWS-UG Nagoya 20160729

求人

Docker を駆使して快適に開発したい人!

26

Page 27: JAWS-UG Nagoya 20160729

スタッフ募集中 学生さん、転職者さん、力を貸して!

• 研究(認識技術) – 機械学習・アルゴリズム・高速化・省メモリ・画像・センサーに関する知識,Java,C++

• 開発(サーバサイド) – プロセス・アーキテクチャ・ミドルウェア・ネットワークに関する知識,Scala,Java,C++

• 開発(フロントエンド)

– UI/UX・Android・iOSに関する知識,JavaScript

• 企画(認識アプリ・認識サービス)

– 新しい習慣を考える力,普及のためのアイデア

27

Page 28: JAWS-UG Nagoya 20160729

オフィス 新オフィス 移転日:2016年6月 床面積:2倍

• いつでも 見学 OK、メイド さんの 夕飯 付き

28

Page 29: JAWS-UG Nagoya 20160729

情景画像文字認識

技術紹介①

29

Page 30: JAWS-UG Nagoya 20160729

情景画像文字認識とは

スマホなどで撮影した画像から文字を読み取る

30

Page 31: JAWS-UG Nagoya 20160729

情景画像文字認識とは

様々なパース、様々なレイアウト、様々な書体

31

Page 32: JAWS-UG Nagoya 20160729

情景画像文字認識とは

いわゆる “OCR” とは ”扱う画像” が違う

• 悪環境下での文字認識 –手書き・様々な書体・かすれ・点描・きついパース・統一性のない並び・逆光・陰・影・グラデーション・モアレなど

• 使える場面

–屋外でのスマホカメラを使った棚卸し

–車載カメラからの標識認識

–商品パッケージからの成分情報抽出

–キーワードによるアルバム・ビデオの頭出し

32

Page 33: JAWS-UG Nagoya 20160729

事例:タンゴチュウ Twitter で情景画像文字認識を体験できるサービス

33

Page 34: JAWS-UG Nagoya 20160729

物体認識

技術紹介②

34

Page 35: JAWS-UG Nagoya 20160729

物体認識とは

画像中の物体の種類・位置・姿勢を推定

35

Page 36: JAWS-UG Nagoya 20160729

物体認識とは

様々な向き・ポーズを学習させ見えの多様性を獲得

• 特定物体認識は素人でも簡単に使える

–どんな画像を学習に使うかを学べばOK

36

Page 37: JAWS-UG Nagoya 20160729

物体認識とは

モノをカウント、見た目で分からない情報を表示

• 使える場面

工場内で箱の仕分け

体験や評判の調査

ワインラベルで情報検索

AR付箋

集めて応募キャンペーン

ARフィギュア

37

Page 38: JAWS-UG Nagoya 20160729

事例:1000sors 誰でも簡単に使えるクラウド型物体認識エンジン

• 広い適用範囲 – 照明姿勢の変化に強く、様々な撮影環境に対応

• 驚異的な精度 – 数十万種類をほぼ完ぺきに識別

• 圧倒的な性能 – たった1台のPCで100万種類を瞬時に識別

– 台数を増やせばリニアにスケールアウト

38

Page 39: JAWS-UG Nagoya 20160729

事例:1000sors 手元の画像で精度や速度をすぐに確認可能

• ShotPreview for Android / iOS

①設定 ②撮影 ③確認

39

Page 40: JAWS-UG Nagoya 20160729

事例:ShotSearch 表紙を撮影すると発売日や口コミが分かるアプリ

• きついパースも、帯による隠れも、OK

40

Page 41: JAWS-UG Nagoya 20160729

事例:ShotSearch 表紙を撮影すると発売日や口コミが分かるアプリ

• よく似ていても、複数冊同時も、OK

41

Page 42: JAWS-UG Nagoya 20160729

事例:Cellars 18万件のワインラベルを認識するアプリ

• 世界で賞を獲得したアプリをダウンロード! – Asia Smartphone Apps Contest

• 広告マーケティング部門 Silver Award 2位

– 立命館大学 学生ベンチャーコンテスト • 最優秀賞 NICT賞

42

Page 43: JAWS-UG Nagoya 20160729

事例:運転補助 車載カメラに映る車や人などを検出・識別・追跡

• 単眼でも高精度、大きさ・距離も推定

世界中の走行データを活用

43

Page 44: JAWS-UG Nagoya 20160729

事例:画像認識API 画像を送るだけで写っている商品の情報を取得

• 登録商品:500 万件以上(昨年10月)の市販商品

–書籍,DVD,CD,PCソフト,ゲームソフト,食品パッケージ,… どんどん増加中

• 定期更新:網羅性 と 認識精度 の改善

–データ追加,パラメータ・アルゴリズム改良

44

Page 45: JAWS-UG Nagoya 20160729

開発者は今すぐ登録! ⇒ https://dev.smt.docomo.ne.jp

事例:画像認識API だれでも、かんたんに、マッシュアップ!

• docomo Developer support より提供中

画像認識 画像に写っている物体の情報を取得

環境センサー 日本全国の気温、降水量、紫外線量を取得

音声認識 話した内容を即座に文字に変換

雑談対話 自然な会話をやり取り

知識Q&A 今知りたいことをピンポイントで回答

音声合成 入力した文字を読み上げ

トレンド記事抽出 今人気の話題をジャンルやキーワードで検索

文字認識 画像の文字を読み取り

発話理解 要求を理解して、適切な機能を提示

動作推定 行っていた動作の推定

45

Page 46: JAWS-UG Nagoya 20160729

モーション認識

技術紹介③

46

Page 47: JAWS-UG Nagoya 20160729

モーション認識とは

センサー値から動作や行動の種類や発生時刻を推定

47

Page 48: JAWS-UG Nagoya 20160729

事例:動作推定API ドコモ と 来栖川電算 の共同研究

• 加速度データから人の動作や行動を検出

–静止,歩き,走り,自転車,睡眠,食事

• 動作と直接対応しない行動も検出可能

• スマホ・スマートウォッチに対応

– Android,Android Wear,… • 加速度データにアクセスできる API を備えたウェアラブルデバイス

– ※次の画像は画像中のデバイスに対応していることを保証するものではありません。

48

Page 49: JAWS-UG Nagoya 20160729

開発者は今すぐ登録! ⇒ https://dev.smt.docomo.ne.jp

事例:動作推定API だれでも、かんたんに、マッシュアップ!

• docomo Developer support より提供中

画像認識 画像に写っている物体の情報を取得

環境センサー 日本全国の気温、降水量、紫外線量を取得

音声認識 話した内容を即座に文字に変換

雑談対話 自然な会話をやり取り

知識Q&A 今知りたいことをピンポイントで回答

音声合成 入力した文字を読み上げ

トレンド記事抽出 今人気の話題をジャンルやキーワードで検索

文字認識 画像の文字を読み取り

発話理解 要求を理解して、適切な機能を提示

動作推定 行っていた動作の推定

49

Page 50: JAWS-UG Nagoya 20160729

事例:ライフログ ドコモの動作推定APIの応用例

50

開発者は今すぐ確認! ⇒ https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_docs_id=127

Page 51: JAWS-UG Nagoya 20160729

事例:毎朝体操 だれでも、いつでも、どこでも、すぐできる

• Android & iPhone ⇒ http://maiasa.jp/

51

Page 52: JAWS-UG Nagoya 20160729

事例:なりきり 2.0 ウェアラブルで現実のモノを操作する作品

• ゲームコントローラへの応用

– 格闘ゲームが遊べる程、応答が速く、精度もよい。

52