KerasモデルのCoreMLへの変換

KerasモデルのCoreMLへの変換

◎環境:Python 3.6.7、TensorFlow 1.13.1、coremltools 2.1.0

概要

Kerasで作成したモデル(HDF5形式)を、AppleのCoreML(.mlmodel形式)で使用できるように変換する。

KerasモデルのHDF5形式での保存

Kerasモデルは、以下コードにてHDF5形式にエクスポートできる。

model = Sequential()
model.add()
... # いろいろ処理

model.save('./model.hdf5') # モデルをHDF5形式で保存(モデル構造/重み/学習時の設定を保存)

参考:Kerasモデルの保存には、上記の他に以下の2通りがある (ただし、CoreMLへ変換するには、上記の方法で保存する)

model.to_json() # モデルのアーキテクチャのみ保存
model.save_weights('./model_param.hdf5') # モデルの重みのみ保存

HDF5形式をCoreML(mlmodel)形式に変換

HDF5形式をCoreML(mlmodel)形式に変換するには、coremltoolsというツールを使用する。 coremltoolsは、pipにてインストール可能。

pip install coremltools

インストール後、以下コードを使用し、変換することができる。

import coremltools

strHDF5File = 'mymodel.hdf5'
strmlmodelFile = 'mymodel.mlmodel'

coreml_model = coremltools.converters.keras.convert(strHDF5File)
coreml_model.save(strmlmodelFile)

※追記(2019/6/6):mlmodelのファイル名は「model.mlmodel」だとxcodeでビルドエラーとなるため注意
 →mlmodelのファイル内には、モデル動作用のコードも含まれている