DeepLearningを活用した物体検出(SSD_Keras)を可能とするPepper

DeepLearningを活用した物体検出(SSD_Keras)を可能とするPepper

SSD_KerasをPepperにも

こんにちは。

AI coordinatorの清水秀樹です。

以前紹介したSSD_Kerasによる物体検出を、いつかPepperにも搭載できたら良いなぁなんて思っていました。

そしてこの度、アトリエ秋葉原に通い続けたことで何度も実装に苦戦しながらもついに実装することができたので、その内容をソースコードと合わせて紹介したいと思います。

 

物体検出ができるロボットの未来

ロボットが物体を検出できるようになれば、その情報から次のアクションが起こせるようになります。

  1. 人を見つけたら声をかける
  2. 物体を発見したら連絡する
  3. 特定の状況下になったら、写真を撮影して送信する
  4. 特定の人物にお声がけする
  5. 物体や人の数を数える
  6. etc・・・

特にPepperのようなロボットであれば、手軽に様々なことにチャレンジできるようになります。

というかできることなんて無限にあります。

 

人間も目から大量の情報を取得し行動を起こしています。

これがロボットでもできるようになれば、ロボティクスの分野は今後も大きく飛躍していくのではないかと筆者は考えているわけです。

 

相手を記憶して声をかけるといった人としての最低限の挨拶が、いままでのロボットでは容易にできませんでした。

これがDeepLearningの発展のおかげで特定の人物を認識できるようになったわけです。

(もちろん発展途上ですし、まだまだ課題はありますが・・・)

 

これまでのロボットには、人はロボットに対して特に感情を持つことなんてほとんど無かったのではないかと思います。

でも、

「お久しぶりです。XXXさん」

なんていきなり声をかけられたら、少し嬉しいですよね。

そして、そんな風に声をかけられた人にとってそのロボットは、きっとただのロボットではなくなるのではないかと思います。

 

ほんのすこしでもロボットに対して感情が生まれれば、ロボットはひろく受け入れられる存在になっていくのではないかと思っています。

 

・・・・

 

さて、前置きはこれくらいにして、実装方法を簡単に紹介していきたい思います。

 

開発環境

MacBook Pro(13-inch,2016)

プロセッサ 2.9 GHz intel Core i5

ubuntu 16.4 LTS

python 2.7.12

tensorflow-1.0.0

keras 1.2.2

OpenCV 3.2.0

pynaoqi-python2.7-2.5.5.5-linux64

Pepper実機

 

今回はubuntuで開発しています。

ubuntuの方がOpenCVのインストール慣れていたからです。

というかOSXだとうまくインストールできなかったからです。。。誰か教えて。

anacondaが使えれば楽勝なのですが、Pepper用python SDKがanacondaではなぜかエラーになってしまうためanacondaが使えません。

というわけでubuntuを使用しました。

 

あと言うまでもないかもしれませんが、バーチャルペッパーでは確認できません。

実機が必要になりますので、実機を持っていない方はアトリエ秋葉原に行くか、地方の方は近くのアトリエサテライトを探してみてください。

 

Pepperのカメラ画像をPCに表示できるようにする

最初の難関はこれになります。

紹介されているサイトも筆者の知る限りでは2つしかありませんでした。

 

これができないと話になりません。

なぜならSSD_KerasはPC上で実行するからです。

つまりカメラ映像をPCに映し出せないと先に進まないわけですね。

 

Pepperのカメラ映像をリアルタイムにPCに表示するやり方については、以下の記事を参考にしてください。

Pepperのカメラ映像からリアルタイムで物体検出する方法

 

学習モデルの準備

これが一番大変です。

今回はSSD_Kerasで既に公開されている学習モデルをそのまま使用しました。

映像からの物体検出(SSD_Keras)に挑戦 for ubuntu

 

もし上戸彩さんがPepperの前にいれば、以前作成した美人女優を検出できる学習モデルを使用したのですが・・・

物体検出用SSD_Kerasで使える学習モデルの作成方法

 

ソースコード

ツギハギでソースコードを作成しています。

不要なコードも残っていると思います。

ソースコードを綺麗にしていないので読み難くてもご容赦ください。

SSD_Kerasのソースコードを参考にしています。

 

クラス名や学習モデルを指定すれば、上記ソースコードそのままで動くはずです。

無事に目標物が検出されれば、ひとまず成功です。

 

今後のPepperの可能性について

冒頭でも述べた通り、筆者としてはPepperが物体検出をできるようになったことで、次のアクションを容易に選択できるようになったと考えています。

そのため、検出した物体に合わせた次のアクションに繋げることができることで、アプリ作成の幅が大きく広がりを見せた気がします。

筆者も次のアクションを起こせるPepperを開発していきたいと思います。

 

興味がある方はぜひチャレンジして、色々なアプリケーションに組み込んでみてください。

 

また、これからDeep Learningの勉強をするなら、こちらで紹介する書籍も参考になりますので一読してみることをオススメします。

 それではまた。

About The Author

Hideki
東京大学発AIスタートアップ企業でロボット開発室室長、画像解析室室長、動画解析室室長を務め、AIエンジニアとしても画像認識関連の特許を在籍中に3つ取得。その後、KDDIグループ内でプロダクトリーダーとして自然言語処理パッケージの自社開発を経て、現在はAGRISTのテックリードとして農業の人手不足の解決に向けた収穫ロボットの開発にチャレンジしている。ロボットは技術の総合格闘技との考え方から、AIだけでなく、ハードやエレキ、通信からクラウド、IOTまで幅広く手掛けることができる。最近では人とロボットの共存を目指すべく、性能だけを追い求める開発から「感動やワクワク体験」をデザインできるロボットの研究を進めており、人とロボットがうまく共存できる世界を作り出したいと日々行動している。

LEAVE A REPLY

*
*
* (公開されません)