機械学習は最新モデルがどんどん発表されるけど、どれが一番いいの？　CoreML-Modelsでかんたんにくらべられるので、頂上決戦してみた

# いろんな最新画像分類モデルを比べてみた
画像をドロップするだけで機械学習モデルが試せるCoreML Modelで、最新（２０２１年発表）の画像分類モデルを比べてみました。

<img width="1275" alt="スクリーンショット 2022-01-07 12 59 04" src="https://user-images.githubusercontent.com/23278992/148489818-71ea2e8f-ff3a-413b-b822-f46ab1f6180b.png">


#モデルがいろいろありすぎて、どれを使えばいいのかわからない
機械学習モデルをアプリに取り込みたい。
できれば、自分のアプリのサービスに一番適したモデルを選びたい。
例えば、[AppleがiOS用に公式に配布しているモデル](https://developer.apple.com/machine-learning/models/)は数年前のもので、数種類だが、

https://developer.apple.com/machine-learning/models/
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/4cd78368-2e73-ab8b-693c-346d84020f98.png width=300>

**iOS用にカスタム変換されたモデルがGitHubにもたくさんある。**

https://github.com/john-rocky/CoreML-Models

さて、どのモデルをつかえばいいのか。

機械学習分野は研究が盛んで、カンファレンスごとにたくさんの最新構造を持ったモデルが発表されます。

【Paper with code より、画像分類のランキング】
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/586678da-2832-bc5a-4e2f-f4e8de8f7c88.png width=400>

#指標がいろいろある

ImageNetなどのデータセットで正解率をランキングにしていますが、
１０００分類の画像の正解率で、かつトップは僅差であり、モデルのパラメーターも様々で、なかなか比べてもどれが本当に自分のアプリに適しているのか、わかりづらい気がします。

#[**CoreML-Models**](https://github.com/john-rocky/CoreML-Models)で、画像をモデルにドロップして比較

[**CoreML-Models**](https://github.com/john-rocky/CoreML-Models)には、最新のモデルを含む機械学習モデルファイルが複数共有されており、ファイルをダウンロードして画像をドロップするだけで、画像分類が試せます。

[**【CoreML-Models】**](https://github.com/john-rocky/CoreML-Models)
![スクリーンショット 2022-01-07 12.36.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/8df2509f-a0cd-31de-24e2-4a9a1724a97d.png)

https://github.com/john-rocky/CoreML-Models

これなら、自分が使いたい画像データで色々なモデルがかんたんに比較できます。
また、モデルファイルを見れば、モデルサイズや入力サイズなどのパラメーターもわかりやすいです。

#Google-Research FaceBook-Research...いろんなモデルを比べてみた

CoreML-Modelsにあるモデルを比べてみました。
今回は以下の３つを比べてみます。

#####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**](https://github.com/john-rocky/CoreML-Models)からCoreMLモデルのダウンロードページと、オリジナルプロジェクトにリンクしています。

**さあ決戦開始**

#####【データ１】
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/03cee1bb-ed74-d610-7f84-715c28acac60.jpeg width=300>

|model|label|confidence|
|-|-|-|
|ResNet50|Egyptian cat|47%|
|VisionTransformer0|Egyptian cat|50%|
|DeiT|Egyptian cat|67%|
|Conformer|Egyptian cat|92%|

いきなり最小サイズのConformerがダークホースとして登場。

#####【データ２】

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/35c0f031-03ca-d4b7-cadc-22d56f6fedc9.jpeg width=300>

|model|label|confidence|
|-|-|-|
|ResNet50|strawberry|99%|
|VisionTransformer0|strawberry|99%|
|DeiT|strawberry|100%|
|Conformer|strawberry|100%|

これはどのモデルも余裕だったか。

#####【データ３】

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/99d4725c-eeb4-dc84-348a-158ace3a7e98.jpeg width=300>

|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関連の情報を発信しています。

[Twitter](https://twitter.com/JackdeS11)
[Medium](https://medium.com/@rockyshikoku)