facebookで先日、話題になっていた世界最先端の実時間物体検出DNN(Deep Neural Network)のYOLO v2 (real time object detection)を試したときのメモ。Cudaの out of memoryエラーで1日ハマったので他の方の参考になればと思う。
- 環境
- ThinkPad T450
- CPU: Intel i7-5500U,
- GPU: nvidia 940m, moemory 1GB
- xubunut14.04.5
- Kernel 4.4.0-66-generic
- gcc/g++ 4.8.4
- ThinkPad T450
- Darknetのインストール
- この指示にしたがいDarknetをインストールする
- git clone https://github.com/pjreddie/darknet.git
- cd darknet
- makefileの先頭3行を以下に変更
- GPU=1
- CUDNN=0 #940mは1GBしかメモリがないので0にする
- OPENCV=1
- make
- Yolo: Real Time Object Detectionのインストール
- cd darknet
- 学習済みの重み(パラメータ)ファイルをダウンロード
- wget http://pjreddie.com/media/files/yolo.weights
- サンプルの実行
- ./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg
- 実行方法
- ウェブカメラ
- ウェブカメラをPCに接続し以下のコマンドを実行
- ./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights
- 動画ファイル
- Webm形式の動画ファイルは問題なく動作
- ./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights <video file>
- ウェブカメラ
- テスト
- ウェブカメラで撮った信号機の動画を学習済みのパラメータで試したところ信号機は問題なく認識された。車は乗用車をtruckと間違えるときはあるが、位置は問題ない。ただ、私の環境では約4フレーム/秒。リアルタイムとはいかないが、つくばチャレンジや@Homeのタスクによっては使えるレベル。最新GPUを搭載し、メモリを多く積んだマシンが欲しい。
- はまった原因
- darknetを実行するとCuda out of memoryのエラーで悩まされた。nvidia-smiコマンドでGPUのメモリ使用量がわかる。上の画面では981MB中961MBを使用している。chromeなどのウェブブラウズを起動すると数十MB使用するので、chromeを起動しながらコマンドを実行したのでout of memoryになったわけだ。メモリを多く積んだマシンが欲しい。
コメント