Edited at

Custom Vision Serviceを使ってみた

More than 1 year has passed since last update.


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を使ってみた