iPhone
 Computer >> コンピューター >  >> スマートフォン >> iPhone

Turi Createで犬種分類用Core MLモデルをトレーニングする完全ガイド

このチュートリアルでは、iOSやmacOSアプリで使用できるカスタム犬種分類Core MLモデルのトレーニング方法を学びます。このチュートリアルを完了すると、5つの異なる犬種を見分けられるCore MLモデルが完成します。

Appleが数年前に機械学習・AIスタートアップのTuriを2億ドル以上で買収したことを覚えている方もいるかもしれません。Turiは、短時間で高度な機械学習モデルを作成できる強力なツールを提供しています。

本チュートリアルでは、MacへのTuri Createのインストール、Pythonスクリプトの作成、そしてそのスクリプトを使ってXcodeプロジェクトに直接ドラッグ&ドロップできるCore MLモデルのトレーニング方法まで、一連の流れを解説します。

はじめに

機械学習の実践に入る前に、まずTuriとPythonのインストールを済ませておきましょう。もちろん、ハードウェアとソフトウェアがTuriの要件を満たしているかどうかの確認も必要です。

システム要件

他のソフトウェアと同様に、Turi Createにもいくつかの要件があります。詳細は公式GitHubページで確認できます。

Turi Createがサポートする環境:

  • macOS 10.12以降
  • Linux(glibc 2.12以降)
  • Windows 10(WSL経由)

Turi Createに必要な要件:

  • Python 2.7、3.5、3.6
  • x86_64アーキテクチャ
  • 4GB以上のRAM

要するに、Macがある程度新しいものであれば、Turi Createを実行できるはずです。別のOSでも進めることは可能ですが、一部の手順を変更する必要があるかもしれません。

インストール

Turi Createのインストールは非常に簡単です。特にコマンドラインに慣れている方なら手間取らないでしょう。より新しいバージョンのPythonを使用することもできますが、このチュートリアルではPython 2.7を使用します。

macOS MojaveにはPython 2.7がデフォルトでインストールされているため、バージョンを確認するだけでOKです。Macで「アプリケーション > ユーティリティ > ターミナル」を開くか、Command + Spaceのキーボードショートカットでターミナルを検索してください。

MacのPythonバージョンを確認するには、以下のコマンドを入力します:

$ python - version

これでPythonのバージョンが表示され、コンソールは次のような出力になります:

Turi Createで犬種分類用Core MLモデルをトレーニングする完全ガイド
図1: Pythonバージョンの確認

バージョンがPython 2.7でない場合、または何らかの理由でインストールされていない場合は、こちらのリンクからインストールしてください。私と同じような出力が得られれば、次へ進めます。

注意: Appleが推奨していることもあり、仮想マシンを使ってTuri Createをインストールする人もいます。しかし、ここではシンプルに進めるため、直接インストールします。

Turi Createをインストールするには、ターミナルウィンドウで以下のコマンドを実行するだけです:

$ pip install turicreate

これだけです!これでTuri CreateがMacに正常にインストールされ、使用準備が整いました。分類、検出、回帰など、さまざまな種類のモデルを構築できるようになります。

データセット

機械学習モデルには必ずデータセットが必要です。このチュートリアルでは、画像分類が必要なシンプルな犬種分類モデルのトレーニング方法を学びます。使用するデータは、スタンフォード大学のDogs Datasetから取得したものです。

Turiが事前分類された画像を認識できるようにするには、画像が表す内容に基づいて整理する必要があります。例えば、ゴールデンレトリバーの画像はすべて1つのフォルダに、ラブラドゥードルの画像はすべて別のフォルダに格納します。

簡単にするために、スタンフォードのデータセットにある数百種類の中から5つの犬種だけを使用しますが、好きなだけ多くの犬種を使うこともできます。今回は事前に整理済みのリポジトリを作成してあります。さらに多くの犬種を追加したい場合は、単純にフォルダを追加して任意の名前を付けるだけで構いません。

フォルダ構成

お気づきかもしれませんが、データセットの配置方法はモデルを正しくトレーニングするために極めて重要です。Turi Createがどの画像がどこにあるかを知る方法は他にありません。先に進む前に、フォルダを整理しておきましょう。

Turi Createで犬種分類用Core MLモデルをトレーニングする完全ガイド
図2: 初期フォルダ構成

この階層図を見ればすべて理解できるはずです。このチュートリアルを続ける前に、フォルダをこの順序で配置してください。名前を変更したり、別の方法で整理したりしたい場合は、その内容を必ずメモしておいてください。

