はじめに

この記事ではIBM Watson Services for Core ML Tutorialを訳しつつなぞってみるというものです。
全文訳すわけではないので、興味を持ったら原本も参照して見てください。

この記事ではIBM Watsonアカウントを作成し、Visual RecognitionというWatsonの画像認識サービスをトレーニングし、Core MLモデルを使ったiOSアプリを構築します。

Watsonサービスとは?

この記事ではWatson Studioという、機械学習モデルをトレーニングするのにコーディングを必要としないサービスを利用していきます。

Watsonサービスは、データ系・知識探索系・画像系・会話系・音声系・言語系の機械学習モデルをカバーしています。
Watsonサービスをアプリに加えることで、継続的に学習を重ねていくアプリを構築することができます。

Turi vs. Watson

TuriはAppleの機械学習ライブラリです。
- Turiはどちらも画像系と言語系の機械学習モデルを提供しますが、Core MLに関していうと、2018年4月現在ではWatsonはまだ画像認識モデルしか提供していません。
- Turiにはactivity classifierがありますが、Watsonにはありません。WatsonにはDiscoveryという、Turiのどのサービスにも増して洗練されたサービスがあります。
- Turiを用いるには、Pythonを使ったモデルのトレーニングが必要です。Watsonが必要とするのは言語の種類ではなくデータのみです。

ユーザーのプライバシーは確保されますか?

Core MLの大きな長所はモデルがiOSデバイス上で実行されることです。つまり、オフラインでも利用できユーザーのデータを保護します。ユーザーのデータがデバイスの外に出ることはありません。

しかし、Watsonのモデルによる予測の正確性をフィードバックする際には、アプリはIBMのサーバーにユーザーの利用した写真を送ることになります。IBMにはクラウド利用に関するプライバシーポリシーはあります。また、Appleも新たなプライバシーキーの要求を加えるでしょう。

始める前に

Carthage

Watson Swift SDKの構築のために、Carthageという依存性管理ツールが必要です。

Carthage.pkgをCarthage releasesからインストールします。
あるいは、Carthage readmeを参照し、Homebrewを使ってインストールします。

IBM Sample Apps

IBM Watson Services for Core MLにアクセスし、「Getting Started」までスクロールダウンします。
中央のBegin with Watson Starters内のStart on GitHubをクリックします。
ZIPファイルをダウンロードして解凍したら、QuickstartWorkspace.xcworkspaceを開きます。
image.png

このワークスペースには、Core ML Vision SimpleとCore ML Vision Customの2つのアプリケーションが含まれています。Core ML Vision Simpleは一般的なDIYツールとプラントを分類するためにCore MLモデルを利用します。Core ML Vision CustomはWatsonサービスからダウンロードされたCore MLモデルを利用します。このモデルをこれからこのチュートリアルで構築します。

内包されているREADMEのRunning Core ML Vision Customまでスクロールダウンします。
ガイドに従ってWatson Studioにログインします。

Watson Studioにログイン

IBM Cloudアカウントを持っていなければ右欄の一番上のテキストボックスにメールアドレスを入力しアカウントを作成します。すでに、アカウントを持っていなければその下のガイドに従います。
image.png

ログインできると以下のような画面に移りました。
image.png

もともとIBMアカウントを持っていたから原本のガイドとここまでに至った道筋が違ったのか、欲しかったVisual Studioがないのでサービスを加えようと思う。
上部の「Services」から「Watson Services」を選択し、「Add Service」をクリック。
image.png

Visual Studioを探し「Add」をクリック。
image.png

Liteプランを選択し、Createをクリックすると、Confirm Creationが出てくるので、内容を確認してConfirmをクリックします。
image.png

Launch toolをクリックして、Visual Recognitionサービスを起動します。
image.png

Custom Object Classifierを作成

新規プロジェクトの作成

Custom欄のCreate Modelをクリックします。
image.png

プロジェクト名を入力してCreateをクリックします。
image.png

下のような画面が出てきます。
image.png

学習用データの追加

最初にダウンロードしたフォルダの「Training Images」フォルダに入ったデータを使って学習していきましょう。
ご自身のデータを用いても構いません。

右側の「1001」と書いてあるアイコンがクリックされていることを確認して、その下の枠の「browse」をクリックします。
image.png

Training Imagesフォルダ内の4つのZipファイルを選択し、Openをクリックします。
image.png

4つのアイテム全てのチェックボックスにチェックを入れ、3つの点のメニューをクリックして「Add selected to model」を選択します。
image.png

データをモデルに追加できました。
image.png

モデルを学習する

右側の「Train Model」をクリックします。
完了するまで5-10分ほどかかるということなので夕飯でも準備しながら待ちましょう。
image.png

学習が終わったら以下のようなメッセージが出ます。
このメッセージ上の「here」をクリックすると、モデルの概要を確認したりテストをしたりする画面に行くことができます。
image.png

アプリにモデルを加える

「here」を押したら現れたDefault Custom Modelのページにいき、「Associated Service」欄のインスタンス名をクリックします。
(もしも、リンクが消えてしまっていたら、上部のメニュ0から「Projects]->「Custom Core ML」->「Default Custom Model」でいけます。)
image.png

Custom Modelsの欄までスクロールダウンしてCopy model IDをクリックします。
image.png

ここで、序盤に「QuickstartWorkspace.xcworkspace」を開いたときに起動したXcodeに戻ります。
Core ML Vision Customアプリ内のCore ML Vision Customフォルダ内のImageClassificationViewController.swiftファイルを開きます。

「let classifierId =」の横に先ほどコピーしたmodel IDを貼り付けます。(本記事作成時だと33行目)

ページの一番上に戻り、タブを「Overview」から「Credentials」に動かします。
「View Credentials」を押して、その中の「api_key」をコピーしてImageClassificationViewController.swiftの「let apiKey =」のところに貼り付けます。(本記事作成時は32行目)
image.png

let versionの欄をアプリ作成時の日付に書き換えます。(34行目)

Watson Swift SDKを構築する

Watsonサービスを利用するためのフレームワークをアプリに加えます。
ターミナルを開きCore ML Vision Customまでディレクトリを移動させます。(Cartfileを含むもの)
carthage bootstrap --platform iOS コマンドを実行します。(5分ほどかかります)

やってみる

Core ML Vision Customのアプリ名を選択し、設定を変更します。
「Bundle Identifier」をオリジナルのものに変更します。
Signingからチームを選びテストを実行します。
image.png

おわり

自分のテスト実行環境(Signing)がうまくいかなかったのもあり、一部尻切れとんぼですが、ぜひみなさん最後までやってみてください。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.