2019年、亥年。あけましておめでとうございます!Fujiです。
前回より、怒涛のSLAM記事(これとこれとこれ)を公開したのでBlogネタ作りに結構満足してしまっていたのですが、年も明けたので心機一転、新たに別のネタを書こうかと思います。
昨年の話になりますが、11月にリフレッシュ休暇を取り、イタリアへ行ってきました。もっと言うと、実は今まで海外なんてほとんど行ったことなかったのですが、インフォデックスに入社してから毎年仕事やプライベートで海外に行ってたりします。
で、海外に行くと日本では体験できないものがたくさんあるじゃないですか。そして、その感動を誰かに伝えたい、分かち合いたいという気持ちになるじゃないですか。
と言うわけで、一番身近にいて一番話しかけやすい存在であるPepperに、この感動を共有しようと思い、こんなものを作ってみました。

Pepperにスマホで撮影した写真を見せると、PepperがAzure Cognitive Serviceの「Computer Vision API」で画像の解析を行い、解析結果を同じくAzure Cognitive Serviceの「Translate Text API」で解析結果を日本語化。その日本語化した結果をPepperで発話する&画面に表示します。

画面中央上部の四角い枠に、Pepperが見ている映像が映ります。
今回は、Microsoft Azureのドキュメントをなぞれば比較的簡単にできる内容なのでソースコードの掲載はしませんが、一応注意点だけ。
Azure Cognitive ServiceのComputer Vision APIは、使用できるリージョンが限られています。
この点に気をつけて、あとは
を参照しながらコードを書けば同じようなものができるかと思います。
あ、もう一点、Pepper(現時点:NAOqi OS2.5.5)にインストールされている「requests」ライブラリはちょっと古めのものなので、上記のドキュメントに合わせたコードを書きたい場合は外部から最新のライブラリを持ってきてもいいかなと思います。
では、早速Pepperにイタリアの写真を見せて自慢していきます。
まずはこちら。

ミラノのドゥオーモです。一応、公式サイトのサンプルの結果(スクリーンショット)を載せておきます。

説明の「captions」−「text」の部分が認識結果の説明です。
「ミラノ大聖堂の通りに建つ時計塔」と認識されましたが・・・
まぁ、イタリアについた初日(到着がミラノ)、歩きながら「うぉーすげー!」とか言いつつiPhoneで撮った写真ですのでこんなものかな・・・?と思います。時計塔の意味がわかりませんが、一応ミラノのドゥオーモ(大聖堂)であることは当ててますし。
さて、Pepperではどうでしょうか!?
英:A group of people standing in front of a building.
日:建物の前に立っている人々のグループ。
う、うーん・・・・Pepperがこの写真をミラノのドゥオーモだと認識してくれないと、イタリアに行ったこと自慢できないじゃんね・・・
気を取り直して、次はこちら。

ミラノの次に行ったフィレンツェのポンテ・ヴェッキオ。ヴェッキオ橋を横から撮った写真です。あ、ちなみに、この写真を撮った通りを川沿いにもう少し先に進んだジェラート屋さんが結構有名です。美味しかったですよ。
サンプルのスクリーンショットはこんな感じ。

ポンテ・ヴェッキオの写真だと判定してますね。
さぁPepperはどうだ!?

英:A river with Ponte Vecchio in the background.
日:ヴェッキオ橋を背景にした川。
おお、Pepperもヴェッキオ橋だと認識した!
あと、ちょっとビックリしたのがAzureのTranslate text APIはイタリア語の「Ponte Vecchio」を「ヴェッキオ橋」と訳してくれるとこでしょうか!?
どんどんいきましょう。こちらはどうだ!?


英:A man standing in front of a mirror posing for the camera.
日:カメラを装った鏡の前に立っている男。
ダビデ像であることすら判定してくれませんでした。カメラうんぬんの節は、スマホの枠が入っちゃったからでしょうか?
ただ、どうやらAzure Computer Visionは、そもそも美術品については作品名を当てることまではできないようです。ランドマークや著名人は判定してくれますが、美術品については作品名をだしてくれないようです。
これ、ちょっと面白かったので実際に行って撮った写真で色々試してみましたが、
- サグラダ・ファミリア(バルセロナ)
- 美術品だと思ってたけど、ランドマークだからか成功
- グエル公園(バルセロナ)
- こちらも同じく成功
- バトリョ邸(バルセロナ)
- やはりランドマークとの事。成功
- モナリザ(ルーブル美術館)
- 限界まで近づいて撮ったんだけど、絵画だからか失敗
- ヴィーナス像(ルーブル美術館)
- 成功!「a statue of Venus DeMilo standing in front of a building」だって!
- ダイヤのエースを持つイカサマ師(ルーブル美術館)
- 失敗。著名人扱いではない様子
- 古代エジプトの書記坐像(ルーブル美術館)
- 失敗。著名人ではないのか・・・
- 民衆を率いる自由の女神(ルーブル美術館)
- 失敗。撮った角度が悪いのか、人がたくさん描かれているから著名人という扱いではないのか・・・
- ゴッホの自画像(オルセー美術館)
- 成功!!「a painting of Vincent van Gogh」だって!
- ロンダニーニのピエタ(スフォルツェスコ城)
- 失敗。というか、まぁミケランジェロの未完成品だし・・・
- ヴィーナス誕生(ウフィツィ美術館)
- 失敗。ガラスで保護されてるからだろうか
- プリマヴェーラ(ウフィツィ美術館)
- 失敗。自画像とかじゃないからなのか・・・?
- ボッティチェリの自画像(ウフィツィ美術館)
- 失敗。ガラスで保護されているから?
という結果になりました。写真の撮り方が悪かったのもあるのかもしれませんが、美術品でも物によっては著名人という扱いになるようです。
さぁ、続いて場所はローマに移りましょう。そうだ、なんかすごい宮殿があったんだけど、調べてなかったから名前がわからないところがあったので、それをPepperに見せてみましょうか。ちょうどトラムに乗っていて、終点のヴェネチア広場駅(Piazza Venezia)を降りたところにある建物です。

これをPepperに見せてみます。どうよPepper、これ、なんの建物だったかわかる?

英:A group of people standing in front of Altare della patria.
日:Altare・デッラ・パトリアの前に立っている人々のグループ。
「Altare della patria」は、アルターレ・デッラ・パトリア、ヴィットーリオ・エマヌエーレ2世記念堂だそうです。なるほど・・・そうだったのか!
そして、こんな風にあの時わからなかった物や、忘れてしまったものをこうやってPepperに見せる事で名前が思い出したりわかったりすることができるようになりますね!
というわけで、PepperとAzure Cognitive ServiceのComputer Vision APIとTranslator text APIを組み合わせてイタリア行ってた事をPepperに自慢して見ました。
実現へのコツというか、押さえておくべきポイントとしては、
- PepperのカメラのオートフォーカスをONにする
- なるべく、Pepper&Compute Vision APIに余計な情報は与えない
- Pepperに見せるのは縦向きの写真よりも横向きの写真の方がいい
- 夜の画像はうまく認識できない(Compute Vision API単体なら大丈夫)
といったところでしょうか。
2019年も株式会社インフォデックス並びに、インフォデックスPepperチームをよろしくお願いします!!
