【機械学習】Python（Anaconda）とJupyter NotebookでTuri CreateモデルとCore ML形式のモデルを作成する

環境メモ
⭐️Mac OS Mojave バージョン10.14


Python（Anaconda）とJupyter NotebookとTuri Createで、犬と猫の画像分類モデルを学習させ
Turi CreateモデルとCore ML形式のモデルを作成する

事前に以下の内容を実施する
【機械学習】Anacondaのインストール
https://qiita.com/nonkapibara/items/1333a1b1b31259c3dd6c

【機械学習】Jupyter Notebookのインストール
https://qiita.com/nonkapibara/items/64251fb68ebf8cc479af

【機械学習】Turi Createのインストール
https://qiita.com/nonkapibara/items/2330102717af9367de77

# 完成内容
Turi Createモデル「ImageClassification.model」
Core ML形式「ImageCatDog.mlmodel」
を作成する

↓↓↓実際に動かした動画
https://twitter.com/nonnonkapibara/status/1213889802119999488
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">👯‍♀️機械学習👯‍♀️<br>Python（Anaconda）とJupyter NotebookとTuri Createで、<br>😺猫と犬の画像12,500枚の画像分類モデルを学習させて📲iPhoneのカメラロールから犬と猫の画像を分類して推測してみた😊<a href="https://twitter.com/hashtag/Python?src=hash&amp;ref_src=twsrc%5Etfw">#Python</a> <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://t.co/vf4pH0eOqa">https://t.co/vf4pH0eOqa</a> <a href="https://t.co/FDp1wPmuWR">pic.twitter.com/FDp1wPmuWR</a></p>&mdash; non (@nonnonkapibara) <a href="https://twitter.com/nonnonkapibara/status/1213889802119999488?ref_src=twsrc%5Etfw">January 5, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>




# データセットの準備
猫と犬の画像が12,500枚あるデータサンプルデータ
「Kaggle Cats and Dogs Dataset」を使います。
まず、ダウンロードします。

Kaggle Cats and Dogs Dataset
https://www.microsoft.com/en-us/download/details.aspx?id=54765

<img width="834" alt="033.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/6ace27c4-9e9f-1f63-7355-bd638fb56aee.png">

ダウンロードしたら、PetImagesフォルダの中に「Cat」と「Dog」があるので、これを使います。
<img width="348" alt="スクリーンショット 2020-01-05 20.21.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/17eab492-1a9d-6e14-e220-41d0c21005a9.png">

<img width="379" alt="スクリーンショット 2020-01-06 1.43.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/d3e99c7c-f7ca-0b96-224f-5fb85d80dd69.png">

# Jupiter Notebookの起動
Jupiter Notebookの起動をする
前提として、Anacondaで仮想環境をOpen Terminalを選択し、ターミナルを起動する

```
jupyter notebook
```

<img width="406" alt="030  起動.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/7c44f873-3985-29ec-6c42-efd2d1f1f85c.png">

WebブラウザでJupiter Notebookが起動する
http://localhost:8888/tree

<img width="1138" alt="031.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/23a59543-b576-c061-13c2-a724b6153a5e.png">


# ノートブックの作成
モデルを保存するフォルダまで移動する。
ここでは、「catdogmodel」フォルダを作成したので、そこまで移動。
<img width="1179" alt="スクリーンショット 2020-01-05 20.37.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/8aa6a2a1-79de-1cc1-ee99-05b749b2dd02.png">

Newを選択し、Python３を選択。
<img width="1198" alt="スクリーンショット 2020-01-05 20.39.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/c4a1cd1e-4710-9f3f-67ee-7a3e6c2199c9.png">

ノートブックの名前がデフォルト名になってるのでリネームする
<img width="1189" alt="スクリーンショット 2020-01-05 20.41.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/30a16fd6-9086-95fe-06bb-91b497c23d78.png">

