【Python】[Jupyter]飛行機画像を検索して類似する画像を抽出してみた（Turi Create）

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

↓↓↓完成内容
飛行機画像を検索して類似する画像を抽出
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">⚖️機械学習⚖️お勉強中📝<br>✈️飛行機画像🛫を検索して類似する画像を抽出してみたよぉ☺️<a href="https://t.co/GUvQLzfnE8">https://t.co/GUvQLzfnE8</a><a href="https://twitter.com/hashtag/Python3?src=hash&amp;ref_src=twsrc%5Etfw">#Python3</a> <a href="https://twitter.com/hashtag/Jupyter?src=hash&amp;ref_src=twsrc%5Etfw">#Jupyter</a> <a href="https://twitter.com/hashtag/TuriCreate?src=hash&amp;ref_src=twsrc%5Etfw">#TuriCreate</a> <a href="https://t.co/2GPH8yAMOR">pic.twitter.com/2GPH8yAMOR</a></p>&mdash; non (@nonnonkapibara) <a href="https://twitter.com/nonnonkapibara/status/1241741443145728001?ref_src=twsrc%5Etfw">March 22, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 環境作成

Anacondaで作成した仮想環境で、Jupyter Notebookをインストールする
（前提として、Anacondaで仮想環境をOpen Terminalを選択し、ターミナルを起動する）

【機械学習】Anacondaのインストール
https://qiita.com/nonkapibara/items/1333a1b1b31259c3dd6c

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

Python3.7で試しました。
<img width="470" alt="019.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/cbe6f296-f359-2bfd-8929-77f9e43642ae.png">

ターミナルを起動して、Turi Createのインストールをします。
<img width="1101" alt="020.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/0347dfd5-781a-f879-7922-c867e2b0585a.png">

<img width="886" alt="021.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/0fe5c5f7-1508-a381-4fc1-65d9b2f273e3.png">

<img width="571" alt="022.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/71f15daf-1c98-5517-ba88-c65e216c1e95.png">


# 1.Turi Createのインストール

Turi CreateとはAppleが公開している機械学習ライブラリです。

ターミナルから、Turi Createをインストールする

``` 
 pip install -U turicreate
```



# ２.画像データを用意する
カリフォルニア工科大学が用意してくれている画像データを使います。
１０１種類のジャンルの画像が入っています。

画像データを下記サイトからダウンロードします。

Caltech 101
http://www.vision.caltech.edu/Image_Datasets/Caltech101/
<img width="1004" alt="スクリーンショット 2020-03-22 11.47.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/9912abc0-e7c1-cc51-ee26-3fae22d99da7.png">

<img width="635" alt="スクリーンショット 2020-03-21 20.53.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/545bfc84-f3e4-d9de-b22e-d6edecc8461d.png">

<img width="367" alt="スクリーンショット 2020-03-22 11.49.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/0267fdb9-4c1f-c097-72ff-791e06d64d19.png">

<img width="353" alt="スクリーンショット 2020-03-21 20.54.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/7eeb1bc9-8562-d399-4fd4-d758a405b96b.png">

# 3.画像データを読み込む
ダウンロードした画像を読み込みます

<img width="866" alt="スクリーンショット 2020-03-22 11.59.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/521ef690-b9db-0f6d-3f95-181d44315f59.png">

# 4.モデルの学習

<img width="883" alt="スクリーンショット 2020-03-22 12.16.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/451404fe-e638-4dd7-e63b-8708ae97b16d.png">

<img width="855" alt="スクリーンショット 2020-03-22 12.17.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/afed6a00-3374-4530-e939-7bb5a2902e62.png">

関数の詳細は、下記サイトTuri Create API　参照
https://apple.github.io/turicreate/docs/api/generated/turicreate.image_similarity.create.html
<img width="1159" alt="スクリーンショット 2020-03-22 12.12.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/3475999f-cd9c-55bc-cac8-c08eb1acd10c.png">


# ５.モデルの保存
学習したモデルを保存します。
<img width="562" alt="スクリーンショット 2020-03-22 12.26.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/b0343547-c2c7-36eb-e9ee-1d2fa175b948.png">

# 6.飛行機の画像を類似検索する

飛行機の画像から、類似検索をします。
<img width="917" alt="スクリーンショット 2020-03-22 12.29.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/3b82779f-8678-e2d9-95f7-e005285fe563.png">

<img width="880" alt="スクリーンショット 2020-03-22 12.31.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/01b9fe0b-0d6e-8bd7-3e87-74e41906362a.png">

# 7.「query」を使って類似検索をする

<img width="917" alt="スクリーンショット 2020-03-22 12.35.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/24ce6c37-3194-aef7-3d38-a1509567b235.png">


関数の詳細は、下記サイトTuri Create API　参照
https://apple.github.io/turicreate/docs/api/generated/turicreate.image_similarity.ImageSimilarityModel.query.html

# 8.飛行機の類似検索結果を表示する

飛行機の類似検索結果を表示します。

<img width="947" alt="スクリーンショット 2020-03-22 12.35.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/e59f61d2-7977-883b-5199-cbb2657e4900.png">
<img width="949" alt="スクリーンショット 2020-03-22 12.36.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/65b6ef89-10d4-4d57-7c38-14cabf8c3efc.png">


完成