分類器のトレーニング

セットアップが完了したら、いよいよこのチュートリアルの核心部分である分類器の実際のトレーニングに入ります。主にPythonで作業しますが、Pythonを使ったことがない方でも問題ありません。各ステップで丁寧に説明していきますので、質問があれば遠あれば遠慮なくコメント欄でお尋ねください。

Pythonファイルの作成

まず、コードを書く場所が必要です(もちろんPythonで)。AtomのようなPython対応エディタや、PyCharmのような統合開発環境をお持ちなら、それらを使ってdog_breeds.pyという空のファイルを作成できます。

私のように開発者らしい方法がお好みなら、ターミナルで同じことができます。imagesフォルダと同じ階層のml_classifierフォルダ内にこのファイルを作成し、以下のような階層構造にしてください:

Turi Createで犬種分類用Core MLモデルをトレーニングする完全ガイド
図3: Pythonファイルを含むフォルダ構成

新しいファイルを作成するには、まず対象ディレクトリに移動します:

$ cd ml_classifier

次に、dog_breeds.pyという名前の新規ファイルを作成します。

$ touch dog_breeds.py

これで完了です!フォルダ、ファイル、画像がすべて所定の場所に揃い、次のステップに進む準備ができました。ファイルを開くのにXcodeを使用するので、最新版がインストールされていることを確認してください。

データセット画像の読み込み

ついに、作成したPythonファイルを通じてTuriに必要な処理を指示する段階になりました。ファイルをダブルクリックすると、Xcodeがインストールされていればデフォルトで開きます。インストールしていない場合は、他のエディタやPython IDEを使用しても構いません。

1. フレームワークのインポート

import turicreate

ファイルの先頭で、Turi Createフレームワークをインポートする必要があります。必要に応じて、as <名前>を追加して参照名を作成することもできます。例えば、コード内でturicreatetcとして参照したい場合は、次のように書きます:

import turicreate as tc

こうすると、turicreateと書かずにtcと呼び出せます。このチュートリアルでは曖昧さを避けるため、完全な形でturicreateと記述します。

また、画像を分類するためには、フォルダ名やOS関連の処理も扱う必要があります。これにはosという別のPythonライブラリが必要です。以下を追加してインポートしましょう:

import os

2. 画像の読み込み

data = turicreate.image_analysis.load_images("images/")

ここでは、データセット内のすべての画像をdataという変数に格納しています。dog_breeds.pyファイルがimagesフォルダと同じディレクトリにあるため、パスとして単純に"images/"を指定できます。

3. ラベルの定義

Turi Createがすべての画像を読み込んだら、次はフォルダ名をラベル名に関連付ける必要があります。これらのラベル名は、iOSまたはmacOSアプリでCore MLモデルを使用する際に返される値になります。

data["label"] = data["path"].apply(lambda path: os.path.basename(os.path.dirname(path)))

これにより、すべてのフォルダ名を「ラベル」名にマッピングできます。例えば、「cocker_spaniel」フォルダ内のすべての画像が確かにコッカースパニエルであることをTuri Createに伝えます。

4. SFrameとして保存

SFrameをご存じない方のために簡単に説明すると、すべてのデータ(この場合は画像)とすべてのラベル(この場合は犬種)の辞書のようなものです。SFrameは以下のように保存します:

data.save("dog_classifier.sframe")

これにより、ラベル付き画像が保存され、次のステップで使用できるようになります。これは機械学業界で標準的なデータ型です。

トレーニングとテスト

Turi Createにラベル付き画像がすべて揃ったら、いよいよ最終段階に入り、モデルのトレーニングを行います。また、データを分割して80%をトレーニングに、20%をテスト用に確保する必要もあります。これにより、トレーニング完了後に手動でテストする手間が省けます。

1. SFrameの読み込み

まず、前のステップで作成したSFrameを読み込みます。これは後ほどテストデータとトレーニングデータに分割する際に使用します。

data = turicreate.SFrame("dog_classifier.sframe")

これで、前のステップで保存したSFrameがdata変数(型はSFrame)に割り当てられます。次に、データをテスト用とトレーニング用に分割します。前述の通り、80:20の比率で分割します。

2. データの分割

データを分割しましょう。SFrameのコードの後に、以下を追加します:

testing, training = data.random_split(0.8)