<img width="589" alt="スクリーンショット 2020-01-05 20.42.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/8218739f-4e50-7036-ca8c-2368fb11c4bb.png">

<img width="696" alt="スクリーンショット 2020-01-05 20.43.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/66861a49-7051-f292-5f54-8c00e8f6303d.png">

ここでは、名前を「catdog」にしました。
<img width="736" alt="スクリーンショット 2020-01-05 20.44.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/2010eaa5-c489-f03f-4dc5-8d89961c3cba.png">


# 犬と猫の画像分類モデルを作成する

１.データセットの読み込みを実装する
<img width="1159" alt="スクリーンショット 2020-01-05 23.41.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/931c5489-aeaf-f7e5-bc60-19e882f11f41.png">

2.モデルの学習をする
<img width="1182" alt="スクリーンショット 2020-01-05 23.42.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/77c4a069-c32a-c5f9-54b0-cf81620582c8.png">

モデルの学習は１００％になるまで続けられる。（処理時間が少しかかる）
<img width="1135" alt="スクリーンショット 2020-01-05 23.42.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/ae19755a-fdd4-126a-cf9a-9cf6fd37f91e.png">


<img width="1118" alt="スクリーンショット 2020-01-05 23.42.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/e7dba62d-88a5-37b5-25ec-7ec75517e835.png">

3.モデルの評価
<img width="1090" alt="スクリーンショット 2020-01-05 23.43.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/72ed4ab7-8633-baf2-abb4-c397bcb262bd.png">

モデルの評価は１００％になるまで続けられる。（処理時間が少しかかる）
<img width="1093" alt="スクリーンショット 2020-01-05 23.43.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/91410a3a-d4da-cc2c-4e5b-45c4263a75c3.png">

4.Turi Createモデルの保存とCore ML形式のモデルの保存
<img width="1092" alt="スクリーンショット 2020-01-05 23.43.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/7bc37cf3-7438-a1af-100c-f7aa94a2e1d6.png">



Turi Createモデル「ImageClassification.model」
Core ML形式「ImageCatDog.mlmodel」が出力された。
完了！！
<img width="219" alt="スクリーンショット 2020-01-05 23.44.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/055f704e-4ac1-19bd-2ed1-a28fc61167c2.png">



# ※Jupiter Notebookの終了
Jupiter Notebookの終了は、ターミナルで「Ctrl」+「C」し、
Shutdownダイアログで、「y」を選択する
<img width="323" alt="032 SHutdown.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/e18e0805-756f-4dd7-fdd8-cd0ade8086c9.png">


# 試したこと
iPhoneで、カメラロールから、犬と猫の画像を分類して、推測してみた。

作成した犬と猫の画像分類モデルを
Xcodeに、「ImageCatDog.mlmodel」をインポートして、犬と猫の画像分類
<img width="1048" alt="スクリーンショット 2020-01-06 2.51.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/63d2f89e-7901-951f-0300-efad0cd47b32.png">

<img width="410" alt="スクリーンショット 2020-01-06 2.57.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/1ef3e834-7c51-4ce3-bbad-2a74af9a4506.png">

猫１００％
<img width="421" alt="スクリーンショット 2020-01-06 3.10.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/1ad8dfde-3f35-a1fb-7fb1-f00d41143006.png">

猫１００％
<img width="419" alt="スクリーンショット 2020-01-06 3.10.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/fba65606-5dd7-9477-927f-cb37d2634986.png">

犬１００％
<img width="420" alt="スクリーンショット 2020-01-06 3.11.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/33993c33-7332-0256-0fd2-5f3377737ee1.png">

犬９９％
<img width="429" alt="スクリーンショット 2020-01-06 3.11.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/526c14d9-7d8b-34c4-b9bf-ea2660de2a57.png">


類似記事
【機械学習】Core MLモデルをXcodeで実装してiPhoneで画像分類を試してみた
https://qiita.com/nonkapibara/items/c3ed86a125c916baadc0