31
「初めてのWatson」 ハンズオン 2016年11⽉7⽇/14⽇ 井上 研⼀ (@inoccu)

「初めてのWatson」ハンズオン

Embed Size (px)

Citation preview

Page 1: 「初めてのWatson」ハンズオン

「初めてのWatson」ハンズオン

2016年11⽉7⽇/14⽇井上 研⼀ (@inoccu)

Page 2: 「初めてのWatson」ハンズオン

確認• Bluemixのアカウントは作成しましたか?• 地域「⽶国南部」で組織とスペースを作成していますか?

• Monacaのアカウントは作成しましたか?• PC/MacにChrome、スマートフォン(Android/iPhone)に

Monacaデバッガーはインストールしてありますか?

Page 3: 「初めてのWatson」ハンズオン

⾃⼰紹介• 井上 研⼀• ITエンジニア• ITCA認定 ITコーディネータ(経済産業省推進資格)• アルティザンエッジ合同会社 代表社員・CEO• Tech Garden School 講師(CakePHP等)• こどもプログラミング 中野まなびじゅく 講師(Scratch/Arduino)

• 2000年より某SIerで業務向けWebシステム等の開発に携わる• 2013年7⽉にアルティザンエッジ合同会社を創業• @IT「JobSchedulerをNagiosと連携して⾃動化!」(2014/1)• 第1回Cordova勉強会「Cordovaで業務アプリを作る」(2014/11)

Page 4: 「初めてのWatson」ハンズオン

⼈⼯知能の研究者ではありません• 書籍にも書いたことですが・・・ (「おわりに」など)• Watsonの導⼊プロジェクト(2案件)や、機械学習の活⽤など

を「開発のお仕事の⼀環として」やっています。• あくまで現場⽬線で「初めてのWatson」や2冊⽬となる⼈⼯知

能系の書籍の執筆を⾏っています。• 今⽇のハンズオンをきっかけにして、Watsonはもちろん、そ

の他の⼈⼯知能も試してみてください。実際のプロジェクトに活⽤してみてください!( Watsonは特に簡単です!!)• きっと損はしません!!!

Page 5: 「初めてのWatson」ハンズオン

書籍「初めてのWatson」著者:井上研⼀ 出版:リックテレコムB5変型版 224ページ定価:2,200円+税 2016年10⽉下旬刊⾏ISBN:978-4-86594-052-7https://www.amazon.co.jp/dp/4865940529

本書は「Watsonを使ってみたい」という⽅向けの解説書です。「Watsonとは何か?」からスタートし、クラウドサービスIBM Bluemixの無料枠を使ってWatsonを動かしたり、簡単なボットアプリや画像認識アプリを作ります。ITエンジニアに限らず、JavaScriptが書ける⽅なら、⼀般ビジネスマンや学⽣さんでも、余さず本書を活⽤できるでしょう。

Page 6: 「初めてのWatson」ハンズオン

「初めてのWatson」⽬次1. Watsonを知るための6つの

質問2. ⼈⼯知能とは何か?3. とにかくWatsonを体験して

みよう4. Watsonでできること

5. Node-REDでTwitter Botを作ろう

6. 画像認識アプリを作ろう7. Watsonの可能性

ハンズオンの対象

Page 7: 「初めてのWatson」ハンズオン

今⽇のハンズオンは・・・• 書籍「初めてのWatson」の第6章にある顔認識アプリを作って

みます。• ⼈⼯知能(機械学習)の醍醐味は、⾃分で準備したデータで学

習モデルを作ったり、その精度を⾼めたりする「学習フェーズ」にあると思います・・・。• しかし、データの準備が⼤変ですし、Watsonが学習に要する

時間が読めないということもあり、ハンズオンには不向きなのです・・・。• なので、Watsonに実装済みの学習モデル(顔認識)を使った

ハンズオンとなることをご了承ください。

Page 8: 「初めてのWatson」ハンズオン

独⾃の学習モデルWatsonデフォルトの学習モデルを使⽤する場合は、学習

フェーズは必要ない

Watsonデフォルトの学習モデル:・画像分類のデフォルト分類器・顔認識

書籍:P129

Page 9: 「初めてのWatson」ハンズオン

Visual Recognition

Page 10: 「初めてのWatson」ハンズオン

Visual Recognitionの有効化• Bluemixダッシュボード>カタログ>Watson>Visual

Recognition

• 画⾯最下部の「作成」

※既にVisual Recognitionのインスタンスがある⽅は、それを使っていただいても構いません。

書籍:P127

