|
iPhoneなどのiOS12.0以降のプラットフォームで、Siri、カメラ、QuickTypeなど、様々なApple製品で用いられている機械学習フレームワーク、Core ML 2を使用できるようになりました。以下の説明はAppleの受け売りです。Apple Developerの公式coreML サイトです。
Core ML 2を使用すると、幅広い種類の機械学習モデルをAppに組み込むことができます。30種類以上のレイヤを持つ大規模なディープラーニングに加えて、ツリーアンサンブル、SVM、一般化線形モデルなどの標準的なモデルにも対応しています。Core MLはMetalやAccelerateといったローレベルのテクノロジー上に築かれているため、CPUとGPUをシームレスに活用し、最大限のパフォーマンスと効率を発揮することができます。機械学習モデルはデバイス上で実行できるため、分析のためにデータを外部に送信する必要がありません。
この新しいフレームワークを使用すると、機械学習の専門知識がなくても簡単に機械学習モデルを構築できます。Create MLはSwift言語のおかげで親しみやすく使いやすいフレームワークとなっており、Xcode 10のPlaygroundに統合されているため、モデル作成ワークフローをリアルタイムで確認することができます。数行のSwiftコードを追加するだけで、VisionやNatural Languageのテクノロジーを活用することができ、これにより、リグレッション、画像分類、単語のタグ付け、文の分類などAppleのエコシステム向けに最適化された様々なタスクのモデルを作成することができます。また、手持ちのMacを使用して、Appleのモデルを自分のカスタムデータでトレーニングできるため、専用のサーバは不要です。
Visionフレームワークでは、顔認識や、テキスト検出、バーコード認識、特徴追跡などを画像解析できるフレームワークです。また、CoreMLのモデルを用いて、Visionのフレームワークで画像の識別や、オブジェクト検出などを実行することもできます。
Natural Languageフレームワークは、自然言語のテキストを分析し、その言語特有のメタデータを推定するために使用する新しいフレームワークです。このフレームワークをCreate MLと組み合わせることで、カスタムのNLPモデルをトレーニングしてデプロイすることができます。
このページでは、iPhone向けの機械学習アプリを作成することを試みます。使用したMacでは、環境はOS10.14.1、Xcode 10.1、Swift 4.2, iOS 12.1 です。Xcode の簡単な使い方については、このページを参照してください。個人的な利用でも、Apple ID を持っているのであれば、iOS端末にアプリのインストールができます。ただし、公式ページで登録しない場合、iPhoneやiPodなどにインストールしたアプリは、1週間で有効期限が切れます。1週間以上経過したのちに当該アプリを使用したいときは、再度インストールし直してください。
Last updated: 2019.11.27
Vision+coreMLのアプリの作成 |
コンピュータビジョンの機械学習機能を容易にAppに組み込むことができます。フェイストラッキング、顔検出、ランドマーク、テキスト検出、矩形検出、バーコード検出、オブジェクトトラッキング、画像レジストレーションなどの機能に対応しています。
以下のような表示の分類が得られます。
写真で撮影されたイメージを分類するプログラムを取り上げてみます。Appleが提供しているサンプルコードを使いましょう。"Classifying Images with Vision and Core ML"というタイトルのDeveloper ページに行きます。"Downloads"をクリックして、サンプルコードをダウンロードしてください。"ClassifyingImagesWithVisionAndCoreML"というフォルダー名のzipファイルが解凍・展開されます。
このフォルダーを適当なディレクトリに移動して、'Vision+ML Example.xcodeproj'をダブルクリックして、Xcode を起動します。コードの説明は、READE.md に書かれています。Vision フレームワークとCoreML フレームワークを利用して、写真に映った映像の分類を行うプログラムです。分類に使用されているモデルは、MobileNet.mlmodel です。これは、TensorFlowやCaffeなどで使用されているニューラルネットワークの一つである MobileNetをCoreML向けにコード変換したものです。サイズは約17MBです。
左サイドにあるリストの一番上のファイルをクリックして、デバッグ用の設定画面を出します。Team の欄に自身のApple ID (iCloud) を書き入れてください。Bundle Identifier はそのままで大丈夫だと思いますが、エラーが出たら、自身のApple ID を書き入れてください。
iPhone (iPad)とMac本体をusb接続してください。メニューバーにあるXcode ボタンをクリックして「Preferences…」を開きます。開かれたダイアグラムのタブを「Accounts」にし、左下の「+」をクリックして「 Apple ID」を選択します。登録したApple IDとパスワードを入力して、「Next」をクリックします。Team と表示されているものがXcodeで使うTeam名になります。右下の「Manage Certificates…」をクリックすると、ダイアログが出てきてその左下にある「+」をクリックします。「iOS Development」を選択して証明書を作成します。
シミュレーションとして、自身のiPhone を選択して、3角形をクリックして、コンパイルをします。ここで、Mac側とiPhone側に信頼するかどうかを尋ねるダイアログがでるので、それらを了承します。エラーがなければ、しばらくすると、実機の画面にアプリが登録されます。Macでワーニングが出た場合は、書かれているようにします。iPhoneの「設定」「一般」から「デバイス管理」に入り、登録した「Apple ID」を信頼する、をクリックします。もう一度、シミュレーションを実行すると、成功すると思います。
iPhone に登録されたアプリ名は'Vision+ML EX.."となっていますので、このアプリをクリックします。表示されたカメラのアイコンをクリックして、カメラを被写体に向けて撮って、それを分類できます。上の写真のように表示されますので、試みてください。
ARKitを使用してリアルタイムでVisionを使用するアプリの作成 |
Appleが提供しているサンプルコードを使いましょう。"Using Vision in Real Time with ARKit"というタイトルのDeveloper ページに行きます。"Downloads"をクリックして、サンプルコードをダウンロードしてください。 "UsingVisionInRealTimeWithARKit"というフォルダー名のzipファイルが解凍・展開されます。
このフォルダーを適当なディレクトリに移動して、'ARKitVision.xcodeproj'をダブルクリックして、Xcode を起動します。この後の手順は、上記のVision+coreMLのアプリの作成ケースと同じです。
このサンプルappはSpriteKitで表示された画像をARKitを使用して物体検出をするコードになっています。物体検出のモデルはCore ML classification モデルを使います。インストールされているCNNモデルはinception-v3です。
アプリをタッチして開いて、カメラを検出したい被写体に向けてください。スクリーンの左上方に検出された物体の名称が表示されます。