エラーメッセージ

Warning: A non-numeric value encountered video_filter_youtube_html5() (/home/openrtm/public_html/drupal-7.67/sites/all/modules/video_filter/video_filter.codecs.inc ファイル 1043行).

深層学習を用いたコンポーネント群の作成

深層学習を用いたコンポーネント群の作成

投稿者: 
root

概要・特徴

  • 近年,深層学習を用いた物体認識に関する研究が広く行われてきているが,こうしたパッケージをミドルウェアプラットフォームに適用した事例は見られない. そこで, 本コンポーネントは予め構築した深層学習モデルを用いて, 取得した画像を深層学習の処理にかけ物体認識を行う.

仕様

  • 言語: Python
  • OS: Ubuntu16.04
  • RTミドルウェア:OpenRTM-aist-1.1.2
  • DeepLearningエンジン : Caffe
  • CUDA : CUDA8.0
  • cuDNN : cuDNN_v5

ソースコードおよびマニュアル

関連マニュアル

概要スライド

pdf

認識結果画像

DeepLearning物体認識結果.png

動画

投稿URL : https://www.youtube.com/watch?v=-R-1AGQN92M&t=44s

ライセンス

MITライセンス

注意

本コンポーネントはrbgirshick様から提供されているライブラリを使用しています. そちらのライセンスに関してはこちらの指示に従ってください.

問合先(メールアドレス): 
140447008<at>ccalumni.meijo-u.ac.jp
Project Information
OS: 
Linux
言語: 
Python
OpenRTM ver.: 
1.1
Average: 
3.75
Average: 3.8 (4 votes)
最終更新日時: 
火, 2017-12-19 17:58

コメント

投稿者: 

nmsやrpnというフォルダに入っているファイルは別の人が作ったものだと思うのですが、ライセンス文のファイルは同梱しなくても大丈夫なのでしょうか?

投稿者: 

宮本様 早速の貴重なコメントありがとうございます. おっしゃるとおり,nms,rpnなどのライブラリは他者が著作権を持つライブラリとなります.ライセンスの範囲を明確にする意味で,公開してたRTCの中身の修正及び,ドキュメントと,HPへのライセンスに関する注記をいれました. その他,お気づきの点ございましたらコメントいただければ幸いです.

投稿者: 
産総研の高橋です.更新ありがとうございます.
内容を確認させていただきました.
IDLを提案されており,流行りの深層学習を利用したRTCということで有用性の高い作品と感じました.
何点かコメント&質問させていただきます.
  • py_faster_rcnn.py 内で,同じ処理の中で result.jpg ファイルとして書き出した後に再度読み込むのは性能的にロスが大きいと感じました.高速なロジックを活かすためにも,上記処理を非同期的に行うか,参照渡しした方が良いと思います
  • 物体認識インタフェースですが,最近はステレオカメラやTOFカメラもあるので,奥行き(距離)情報も追加してみてはと思いました.
投稿者: 

高橋様 ご意見ありがとうございます. 一つ目ご意見に関しては, 少しでも高速性を追求するためにMat型を参照渡しで実装し, ソースコードをgithubの方で更新させて頂きました. 二つ目のご意見に関しては, 奥行き情報は物体インターフェースを拡張するより, 共通カメラインターフェースの拡張を行うべきだと考えております. 間に合うかわかりませんが, 共通カメラインターフェースを拡張する形で検討致します.

投稿者: 

ソースコードを読んだのですが、以下の点が気になりました。

  • onExecute関数内で、TimedCameraImageのデータをNumPyの配列にコピーしようとしている箇所がありますが、for文を使うのは効率が悪いように思いました。NumPyのfromstring関数を使えば以下のようにデータをコピーできます。

 img = np.fromstring(indata.data.image.raw_data, dtype=np.ubyte)
 img = img.reshape(height, width, channels)

  • onExecute関数内でself._inImageIn.read()を2回呼び出していますが、これはどういう意図があるのでしょうか?
  • onActivated関数内でm_datasetの値によって条件分岐している箇所がありますが、m_datasetがcocoの時にはself._CLASSESという変数にCLASSES_COCOを格納していますが、m_datasetがvocの時にはself._CLASSESを変更していません。何か意図があるのでしょうか?
