記事

トレーニング済みモデルのCore MLへの変換

他社製の機械学習ツールで作成したトレーニング済みのモデルを、Core MLのモデル形式に変換します。

概要

サポートされる他社製の機械学習フレームワークを使用してモデルの作成とトレーニングを行った場合、Core ML Toolsまたは他社製変換ツール(MXNetコンバータ(英語)TensorFlowコンバータ(英語)など)を使って、モデルをCore MLのモデル形式に変換できます。そうでない場合は、独自の変換ツールを作成する必要があります。

Core ML Toolsの使用

Core ML Tools(英語)は、様々なモデルタイプをCore MLのモデル形式に変換するPythonパッケージです。下の表1は、サポートされるモデルと他社製フレームワークの一覧です。

表1

Core ML Toolでサポートされるモデルと他社製フレームワーク

モデルタイプ

サポートされるモデル

サポートされるフレームワーク

ニューラルネットワーク

フィードフォワード、コンボリューショナル、リカレント

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メソッドに渡します。

import coremltools
coreml_model = coremltools.converters.caffe.convert('my_caffe_model.caffemodel')

その結果生成されるモデルを、Core MLのモデル形式で保存します。

coremltools.utils.save_spec(coreml_model, 'my_model.mlmodel')

モデルによって、入力、出力、ラベルをアップデートしなければならない場合や、画像の名前、種類、形式を宣言しなければならない場合があります。利用可能なオプションはツールによって異なるので、変換ツールに詳しいドキュメントが付属しています。Core ML Toolsについての詳細は、パッケージのドキュメント(英語)を参照してください。

独自の変換ツールの作成(オプション)

上記のツールでサポートされていない形式のモデルを変換する必要がある場合は、独自の変換ツールを作成できます。

独自の変換ツールの作成には、モデルの入力、出力、アーキテクチャの表現を、Core MLのモデル形式へ訳す作業を伴います。これはモデルアーキテクチャの各レイヤを定義し、各レイヤとほかのレイヤとのつながりを定義することにより行います。例として、Core ML Tools(英語)で提供される変換ツールを使います。他社製フレームワークの様々なモデルタイプがどのようにCore MLのモデル形式に変換されるかがわかります。

関連項目

最初のステップ

Core MLモデルの入手

Appで使用するCore MLモデルを入手します。

Core MLモデルをAppに組み込む(英語)

Appにシンプルなモデルを追加し、モデルに入力データを渡し、モデルの予測を処理します。