コンテストで360°カメラのRICOH THETA Vを使っていました。
最新のTHETA Xではありませんでしたが、十分に機能してくれました。
個人的な開発・デバッグではTHETA Vで満足だった理由を紹介します。
RICOHのTHETA Xではなく、THETA Vを購入した理由
下記のコンテストで360°カメラのRICOH THETA Vを使っていました。
RICOHのTHETA Vです。USB2.0接続で少し古いタイプです。
決めた理由は色々なAPI・ライブラリが公開されていて、色々遊べそうだったためです。
本来は最新のTHETA Xが欲しかったのですが、10万以上するので購入を諦めました。
この辺りを少し掘り下げて説明したいと思います。
コストの観点
RICOH THETA Vだと5万以下で、中古だともっと安く購入できます。
THETA Xはまだ比較新しいので、あまり中古も出回っておらず新品で10万ほどします。
コンテストで使う際は手荒に使うので、ボロボロになって良いように安いVを選びました。
USB速度の観点
まず筆者が、最新のTHETA Xの高速なUSB3.2を使いきれる自信がありませんでした。
正直USB2.0の数fpsでもライブストリーミングで画像認識させるのに十分でした。
デバッグの観点
デバッグする際に、必ずUSBケーブルを無理に延長させる自信(?)がありました。
USB2.0だと理屈上は5mまで伸ばせるので、問題ないです。
ただUSB3.2の場合、どういう結果・影響になるか怪しかったためです。
USB2.0の360°カメラの通信帯域(bitrate)
実際にUSBの使用帯域として、どれ位なのかデバッグレベルで確認してみました。
export GST_DEBUG=4
パイプラインの効率とかもあるかもしれませんが、GStreamerのログの数字を追っています。
テストで使用したプログラムなどは下記リポジストリに保存しています。
テスト動画は下記です。
今回は360°カメラのRICOH THETA VをKV260に接続テストしています。
GStreamerのデバッグログを見ると同時に。2kと4Kの画像でのスピードでもテストしていきます。
まずは、THETAにGStreamerを使えるように下記手順でライブラリをインストールしました。
https://github.com/nickel110/gstthetauvc.git
1 2 3 |
git clone https://github.com/nickel110/gstthetauvc.git cd gstthetauvc/thetauvc/ make |
1 2 3 4 |
sudo find / -type d -name 'gstreamer-1.0' ls /usr/lib/aarch64-linux-gnu/gstreamer-1.0 sudo cp gstthetauvc.so /usr/lib/aarch64-linux-gnu/gstreamer-1.0 ls /usr/lib/aarch64-linux-gnu/gstreamer-1.0 |
1 2 |
sudo /sbin/ldconfig -v gst-inspect-1.0 thetauvcsrc |
テスト結果
下記例のように360°のYOLOXの物体検出をテスト実行しています。
理論上はUSB2.0の480Mbpsが最大ですが、実際はもっと低いと思います。
コンテストでは4k(3840p)は使わなかったですし、2k(1920p)でも十分に満足でした。
1 2 3 4 5 |
sudo su cd kv260-ubuntu-test/yolox-test/ source /etc/profile.d/pynq_venv.sh export GST_DEBUG=4 python3 app_gst-yolox-real-360-2divide.py |
2kの画像…40Mbps程度でした。
bitrate=(uint)43181526;
360°の物体検出としては6fps程度で実行されていました。
1 2 3 |
0:00:07.751492592 5122 0xaaaaf53132a0 INFO GST_STATES gstbin.c:2069:gst_bin_get_state_func:<pipeline0> getting state 0:00:07.752487562 5122 0xaaaaf5fed360 INFO baseparse gstbaseparse.c:4088:gst_base_parse_set_latency:<h264parse0> min/max latency 0:00:00.033366666, 0:00:00.033366666 0:00:07.752937767 5122 0xaaaaf5fed360 INFO videodecoder gstvideodecoder.c:1633:gst_video_decoder_sink_event_default:<avdec_h264-0> upstream tags: taglist, video-codec=(string)"H.264\ \(Baseline\ Profile\)", minimum-bitrate=(uint)42394646, maximum-bitrate=(uint)43093787, bitrate=(uint)43181526; |
4kの画像…120Mbps程度でした。
bitrate=(uint)125117561;
360°の物体検出としては3fps程度で実行されていました。
1 2 3 |
0:00:39.427957699 5325 0xaaaae1e9b2a0 INFO GST_STATES gstbin.c:2069:gst_bin_get_state_func:<pipeline0> getting state 0:00:39.430027031 5325 0xaaaae3896f60 INFO baseparse gstbaseparse.c:4088:gst_base_parse_set_latency:<h264parse0> min/max latency 0:00:00.033366666, 0:00:00.033366666 0:00:39.430708689 5325 0xaaaae3896f60 INFO videodecoder gstvideodecoder.c:1633:gst_video_decoder_sink_event_default:<avdec_h264-0> upstream tags: taglist, video-codec=(string)"H.264\ \(Baseline\ Profile\)", minimum-bitrate=(uint)123949572, maximum-bitrate=(uint)125917524, bitrate=(uint)125117561; |
まとめ
コンテストで360°カメラのRICOH THETA Vを使っていました。
最新のTHETA Xではありませんでしたが、十分に機能してくれました。
個人的な開発・デバッグではTHETA Vで満足でした。
よろしければ、皆様も是非360°カメラを使ってみてください。
コメント