このコードはデータをランダムに80対20で分割し、それぞれtestingtrainingという2つの変数に割り当てます。これにより、Turiが自動的にモデルをテストしてくれるので、テスト画像を手動で用意したりアプリを作成したりする必要がなくなります。調整が必要な場合でも、完全に実装してから修正するのではなく、Pythonファイル内で直接行えます。

3. トレーニング、テスト、エクスポート

努力がついに実を結ぶ瞬間です!このPythonコードの行で、使用したいアーキテクチャを指定しながら、Turi Createにモデルのトレーニングを指示します。

classifier = turicreate.image_classifier.create(testing, target="label", model="resnet-50")

ここでは、先ほど指定したtestingデータを使用し、以前のフォルダ構造に基づいてlabelsを予測させるとともに、最も精度の高い機械学習モデルアーキテクチャの一つであるresnet-50を使用するようTuriに指示しています。

テストデータを使用してモデルの精度を確認するには、以下を追加します:

testing = classifier.evaluate(training)print testing["accuracy"]

これにより、指定したtrainingデータが使用され、テスト後の結果が(お察しの通り)testingという変数に格納されます。参考までに、精度が出力されますが、Turi CreateのAPIをしっかり学べば、他の情報も出力できます。

最後に、わかりやすい名前を付けた上で、このワンライナーでモデルをファイルシステムに保存できます:

classifier.save("dog_classifier.model")classifier.export_coreml("dog_classifier.mlmodel")

もちろん、他の形式でモデルを保存することもできますが、この例ではCore MLモデルとして保存しました。

実行と出力

iOS開発者の皆さん、これは自動的にコンパイルされ続けてエラーを吐くXcodeプロジェクトではありません。今書いたコードを実行するには、ターミナル経由で行う必要があります。

Pythonファイルの実行

Pythonファイルの実行は簡単です!正しいディレクトリにいることを確認し、ターミナルウィンドウで以下を入力するだけです:

python dog_breeds.py

出力結果

数分間のトレーニング後、imagesフォルダとdog_breeds.pyファイルに加えて、SFrame、モデルフォルダ、そして.mlmodelファイル(Core MLモデル!)が生成されます。

ターミナルウィンドウにも出力が表示され、次のような内容になります:

Turi Createで犬種分類用Core MLモデルをトレーニングする完全ガイド
図4: Python実行後の出力

これには、トレーニング情報やトレーニング精度、処理された画像の枚数などの有用な情報が含まれており、モデルを実際に使わなくても分析することができます。

まとめ

このチュートリアルを楽しんでいただけたなら幸いです!次のステップとして、iOSアプリでCore MLモデルを使用する方法を学びたい方は、別のチュートリアル「Get Started With Image Recognition in Core ML」をご覧ください。

このチュートリアルでは、作成したdog_classifier.mlmodelモデルを実際のiOSアプリに組み込む方法を紹介しています。ライブ動画フィードを解析し、個々のフレームを画像分類に使用する方法も学べます。

このチュートリアルに関するご質問やコメントがあれば、下のコメント欄でお気軽にお寄せください!フィードバック、質問、そしてこのチュートリアルで得た知識をどのように活用されたか、ぜひお聞かせください。

  1. パスワードを指定してLinuxユーザーを自動作成する方法

    パスワード付きでLinuxユーザーを自動作成するには バッチ処理(完全自動)でLinuxのユーザーアカウントをまとめて作成しなければならない場面は少なくありません。しかし、「新しいユーザーのパスワードを手動入力せずに設定するにはどうすればいいのか」と悩む初心者の方は多いようです。 実は、useraddコマンドはパスワードを入力パラメータとして受け取ることができます。ただし、そのパスワードは暗号化されている必要がある点に注意してください。 つまり、パスワード付きでLinuxユーザーアカウントを作成するには、次のコマンドが役立ちます。 useradd -m -p 暗号化済みパスワード ユーザー名

  2. Excelでピボットテーブルのデータモデルを作成する方法(6つの簡単なステップ)

    これまで当サイトでは、単一のデータテーブルから生成されるピボットテーブルに焦点を当ててきました。しかし、データモデル機能はピボットテーブルやピボットグラフにさらなる利点をもたらします。データモデルを活用すれば、複数のテーブルのデータを1つのピボットテーブルで扱えるようになります。そのためには、データ同士を結びつけるための「テーブルリレーションシップ」を1つ以上作成する必要があります。データモデルはExcel 2013で導入された機能です。この記事では、Excelでピボットテーブルのデータモデルを作成する6つのステップをわかりやすく解説します。 Excelでピボットテーブルのデータモデルを作成す