Jetson TX1 でも看板検出やってみた

NVIDIA製の組み込みコンピュータ「Jetson TX1」に、以前作成した「看板検出」デモを移植し、動作させてみました。

看板検出デモについては、以前の記事を参照してください。
『ダイレクトなR-CNN』で物体検出する。

by Nagasawa Kazuki 2016/2/16

NVIDIA Jetson プラットフォーム Meet-up #01 にて展示しました
NVIDIA Jetson プラットフォーム Meet-up #01 にて展示しました

環境構築

基本的には、NVIDIAから配布されている標準的なOS・ミドルウェアを利用しています。

OS Ubuntu 14.04 (LTS)
CUDA 7.0
cuDNN version 4
OpenCV 3.0.0
Python 2.7
Deep Learning framework Caffe (2015/12/18 時点でgit cloneしたもの)

OpenCVについては、看板検出のデモで使用したUSB接続Webカメラのデバイスを取得できなかったため、OpenCV4Tegraを使用せず、Linux版のOpenCVを使用しました。
時間切れのため未検証となりましたが、Jetson TX1用のCameraモジュールをインストールしておく必要があったのかもしれません。

Jetson TX1開発キット (http://www.nvidia.com/object/jetson-tk1-embedded-dev-kit.htmlより)
Jetson TX1開発キット
(http://www.nvidia.com/object/jetson-tk1-embedded-dev-kit.htmlより)

デモ移植までの苦労あれこれ

デモの速度とニューラルネットワーク調整

元の看板検出デモは、Geforce 980M というハイエンドなノートPC用GPUを利用し、256×256ピクセルの画像をニューラルネットワーク (= NN) に与えて看板検出を行っていました。
この構成をそのままJetson TX1移植したところ、1回の検出に2秒程度かかり、とてもデモには使用できない速度でした。(Jetson TK1と比べたら格段に速いのですが。)

そこで、NNの構成を変えて試行錯誤するのは時間がかかるため、NNの構成は元と同じGoogLeNetのまま、入力画像を128×128と1/4サイズにすることで対応しました。
これにより、検出の精度はある程度犠牲になりましたが、1回の検出が0.3秒程度となり、それなりに“見せられる”デモの形にすることができました。

SDカードのサイズ容量

今回使用したのは16GBのSDカードでした。通常のJetson TX1の使い方であれば十分と思われるサイズでしたが、今回は容量ぎりぎりになってしまいました。デモの用途に応じて多めに見積もっておくべきでした。特に容量を割いたのが以下2つでした。

  • OpenCV本体。Linux版を用いたため、ビルド先サイズは2GB!!SDカードの容量からすると重量級ミドルウェアに。
  • デモ用途で、看板検出関係の動画も一緒にSDカードに入れた。合わせて 1GB程度。

デモ中にフリーズ発生

看板検出デモを長時間動かしていると何故か画面がフリーズし、その後の操作を一切受け付けなくなる現象が頻発しました。ネットワーク経由のリモートコンソールも落とされてしまうため、リブートするしかなくなります。
CUDA、cuDNN、OpenCV 等のミドルウェアを疑い、様々なバージョンを入れ替え試してみましたが、時間切れで原因は不明のままでした。原因特定して、正しく使えるようにしたいところです。

未だ原因不明なのですが、1つ怪しい点が、ディスプレイへの描画です。

  • 2Kディスプレイだと、長時間稼働して落ちる。
  • 4Kディスプレイだと、デモ起動後わずか数秒で落ちる。

状態となっていて、OpenCVによる描画が起因しているのかもしれません。

デモ展示

2016/1/5開催の「つくばチャレンジシンポジウム」、2016/1/22開催の「NVIDIA Jetson プラットフォーム Meet-up #01」にて展示しました。Jetson TX1効果もあり、多くの人にデモを見てもらうことができました。
(フリーズする問題は解決しないままでしたが、お客さんが集まる時間帯には持ちこたえてくれました。セッション中に何度かリブートしましたが…。)

NVIDIA Jetson プラットフォーム Meet-up #01 での様子
NVIDIA Jetson プラットフォーム Meet-up #01 での様子

参照

 『ダイレクトなR-CNN』で物体検出する
 NVIDIA Jetson プラットフォーム Meet-up #01 の様子 (Togetter)