MicrosoftのCaptionbotと自作のキャプショニングを比較してみた

# Microsoft Captionbot

Microsoftが[Microsoft Cognitive Services](https://www.microsoft.com/cognitive-services/)を発表しました。
Cognitive Servicesは画像分析、音声認識、レコメンデーション等のAPIツールを提供します。
そしてこのデモとして[CaptionBot](https://www.captionbot.ai/)を公開しています。
CaptionBotは、画像をアップロードするとそのキャプション（説明文）を生成してくれるサービスです。

# キャプション生成の比較

CaptionBotが生成したキャプションと、[Chainerで画像のキャプション生成](http://qiita.com/dsanno/items/b237482087207d0364c3)で作ったキャプション生成プログラムによるキャプションとを比較してみました。
認識精度の高そうなキャプショニングツールとの比較を行ってみたかったところなので、丁度よいタイミングでした。
画像は自分で撮影した写真と[PublicDomainPictures.net](http://www.publicdomainpictures.net/)からダウンロードした画像を使いました。

## 浅草の風景
<img src="https://qiita-image-store.s3.amazonaws.com/0/58026/2c3acfd2-91ba-116a-518e-5e53313c6ed8.jpeg" width="360px">

- CaptionBot: I think it's a large bus on a city street. 
- 自作: a city street filled with lots of traffic

どちらも建物の描写はありません。混んでいるようには見えないのですが、"lots of traffic"となっているのは謎ですね。

## クリスマスツリー
<img src="https://qiita-image-store.s3.amazonaws.com/0/58026/7709678d-6e54-9d60-d332-967d4eb33086.jpeg" width="360px">

- CaptionBot: I am not really confident, but I think it's a large building in the snow.
- 自作: a fire hydrant sitting on the side of a road

学習データの単語を見ると"tree"は出現頻度が高いのですが認識できていません。雪がかぶっているからでしょうか。
"fire hydrant"はどの辺を認識したのでしょうか。赤い物でもあればまだわかるのですが。

## 時計
<img src="https://qiita-image-store.s3.amazonaws.com/0/58026/39e5da24-40b0-d94e-92ea-7182c0c0f768.jpeg" width="480px">

- CaptionBot: I think it's a large clock. 
- 自作: a clock on the side of a building

自作キャプショニングの方が少しだけ描写が細かいです。

## 自転車２人乗り
<img src="https://qiita-image-store.s3.amazonaws.com/0/58026/df3bb8c0-34d7-3de6-ae11-368bafeaee0f.jpeg" width="480px">

- CaptionBot: I think it's person riding on the back of a bicycle. 
- 自作: a person riding a bike on a city street

どちらも2人いることを認識できていません。重なる部分が少しあるので1人と認識しているのでしょうか。


## 交通整理中？の警官
<img src="https://qiita-image-store.s3.amazonaws.com/0/58026/9ca3e483-3e9a-d182-6ce6-e3b9b198da76.jpeg" width="480px">

- CaptionBot: I think it's a man riding a skateboard down a street and he seems :neutral_face:.
- 自作: a man riding a skateboard down a street

どちらもスケートボードを誤認識しているが面白いです。
CaptionBotは絵文字を出力することもあります。
今回はQiitaの絵文字から近いものを選びました。

## テニスラケットを持った女性
<img src="https://qiita-image-store.s3.amazonaws.com/0/58026/3d928901-337f-1f56-9bef-7db7dea36b30.jpeg" width="480px">

- CaptionBot: I think it's a woman holding a tennis racket and she seems :grin: .
- 自作: a woman holding a tennis racquet on a tennis court

どちらも正しく認識できています。

## リビングのソファ
<img src="https://qiita-image-store.s3.amazonaws.com/0/58026/144ff330-c5a6-acdd-c38b-fcf80b6155f4.jpeg" width="480px">

- CaptionBot: I think it's a living room filled with furniture and a large window.
- 自作: a cat laying on top of a bed

CaptionBotは正しく認識していますが、自作キャプショニングはおそらくクッションを猫と誤認識しています。

## 白熊
<img src="https://qiita-image-store.s3.amazonaws.com/0/58026/dc90b777-3ec3-ac45-a107-3886308307e5.jpeg" width="480px">

- CaptionBot: I think it's a polar bear in a zoo.
- 自作: two polar bears standing next to each other

自作キャプショニングはなぜか2頭いると認識しています。
岩が白いので誤認識したのでしょうか。

# まとめ

少ない枚数ですが、Captionbotと自作キャプショニングを比較してみました。
Captionbotの方が精度が高く描写が細かい印象があります。
また顔文字が出たり、自信のない結果を"I am not really confident,"などと出力するのが面白いと思いました。
Captionbotでキャプション生成できるのは写真だけのようで、アニメやコミックの画像を入力すると"I can't really describe the picture but I do see drawing."などといった出力になります。