いろんな最新画像分類モデルを比べてみた
画像をドロップするだけで機械学習モデルが試せるCoreML Modelで、最新(2021年発表)の画像分類モデルを比べてみました。
#モデルがいろいろありすぎて、どれを使えばいいのかわからない
機械学習モデルをアプリに取り込みたい。
できれば、自分のアプリのサービスに一番適したモデルを選びたい。
例えば、AppleがiOS用に公式に配布しているモデルは数年前のもので、数種類だが、
https://developer.apple.com/machine-learning/models/
iOS用にカスタム変換されたモデルがGitHubにもたくさんある。
さて、どのモデルをつかえばいいのか。
機械学習分野は研究が盛んで、カンファレンスごとにたくさんの最新構造を持ったモデルが発表されます。
【Paper with code より、画像分類のランキング】
#指標がいろいろある
ImageNetなどのデータセットで正解率をランキングにしていますが、
1000分類の画像の正解率で、かつトップは僅差であり、モデルのパラメーターも様々で、なかなか比べてもどれが本当に自分のアプリに適しているのか、わかりづらい気がします。
#CoreML-Modelsで、画像をモデルにドロップして比較
CoreML-Modelsには、最新のモデルを含む機械学習モデルファイルが複数共有されており、ファイルをダウンロードして画像をドロップするだけで、画像分類が試せます。
これなら、自分が使いたい画像データで色々なモデルがかんたんに比較できます。
また、モデルファイルを見れば、モデルサイズや入力サイズなどのパラメーターもわかりやすいです。
#Google-Research FaceBook-Research...いろんなモデルを比べてみた
CoreML-Modelsにあるモデルを比べてみました。
今回は以下の3つを比べてみます。
#####ResNet50
アップル公式配布にもあるモデル。2015年発表。サイズ102.6MB。
#####VisionTransformer
Googleが2021年に発表したモデル。サイズ347.5 MB。
ICLR論文:https://arxiv.org/abs/2010.11929
#####DeiT
FaceBookが2021年に発表したモデル。サイズ350.5 MB
ICML2021論文:https://arxiv.org/abs/2012.12877
#####Conformer
2021年発表。94.1 MB
ICCV21論文https://arxiv.org/abs/2105.03889
CoreML-ModelsからCoreMLモデルのダウンロードページと、オリジナルプロジェクトにリンクしています。
さあ決戦開始
model | label | confidence |
---|---|---|
ResNet50 | Egyptian cat | 47% |
VisionTransformer0 | Egyptian cat | 50% |
DeiT | Egyptian cat | 67% |
Conformer | Egyptian cat | 92% |
いきなり最小サイズのConformerがダークホースとして登場。
#####【データ2】
model | label | confidence |
---|---|---|
ResNet50 | strawberry | 99% |
VisionTransformer0 | strawberry | 99% |
DeiT | strawberry | 100% |
Conformer | strawberry | 100% |
これはどのモデルも余裕だったか。
#####【データ3】
model | label | confidence |
---|---|---|
ResNet50 | cicada(せみ) | 20% |
VisionTransformer0 | tricycle | 27% |
DeiT | mountain bike | 89% |
Conformer | plastic bag | 26% |
おっと、Deitがぶっちぎり。逆に健闘していたResnetとConformerは脱落。
比較の結論
単純にImageNet全体のスコアとモデル精度は比例しない。
画像に写っているオブジェクトのサイズや属性もいろいろだし。それぞれのモデルに得意不得意がありそう。
モデルサイズが大きければいいというものでもない。
ということで、自分がサービスがモデルに与えるデータで試してみて、モデルを選ぶのが良さそうです。
#一番適したモデルをかんたんにアプリに組みこもう
CoreML-Modelsやmmclassificationなどでモデルを比較して、自分のサービスにあったモデルを組み込みたいですね。
🐣
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com
Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。