Microsoft
Azure
CognitiveServices

Custom Vision Serviceを使ってみた

Custom Vision Serviceの発表

現地時間5/10にシアトルで行われたBuild 2017キーノートにてCognitive Servicesの一つとしてCustom Vision Serviceが発表されました。
build-2-640x376.png

Custom Vision Serviceとは

今までのCognitive Serviceは基本的にはモデルをMicrosoftが準備しており、顔写真から年齢、性別などを推測するなどができました。

今回発表されたCustom Vision Serviceはモデルを自分で作ることができます(しかもGUIで)。

Buildのデモでは様々な種類の植物の写真をアップロード、学習させた後に種類のわからない植物の写真から種類を判定していました。
つまり前に話題になったきゅうり選別機のような判定機構をコーディングレスで作成できるのです!!

実際に使ってみる

MSのりんなも犬種の判別をしてくれることで話題になりましたが、今回はそれにならって、犬の写真から犬種を判別するモデルを作成したいと思います。
Custom Vision Serviceのサイトに行きます。[Try Custom Vision Service]をクリック
2017-05-11_14h32_42.png
[New Project]をクリック
2017-05-11_14h32_47.png
自分がわかるように入れて[Create Project]をクリック
2017-05-11_14h33_06.png
まだ何も学習させていないので中身は空っぽです。では学習データとなる画像をアップロードしましょう。[Add Images]をクリック
2017-05-11_14h33_20.png
1種目はビーグルの写真を学習させます。適当にネットから拾ってきたビーグルの写真を複数枚(※)アップロードし、[Add some tags to this batch of images...]のところに「ビーグル」とダクを入力後[+]をクリックして[Upload n file]をクリックするとアップロード完了です。

【2018/09/27 Update】
※複数枚と書いていますが、MSのドキュメントを見ていたら

with a minimum of 30 images per tag
(概訳:タグ毎に最低30枚の画像が必要です)

という記述がありました。また画像のサイズについては

We recommend that images be 256 pixels on the shortest edge. Any images shorter than 256 pixels on the shortest edge are scaled up by Custom Vision Service.
(概訳:画像の短辺は256ピクセルにすることをお勧めします。256ピクセルより短い画像は、自動的に拡大されます。)

というような記述もありました。

2017-05-11_14h38_11.png
同じようにゴールデンレトリーバーとミニチュアシュナウザーをアップロードしました。
2017-05-11_14h40_23.png
2017-05-11_14h42_23.png
ここで注意しなければならないのはアップロードしただけでは学習は完了していません。
アップロード一覧の上部メニューバーにある[Train]をクリックして学習を開始させましょう。
2017-05-11_14h42_42.png
学習が完了すると結果が表示されます。
2017-05-11_14h43_18.png
とりあえず、結果の分析はおいておいてテストをしてみます。メニューバーの[Quick Test]をクリック。
2017-05-11_14h43_18.png
今回は学習データにない以下のようなビーグルの写真を使ってテストしてみます。
2017-05-11_14h44_42.png
テストしたい画像を選択して[→]をクリック
2017-05-11_14h44_48.png

結果が表示されました。ビーグルが98.7%、他が10%以下つまりビーグルの可能性が高いと出ました。
2017-05-11_14h44_56.png
続いて、学習させていない柴犬の画像をテストしてみます。
2017-05-11_14h45_38.png
結果的にはビーグルの確率が一番高いですが、それでも25%程度とあまり高くありません。
2017-05-11_14h45_40.png

テスト画像を学習データにする

Custom Vision Serviceは判定に使用されたデータも学習データとしてActive learningを行うことができます。これを使うと精度の向上が期待できますね。上部メニューの[PREDICTIONS]をクリックすると、先ほどテストした画像が出てくるので学習データにしたい画像をクリック。
2017-05-11_14h46_05.png
[My tag]に「ビーグル」と入力してこれがビーグルの画像であると教えましょう。下の画像では見えませんが画面をスクロールすると[Save and close]というボタンが出てきますので、クリックして保存します。教えた後は[Train]ボタンを押すことも忘れずに。
2017-05-11_14h46_15.png

APIで使用する。

今回はQuick Testしかやりませんでしたが作成したモデルをAPIにすることも可能です。上部メニューの[PERFORMANCE]を選択し、[Prediction URL]をクリックします。
2017-05-11_16h59_00.png
API呼び出しに必要なエンドポイント等の情報が表示されます。
2017-05-11_14h47_04.png

最後に

今回はリリースニュースを聞いてさらっと触ってみましたが、体感精度は高いと感じました。
またプレビュー版ということでわざと日本語を使ってみましたが、普通に使えますね。
今後もCognitive Serviceの進化に期待です!!

【2018/09/28Update】
2017年末に追加されたObject Detection(物体検出)も使ってみました!
Custom Vision ServiceのObject Detectionを使ってみた