MATLAB 最速最短でディープラーニングを使う

# はじめに
Pythonで始めるAI・機械学習は「環境設定地獄」があるらしいですね？
地獄なんて怖いですね、なるべく近寄りたくないものです。
<b>その地獄、回避できるよ？そう、MATLABならね。</b>

そうは言っても、インストールとか面倒・・・
なんかMATLABって容量いっぱい喰うって言うし・・・

<b>ブラウザ上で動くMATLABなら、インストールすら不要です。</b>
これを使うことで、多分ですが最速最短でディープラーニングを使うことができます。

〇本記事で伝えたいこと
　MATLAB Onlineの便利さ、存在そのもの

〇想定する読者
　・今からディープラーニングを始めようという方
　・Python環境構築の壁にやられた方
　・<b>MATLABキャンパスライセンスが導入されている大学に所属する学生</b>
　　（例として東大、東工大、早稲田、慶応、理科大、明治、法政、立命館etc...
　　　不明の場合は[Mathworksに問い合わせましょう](https://jp.mathworks.com/academia/tah-support-program/eligibility.html)。）

〇注意点
　キャンパスライセンスをお持ちであれば、ブラウザ上MATLABも無料です。
　一般の方は、通常通りMATLABおよびツールボックスを購入の必要があります。


# ①ブラウザで動く、MATLAB Online
https://jp.mathworks.com/products/matlab-online.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302506/47d8cf8c-f614-95c3-3e9c-9cb038f250a6.png)
オンラインゲームみたいな名前ですが違います。いわゆるSaaS。<b>推奨するブラウザはChromeです。</b>それ以外だと一部関数が動作しません。

ログインには、Mathworksアカウントが必要です。[未作成の場合は作りましょう](https://jp.mathworks.com/mwaccount/register?)。キャンパスライセンスの場合、たぶん大学のメルアドで登録する必要があるかと思います。作ったら、ライセンス番号をアカウントに紐づけましょう。

アカウント作成さえ完了すれば、自分のPCにて必要な措置は何もありません。ログインするだけ。<b>すごい。</b>何なら最新のMATLABが対応しない32bitのPCでも大丈夫です。ただし、インストールして使う場合と比べると速度はかなり劣ります。

なおMATLAB OnlineとローカルPCのMATLABの作業スペースを共有することも出来ます。（この場合は[MATLAB Drive](https://jp.mathworks.com/products/matlab-drive.html)が必要）

# ②ログインして動作検証
ログインすると、ブラウザでありながら見慣れた光景が広がります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302506/a42e4b87-4cf9-5b51-0d8c-e9604cffdff6.png)

まずは`ver`コマンドを打ってみましょう。使えるツールボックス一覧が表示されるはずです。
バージョンは概ね2017b以降、ツールボックスは『Image Processing Toolbox』と『Deep Learning Toolbox』があれば最速最短のディープラーニングを使えます。

# ③PCのカメラで写真を撮って、AIに判定させる
MATLAB Online、ブラウザベースなのにPCのカメラにアクセスできます。<b>恐ろしい子</b>。
PCにカメラがない場合は、適当なjpgをMATLAB Onlineにドラッグ&ドロップしましょう。
まず、使っているPCのカメラ名を下記コマンドで調べます。

```matlab
webcamlist
```
下記は著者のSurfaceでの結果。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302506/f7610938-0a06-2313-0beb-0c76201e45a7.png" width=200>
なんかフロントカメラとリアカメラの名前が同じになってしまいましたが特に問題ありません。IRは赤外線。

次に、MATLABに操作させるカメラを登録し写真撮影します。カメラ登録は上記で得られた名前を指定するか、名前指定なしで`webcam`コマンドを叩くか、番号指定で`webcam(1)`とするかのどれでもＯＫです。名前指定が確実なのでだいたいこれを使いますが。

```matlab
cam = webcam('Microsoft Camera'); %カメラ登録
%カメラない場合は、ドラッグ&ドロップしたjpgを img = imread('***.jpg') する
img = snapshot(cam); %写真撮影
imshow(img); %撮った写真を表示
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302506/f862d2c8-82cc-c2d8-dd8b-2883934597cd.png)

枝豆ですね、はい。早速ディープラーニングで判定してみましょう！

```matlab
net = alexnet; %DNNのモデルとしてAlexNetを使う
reimg = imresize(img,net.Layers(1).InputSize(1:2)); %AlexNetの入力サイズに合わせる
classify(net,reimg) %結果を表示
```
結果はどうでしょう！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302506/b07365d4-800b-1f42-a401-fd06121bb0bd.png" width=200>

<b>枝豆はパスタということが分かりました。</b>


このままでは悔しいので、他のモデルでも試してみましょう。

```matlab
net = googlenet; %DNNのモデルとしてGoogLeNetを使う
reimg = imresize(img,net.Layers(1).InputSize(1:2));
classify(net,reimg)
```

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302506/1482ee12-e8a1-1dfd-1d65-22272f89f90a.png" width=200>
枝豆は<b>アメリカにおいて[ブッシュ元大統領の命を脅かした](http://j.people.com.cn/2002/01/14/jp20020114_13209.html)存在</b>として知られているようです。

もういっちょいきましょう。この素早さがMATLAB Onlineの素晴らしさ。

```matlab
net = vgg16; %DNNのモデルとしてVGG16を使う
reimg = imresize(img,net.Layers(1).InputSize(1:2));
classify(net,reimg)
```
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302506/075efe5c-37b0-22ae-bfbd-5aafd7ae7b5c.png" width=200>

<b>なんということでしょう。
真実に近づいた結果、本質情報だけが残りました。</b>



【結論】
ディープラーニング研究者は枝豆を食べない。

# ④リアルタイムAIに仕立て上げる
ここまでは１枚の写真に対しディープラーニングをかけましたが、カメラの前にあるものを常に識別するようにコードを書き換えます。`while`を足すだけといったらそれまでですが。

なおループの停止はMATLAB画面上でCtrl+Cで行います。また前述の通り、MATLAB Onlineは処理速度は遅いのでここまでくるとインストールしたほうが良いと思います。

```matlab
clear all;
close all;

cam = webcam('Microsoft Camera'); %カメラ登録
net = googlenet;

while true
img = snapshot(cam); %写真撮影
imshow(img);
reimg = imresize(img,net.Layers(1).InputSize(1:2));
label = classify(net,reimg);
title(char(label));          % Show the class label
drawnow
end
```

![result3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302506/5ff5d68c-90c4-48fd-3b82-30cc00254390.gif)
このgifはインストール版で作ったものです。MATLAB Online上だとうまくできなかったので…
ハサミは何度やってもcan openerでした。

# まとめ
・MATLAB Onlineは最速最短でMATLABが使え、ディープラーニングが使える
・とはいえ速度はイマイチなので、Online使ってみていい感じならインストールしましょう
・ディープラーニング研究者は枝豆を食べないし、ハサミで缶を開ける。