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の画像分類はそもそも転移学習を前提としている。

https://github.com/apple/turicreate/blob/master/userguide/image_classifier/how-it-works.md#transfer-learning

ここから先は

851字
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/