Page 11: 「初めてのWatson」ハンズオン
Page 12: 「初めてのWatson」ハンズオン

api_keyの確認

Page 13: 「初めてのWatson」ハンズオン

Monaca

Page 14: 「初めてのWatson」ハンズオン

Monaca Debugger書籍:P193

• アプリのインストール後、MonacaのユーザID/パスワードでログインしておいてください。

Page 15: 「初めてのWatson」ハンズオン

プロジェクトのインポート• Monacaの演習が⽬的ではないので、既にできあがったプロ

ジェクトをインポートして、⾃分の環境のVisual Recognitionインスタンスを使うようにコードを記述していきます。• 画⾯遷移と撮影機能は実装済みです。

ダウンロードURL

http://bit.ly/2dXBIGU

Page 16: 「初めてのWatson」ハンズオン

プロジェクトのインポート

Page 17: 「初めてのWatson」ハンズオン

インポート完了(Watson Camera)

Page 18: 「初めてのWatson」ハンズオン

Monaca IDE

Page 19: 「初めてのWatson」ハンズオン

index.htmlを開く

Page 20: 「初めてのWatson」ハンズオン

アプリの概要

撮影画⾯ (page1)• Cameraボタン

Face Detectボタン

結果表⽰画⾯(page2)

WatsonVisual

Recognition

Page 21: 「初めてのWatson」ハンズオン

API Referenceの確認(1)

Page 22: 「初めてのWatson」ハンズオン

API Referenceの確認(2)

Page 23: 「初めてのWatson」ハンズオン

Visual Recognitionでできること• Classify an image(画像の分類)• デフォルトの学習モデル• 独⾃の学習モデル

• Detect faces(顔の認識)• Collections (Similarity Search:類似画像の検索)• 2016/9/8 Beta版リリース

• Text Recognition(画像内の⽂字列の認識)• 2016/9/8 Beta版クローズ

Page 24: 「初めてのWatson」ハンズオン

Detect faces(顔認識)

Page 25: 「初めてのWatson」ハンズオン

Visual Recognition APIの呼び出し//画像ファイルのアップロード(顔認識APIの呼び出し)var url = 'https://gateway-a.watsonplatform.net/visual-recognition/api/v3/detect_faces?api_key=' + apiKey + '&version=2016-05-20';var options = new FileUploadOptions();options.fileKey = 'images_file';options.fileName = 'uploadfile.jpg';options.mimeType = 'image/jpeg';var fileTransfer = new FileTransfer();

書籍:P199

Page 26: 「初めてのWatson」ハンズオン

APIからの出⼒を表⽰(1)fileTransfer.upload(photoFileUri, url, function(r) { //顔認識APIからのレスポンスを処理

var response = JSON.parse(r.response); var image = response.images[0]; var text = '';

//recognize...部分を書き換えvar message = document.getElementById('message');message.innerHTML = text;

}, function(error) {alert(error.code);

}, options, true);

書籍:P199

ここに次スライドのコードが⼊ります

Android4.xの⽅は重要!

Page 27: 「初めてのWatson」ハンズオン

APIからの出⼒を表⽰(2)if ('faces' in image) { if (image.faces.length > 0) { //顔認識ができた場合

var face = image.faces[0]; //年齢

text += 'Age: '; if ('max' in face.age && 'min' in face.age) { //年齢の上限と下限が認識された場合

text += face.age.min + ' - ' + face.age.max + ' (' + face.age.score + ')<br>'; }

} else { //顔認識ができなかった場合

text += 'not found!'; }} else if ('error' in image) { //その他のエラーがあった場合

text += image.error.description;}

書籍:P199

書籍のコードより、⼀部省略しています。

Page 28: 「初めてのWatson」ハンズオン

Watsonからのレスポンス //顔認識APIからのレスポンスを処理console.log(r.response); var response = JSON.parse(r.response);

• 年齢の上限または下限だけが結果になった場合にも対応しましょう。• 性別の表⽰もしてみましょう。

この⾏を追加

書籍:P199

Page 29: 「初めてのWatson」ハンズオン

<応⽤編>画像の分類※顔認識ができた⽅はチャレンジしてみましょう!

Page 30: 「初めてのWatson」ハンズオン

Classify an image(画像の分類)

Page 31: 「初めてのWatson」ハンズオン

APIの違い• 顔認識

https://gateway-a.watsonplatform.net/visual-recognition/api/v3/detect_faces?api_key={api-key}&version=2016-05-20

• 画像の分類(パラメータファイルを使⽤しない場合)https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classify?api_key={api-key}&version=2016-05-20