深層学習を用いたコンポーネント群の作成
深層学習を用いたコンポーネント群の作成
投稿日時:
月, 2017-10-30 15:28
概要・特徴
- 近年,深層学習を用いた物体認識に関する研究が広く行われてきているが,こうしたパッケージをミドルウェアプラットフォームに適用した事例は見られない. そこで, 本コンポーネントは予め構築した深層学習モデルを用いて, 取得した画像を深層学習の処理にかけ物体認識を行う.
仕様
- 言語: Python
- OS: Ubuntu16.04
- RTミドルウェア:OpenRTM-aist-1.1.2
- DeepLearningエンジン : Caffe
- CUDA : CUDA8.0
- cuDNN : cuDNN_v5
ソースコードおよびマニュアル
- py_faster_rcnnRTCマニュアル
- ソースコード
関連マニュアル
概要スライド
認識結果画像

動画
投稿URL : https://www.youtube.com/watch?v=-R-1AGQN92M&t=44s
ライセンス
注意
本コンポーネントはrbgirshick様から提供されているライブラリを使用しています. そちらのライセンスに関してはこちらの指示に従ってください.
問合先(メールアドレス):
140447008<at>ccalumni.meijo-u.ac.jp
最終更新日時:
火, 2017-12-19 17:58
コメント
nmsやrpnというフォルダに入っているファイルは別の人が作ったものだと思うのですが、ライセンス文のファイルは同梱しなくても大丈夫なのでしょうか?
宮本様 早速の貴重なコメントありがとうございます. おっしゃるとおり,nms,rpnなどのライブラリは他者が著作権を持つライブラリとなります.ライセンスの範囲を明確にする意味で,公開してたRTCの中身の修正及び,ドキュメントと,HPへのライセンスに関する注記をいれました. その他,お気づきの点ございましたらコメントいただければ幸いです.
内容を確認させていただきました.
IDLを提案されており,流行りの深層学習を利用したRTCということで有用性の高い作品と感じました.
何点かコメント&質問させていただきます.
高橋様 ご意見ありがとうございます. 一つ目ご意見に関しては, 少しでも高速性を追求するためにMat型を参照渡しで実装し, ソースコードをgithubの方で更新させて頂きました. 二つ目のご意見に関しては, 奥行き情報は物体インターフェースを拡張するより, 共通カメラインターフェースの拡張を行うべきだと考えております. 間に合うかわかりませんが, 共通カメラインターフェースを拡張する形で検討致します.
ソースコードを読んだのですが、以下の点が気になりました。
宮本様 ご意見ありがとうございます. 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関数を使った方が効率的だと思います。
宮本様 再度のご意見ありがとうございます.
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が無いモデルだと思いますので,内部状態を持たないと思います. であれば,サービスポートを使ったリクエスト・レスポンス系の方法のほうが,どの画像に対する認識結果なのかが明らかであり,認識失敗なども受け取れるので,サービスポートの活用も検討していただければと思います.