他社製の機械学習ツールで作成したトレーニング済みのモデルを、Core MLのモデル形式に変換します。
フレームワーク
- Core ML
概要
サポートされる他社製の機械学習フレームワークを使用してモデルの作成とトレーニングを行った場合、Core ML Toolsまたは他社製変換ツール(MXNetコンバータ(英語)、TensorFlowコンバータ(英語)など)を使って、モデルをCore MLのモデル形式に変換できます。そうでない場合は、独自の変換ツールを作成する必要があります。
Core ML Toolsの使用
Core ML Tools(英語)は、さまざまなモデルタイプをCore MLのモデル形式に変換するPythonパッケージです。下の表1は、サポートされるモデルと他社製フレームワークの一覧です。
モデルタイプ |
サポートされるモデル |
サポートされるフレームワーク |
---|---|---|
ニューラルネットワーク |
フィードフォワード、コンボリューショナル、リカレント |
Caffe v1 Keras 1.2.2+ |
ツリーアンサンブル |
ランダムフォレスト、ブーステッドツリー、デシジョンツリー |
scikit-learn 0.18 XGBoost 0.6 |
サポートベクターマシン |
スカラー回帰、多分類 |
scikit-learn 0.18 LIBSVM 3.22 |
一般線形モデル |
線形回帰、ロジスティック回帰 |
scikit-learn 0.18 |
特徴量エンジニアリング |
疎ベクトル化、密ベクトル化、分類別処理 |
scikit-learn 0.18 |
パイプラインモデル |
連続連鎖モデル |
scikit-learn 0.18 |
モデルの変換
モデルの他社製フレームワークに対応するCore MLコンバータを使って、モデルを変換します。コンバータのconvertメソッドを呼び出し、その結果生成されるモデルをCore MLのモデル形式(.mlmodel)で保存します。
たとえば、Caffeを使って作成されたモデルの場合、Caffeモデル(.caffemodel)をcoremltools.converters.caffe.convertメソッドに渡します。
その結果生成されるモデルを、Core MLのモデル形式で保存します。
モデルによって、入力、出力、ラベルをアップデートしなければならない場合や、画像の名前、種類、形式を宣言しなければならない場合があります。利用可能なオプションはツールによって異なるので、変換ツールに詳しいドキュメントが付属しています。Core ML Toolsについての詳細は、パッケージのドキュメント(英語)を参照してください。
独自の変換ツールの作成(オプション)
上記のツールでサポートされていない形式のモデルを変換する必要がある場合は、独自の変換ツールを作成できます。
独自の変換ツールの作成には、モデルの入力、出力、アーキテクチャの表現を、Core MLのモデル形式へ訳す作業を伴います。これはモデルアーキテクチャの各レイヤを定義し、各レイヤとほかのレイヤとのつながりを定義することにより行います。例として、Core ML Tools(英語)で提供される変換ツールを使います。他社製フレームワークのさまざまなモデルタイプがどのようにCore MLのモデル形式に変換されるかがわかります。
メモ
Core MLモデル形式は、プロトコルバッファファイルのセットによって定義されます。詳しくは、Core MLモデルの仕様(英語)に記載されています。