もしかしてCustom Visionだったら、佐藤健と亀梨和也を人よりも賢く見分けられるかもしれない

もうすでに忘れている人もいるかも知れませんが、ちょっと前まで話題になっていた[あのドラマ](http://www.tbs.co.jp/gibomusu_blues/)に出ていたのが佐藤健なのか亀梨和也なのか区別がつかないことからスタートしたこの企画。
[ここ](https://qiita.com/mine820/items/e7334eb843a82ad711e6)や[ここ](https://qiita.com/mine820/items/e64c5a1862a605285127)や[ここ](https://qiita.com/mine820/items/6e35bd8d69b123edbfa0)や[ここ](https://qiita.com/mine820/items/c37cb6f1dbef4fa21f56)などで試してきた第5段です。

つい先日、MicrosoftのAzureにも、簡単に画像分類ができるサービスがあるということで、早速試してみました。
それが、「[Microsoft Azure Custom Vision](https://azure.microsoft.com/ja-jp/services/cognitive-services/custom-vision-service/)」です。
現在はプレビュー版ということで、お安く（はっきり言えば、タダ）試すことが出来ます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130771/24e23c8b-6f5a-e448-b5be-aa8ffdd7ce2e.png)

# 準備
Mictosoftアカウントを持っていれば、すぐに開始できます。
「はじめる」→「SIGN IN」でログインします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130771/3c6fb04a-3171-1888-cfdd-f4472838c797.png)

# プロジェクトの作成
まず最初にプロジェクトを作成します。
![image01.png](https://qiita-image-store.s3.amazonaws.com/0/130771/e118ad32-1e77-02f5-876e-c78cf186781d.png)
「NEW PROJECT」を選択するとプロジェクトの情報を設定する画面が出てきますので、名前など入力していきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130771/b06ed3c6-a336-6f4c-c489-44633f5e8e33.png)
今回は画像分類ですので「Classification」を選択します。
また、佐藤健と亀梨和也の2クラス分類ですので「MultiClass」を選択します。
画像の種類によって最適なDomainを選択できるのですが、今回は一般用の「General」を選択します。
「Create Project」ボタンを押せば、プロジェクトが出来上がります。

# 学習データの登録
次に学習データを登録していきます。
いつものように、佐藤健、亀梨和也、それぞれ90枚の学習データと10枚の評価データがありますので、学習データ（亀梨和也の90枚）を登録していきます。
![image04.png](https://qiita-image-store.s3.amazonaws.com/0/130771/ffca7b7b-c8aa-81c5-5670-150f157fbe94.png)
「Add Images」ボタンを押し、ファイルを指定します。
ここでタグが指定できますので、「KazuyaKamenashi」を入力し、「Upload 90 files」ボタンを押します。
![image05.png](https://qiita-image-store.s3.amazonaws.com/0/130771/bcbf6d73-38d0-1eae-7c17-989d4b53c327.png)
無事すべての画像が登録できたようですので、同様に佐藤健の90枚も登録していきます。
![image06.png](https://qiita-image-store.s3.amazonaws.com/0/130771/541e5aab-8745-c449-1882-29e5ae455b14.png)
これですべての学習データが登録できました。
![image08.png](https://qiita-image-store.s3.amazonaws.com/0/130771/30f1f251-9991-be57-8dde-2651f3cbec00.png)

# 学習の実行
上部にある「Train」ボタンを押し、学習を開始します。
![image09.png](https://qiita-image-store.s3.amazonaws.com/0/130771/13b99575-4a1d-9803-dfbd-bf9b84446530.png)
クラス数や画像数により、学習時間は変わるようですが、今回は数分で終了しました。
ちなみに、ネットワークモデルはSqeezeNet（AlexNetの小さい版）という噂です。

学習が終了すると、その結果が表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130771/204732a7-5421-36a6-d069-fd1593be0abd.png)
下の方には、それぞれのクラスの正解率が表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130771/614b7339-64b3-d667-92cc-1e935a737a0d.png)
なんか嫌な予感がします ^^;

# 評価の実行
ではうまく分類できるか試してみます。
上部にある「Quick Test」ボタンを押します。
![image12.png](https://qiita-image-store.s3.amazonaws.com/0/130771/a240cf5e-477f-7570-5da5-e3455d93a04d.png)
残念ながらまとめてテストが出来ないので、1枚づつファイルを指定していきます。
まずは亀梨和也から。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130771/df95f8c0-7a3a-5512-b721-43ea91e20826.png)
いい感じに分類できています。この調子で残り9枚も確認していきます。
確認した結果は、あとから「Predictions」で見直すことが出来ます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130771/c57c89cf-79a8-894d-f3c3-55c39fc6034b.png)
しきい値を変更して、うまく見分けられたのかも確認できます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130771/efe3b73d-f1e1-a300-0101-fcf3972206e8.png)

その後、佐藤健の方も確認していきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130771/cd495c85-c989-4537-8b50-8b5990416c70.png)
こちらもいい感じです。

テスト画像の分類結果は以下のようになりました。

- 評価用画像（亀梨和也）
    - 60%正解
- 評価用画像（佐藤健）
    - 100%正解

なんとなく「佐藤健発見器」になっている予感がします（苦笑）

# 結果
この調子で、肝心のドラマ中の画像でも確認してみます。
こちらは15枚あります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130771/af812b8b-4c72-8526-7d98-5f38692c9a4a.png)

で、正解率は．．．73.33%でした。
（「佐藤健発見機」だからズルいって？！）

| FileName | TakeruSato | KazuyaKamenashi |
|---|---|---|
| image01.jpg | <font color="red">0.988</font> | 0.011 |
| image02.jpg | <font color="red">0.999</font> | 0.000 |
| image03.jpg | <font color="red">0.579</font> | 0.420 |
| image04.jpg | <font color="red">0.999</font> | 0.000 |
| image05.jpg | <font color="red">0.999</font> | 0.000 |
| image06.jpg | <font color="red">0.998</font> | 0.001 |
| image07.jpg | 0.122 | <font color="red">0.877</font> |
| image08.jpg | 0.079 | <font color="red">0.920</font> |
| image09.jpg | <font color="red">0.905</font> | 0.094 |
| image10.jpg | 0.156 | <font color="red">0.843</font> |
| image11.jpg | 0.059 | <font color="red">0.940</font> |
| image12.jpg | <font color="red">0.999</font> | 0.000 |
| image13.jpg | 0.462 | <font color="red">0.537</font> |
| image14.jpg | <font color="red">0.997</font> | 0.002 |
| image15.jpg | <font color="red">0.876</font> | 0.123 |

Microsoft先生、意外とやるじゃん！（失礼？！）

# おまけ
Google AutoML VisionとMicrosoft Azure Custom Visionと比較すると、Custom Visionのほうが簡単といった感じがしますので、とりあえずお試しで使いたい場合はこちらがよいのではないでしょうか。
細かい設定などはAutoML Visionができるので、もうちょっと精度などにこだわりたい場合はそっちかなという気がします。