Turi CreateでCreate MLと同等にサイズの小さいモデルを作成する
ご存知の通り、Create MLで画像分類(Image Classification)モデルを作成すると、サイズが非常に小さい。なんと約17kB(※識別するクラス数で変わる)。これは転移学習を行っていて、しかもその特徴抽出器のモデルとパラメータは「Vision Feature Print」としてiOSに標準で組み込まれているため、新たに生成するモデル部分は分類器のパラメータのみ保持していればよい、という理由による。(詳しくは拙著「Core ML Tools実践入門」か下記記事を参照)
一方、Create MLの上位互換(というか下回り?)的位置付けのTuri Createで画像分類モデルを(本家のサンプルに従って)生成すると、なんと94.2MBにもなる。
## Turi Createのモデルサイズが大きくなってしまう理由
先程のサンプルにおいて、学習を行うコードはこちら:
model = tc.image_classifier.create(train_data, target='label')
これだけで学習が実行される。
で、モデルを保存しようとするところで、
# Turi Createモデルの保存
model.save('./ImageClassification.model')
# Core ML形式のモデルの保存
model.export_coreml('./ImageClassification.mlmodel')
こんなログが出てきた:
Downloading https://docs-assets.developer.apple.com/turicreate/models/resnet-50-TuriCreate-6.0.h5
Download completed: /var/folders/1d/1nblw12s25bbn1n1d98fm8q00000gn/T/model_cache/resnet-50-TuriCreate-6.0.h5
Downloading https://docs-assets.developer.apple.com/turicreate/models/resnet-50-TuriCreate-6.0.mlmodel
Download completed: /var/folders/1d/1nblw12s25bbn1n1d98fm8q00000gn/T/model_cache/resnet-50-TuriCreate-6.0.mlmodel
ResNetをダウンロードしてきている(ので、この保存処理は時間もかかる)。特徴抽出部分として、ResNet50を用いているらしい。そりゃ重いわけだ。
## Turi Createと転移学習
Turi Createの画像分類はそもそも転移学習を前提としている。
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/