【機械学習】Core MLモデルをXcodeで実装してiPhoneで画像分類を試してみた

環境メモ
⭐️Mac OS Mojave バージョン10.14
⭐️Xcode11.2
⭐️iPhone7(IOS 12.2)


↓↓実際に動かした動画です。
https://twitter.com/nonnonkapibara/status/1213543031627907073
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">💡機械学習💡<br>📲iPhoneで🐧カメラロールから😺動物の画像を分類して、何の動物かを推測してみた😍<br>Appleが提供している学習済みのCore MLモデルを試してみたよぉ😊<a href="https://twitter.com/hashtag/CoreML%E3%83%A2%E3%83%87%E3%83%AB?src=hash&amp;ref_src=twsrc%5Etfw">#CoreMLモデル</a> <a href="https://twitter.com/hashtag/Xcode?src=hash&amp;ref_src=twsrc%5Etfw">#Xcode</a><a href="https://t.co/oN4VANQoOk">https://t.co/oN4VANQoOk</a> <a href="https://t.co/1Ip586HniD">pic.twitter.com/1Ip586HniD</a></p>&mdash; non (@nonnonkapibara) <a href="https://twitter.com/nonnonkapibara/status/1213543031627907073?ref_src=twsrc%5Etfw">January 4, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# Core MLとは
Appleが提供している学習済みのモデル。機械学習の「推論」を行うことができるフレームワーク。
iPhoneやiPadなどApple製品で利用できます。


# 試したこと

iPhoneで、カメラロールから、動物の画像を分類して、何の動物かを推測してみた。

<img width="419" alt="スクリーンショット 2020-01-05 4.25.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/e8ab7434-5bac-c74e-0dfb-7fc31d224eb1.png">


カメラロールから、動物の画像を選択する
<img width="412" alt="スクリーンショット 2020-01-05 4.01.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/98dd6e2a-a254-65da-5ad6-c345154a3cda.png">

ポメラニアン99%
<img width="447" alt="スクリーンショット 2020-01-05 4.03.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/76ffc9cc-3b49-2cff-29ef-9bde9cfb49ac.png">


猫ちゃん
エジプトの家猫 96%
tabby cat 3%
<img width="453" alt="スクリーンショット 2020-01-05 4.03.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/f17b37a4-50a1-ade9-50e8-f8b5c367bc63.png">

ペンギン99%
<img width="406" alt="スクリーンショット 2020-01-05 4.02.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/2e02ebd3-b2fe-7e4d-9220-19d7f0a6d951.png">

カピバラさんは、学習されてないのかも。。ToT
<img width="453" alt="スクリーンショット 2020-01-05 4.04.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/d361acef-82ce-b00e-cc3b-026796f2471b.png">


# Core MLモデルを入手する

Appleが提供している学習済みのCore MLモデルを入手する
https://developer.apple.com/jp/machine-learning/models/
<img width="1145" alt="001.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/4280d771-27db-4b55-2834-a2d5d0fa6f29.png">


今回は、「SqueezeNet.mlmodel」を使ってみました。
<img width="1113" alt="002.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/72a0cb26-4871-d228-94ad-8307e498a32d.png">

<img width="664" alt="003.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/e0de5a3d-aa25-8a54-007d-ac66ca7b0ae8.png">

<img width="388" alt="004.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/ebe14485-3ab0-1aea-1369-f8060fcff4d9.png">

# Xcodeで新規プロジェクト
<img width="455" alt="005.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/96f0eb0a-0673-b580-dc50-56a80ef564ba.png">

今回は、こんな感じで、カメラロールから画像を参照するプロジェクトを作成
<img width="733" alt="006.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/3be07da6-9754-52a3-432d-7909a043b751.png">

Xcodeに、「SqueezeNet.mlmodel」をインポートする
<img width="1130" alt="007.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/f188c81a-15b7-5aeb-4d79-e9ce7a3ed90b.png">

コーディングで、モデルを定義すればOK

    var model = try! VNCoreMLModel(for: SqueezeNet().model)



※コーディングの量が多かったので、割愛してます。