Core ML ToolsのチュートリアルをGoogle Colabで簡単に試す方法（環境構築不要）

[Core ML Toolsのドキュメントサイト](https://coremltools.readme.io/docs/what-are-coreml-tools)にある、チュートリアルであるQuick StartをGoogle Colabで試してみたので、その手順を書きます。環境構築が不要で、なるべくサクッと実行できる手順を書いています。

対象のサイトはこちらです。
[Apple Core ML Tools Quick Start](https://coremltools.readme.io/docs/introductory-quickstart)

###　手順

**1.Google Colabを起動する**
※Colab = Colaboratoryの略です

Google Colaboratoryのサイトにアクセスします。
[Google Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/8b9c30bf-a605-ad5f-c809-64ceb53d0083.png)

**2. ファイル > ノートブックを新規作成 を選択する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/6b7ee602-5b22-07b9-1ba0-d577bb7a6872.png)

こんな感じでノートブックができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/e9799d56-1686-dcef-5e75-8ee0398ea6e5.png)

ここから先はGitHub gistに保存したものがあるので、こちらをみながらやるとわかりやすいです。
https://gist.github.com/TokyoYoshida/4eb34070911a3cfad1ddd34e400abb91

**3. TensorFlowのバージョンを2系にする**

ノートブックに書いていきます。

次のように書くとTensorFlowのバージョンを設定できます。

```python:notebook
%tensorflow_version 2.x
```

バージョンの確認をしたいときは、次のようにします。

```python:notebook
!pip freeze | grep -i -e tensorflow
# 出力：
# tensorflow==2.3.0
# tensorflow-addons==0.8.3
# tensorflow-datasets==2.1.0
# tensorflow-estimator==2.3.0
# tensorflow-gcs-config==2.3.0
# tensorflow-hub==0.9.0
# tensorflow-metadata==0.24.0
# tensorflow-privacy==0.2.2
# tensorflow-probability==0.11.0
```

**4. Quick Startの内容をノートブックに移す**

あとは、Quick Startの内容を書いていくだけです。

```python:notebook
import tensorflow as tf

keras_model = tf.keras.applications.MobileNetV2(
    weights="imagenet", 
    input_shape=(224, 224, 3,),
    classes=1000,
)
```
・
（続く）
・


なお、「Make Predictions」というセクションでは、ノートブック上で推論を行いますが、やろうとするとこんなエラーがでます。
`Exception: Model prediction is only supported on macOS version 10.13 or later.`
これは諦めましょう。

**5. modelを保存してダウンロードする**

Quick Startの最後のセクションでモデルを保存しています。

```python:notebook
# Save model
model.save("MobileNetV2.mlmodel")
                  
# Load a saved model
loaded_model = ct.models.MLModel("MobileNetV2.mlmodel")
```

保存したら、左側にあるメニューからフォルダのマークを選ぶと、フォルダの内容が見られるようになるので、出力したMobileNetV2.mlmodelを選択し、横にあるメニューからダウンロードを選択してダウンロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/55a37827-679e-0e96-5cfe-ab133d80f6e0.png)

**5. MLModelCameraをダウンロードする**

CoreMLのモデルをiOS上で動作させるのは、MLModelCameraというOSSを使うと簡単です。
モデルファイルをDrag & Dropしてビルドするだけで、あとは自動的に読み込んで推論してくれます。

こちらにあります。
[MLModelCamera](https://github.com/shu223/MLModelCamera)

このリポジトリをCloneしてプロジェクトをXcodeに読み込みます。

**6. プロジェクトのmodelsの下にMobileNetV2.mlmodelをDrag & Dropする**

すでに、MobileNetV2Int8LUT.mlmodelという同じようなモデルがありますが気にせずドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/4b655778-d1ec-f16d-df39-c08db5b8f468.png)

**7. ビルドして実行する**

### 仕上がり

うまく推論しているようでした。
<img width="300px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/0af6b306-05e3-ac3c-ba4e-856a2fcdbb27.png">

ちょっとだけ障子にも見えたんですね🙃

NoteではiOS開発について定期的に発信していますので、フォローしていただけますと幸いです。
https://note.com/tokyoyoshida

Twitterでは簡単なtipsを発信しています。
https://twitter.com/jugemjugemjugem