投稿者: 

宮本様 ご意見ありがとうございます. 1つ目のご意見に関しましては, 宮本様から教えていただいたコードを使わせていただきました. for文で画素値を入れるよりも遥かに速度向上を求めることができました. ご指摘ありがとうございます.

2つ目のご意見に関しましては, self._inImageIn.readを2回呼び出している理由ですが, 当初は出力する際にself._inImageIn.read()からのデータを引き継いで画像データの部分のみを入れ替えて出力するという意図でコードの方を書かせていただきました. 宮本様からご指摘を受け再度ソースコードの方を確認した結果self._inImageIn.readを2回呼ぶ必要がないことがわかり, ソースコードの方を改善いたしました.

3つ目のご意見に関してましては, 宮本様のおっしゃるとおり, m_datasetがvocの場合はonActivated内でself._CLASSESを変更は致しておりませんでした. 理由と致しまして, vocはデフォルトとしてinitの方で宣言した方が良いのではないかと思いそちらで宣言しておりましたが, onActivatedのif文内の同一性をもたせる方に改善いたしました.

今回行った3つの改善に関しましては再度ソースコードをgithubの方で更新いたしました. また, 再度ご質問・ご意見がございましたら, よろしくお願いします.

投稿者: 

対応していただいてありがとうございます。

ただ、NumPy配列からTimedCameraImage型に変換する場合についても、for文ではなくtostring関数を使った方が効率的だと思います。

 self._d_outImage.data.image.raw_data = img.tostring()

投稿者: 

宮本様 再度のご意見ありがとうございます.

NumPy配列からTimedCameraImage型に変換する場合に関しても宮本様から教えて頂いたコードを扱わせてもらい, githubの方でソースコードを更新致しました.

また, ソースコードを改善することにより処理速度が早くなりましたので, 「py_faster_rcnnマニュアル」の5ページ目も更新致しました.

投稿者: 

菅です.

コメントです. 独自データ型を使ってもらえて本当に嬉しいです(笑)

ところで,TimedObjectParam型については,もうすこし慎重に設計した方が良いと思います. 出力ポートを監視しているだけでは,必要な情報が全て得られないので, たとえば,入力として受け取った画像のサイズ等も出力ポートに入れたほうがいいと思います. 冗長に思えるかもしれませんが,コンフィグ等で設定するよりも便利だと思います.

また,特に,今回の物体認識のCNNは,R-CNNですから,この論文のモデルですよね? https://www.cv-foundation.org/openaccess/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf

再帰結合やLSTMが無いモデルだと思いますので,内部状態を持たないと思います. であれば,サービスポートを使ったリクエスト・レスポンス系の方法のほうが,どの画像に対する認識結果なのかが明らかであり,認識失敗なども受け取れるので,サービスポートの活用も検討していただければと思います.

ダウンロード

最新バージョン

初めての方へ

Windows msi(インストーラ) パッケージ (サンプルの実行ができます。)

C++,Python,Java,
Toolsを含む
1.2.0-RELEASE

RTコンポーネントを開発するためには開発環境のインストールが必要です。詳細はダウンロードページ

統計

Webサイト統計
ユーザ数:1761
プロジェクト統計
RTコンポーネント292
RTミドルウエア23
ツール20
文書・仕様書1

旧Webサイト

OpenRTM.org旧Webサイト

OpenHRP3

動力学シミュレータ

Choreonoid

モーションエディタ/シミュレータ

OpenHRI

対話制御コンポーネント群

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク

VirCA

遠隔空間同士を接続し、実験を行うことが可能な仮想空間プラットホーム