windows10搭載のゲーミングノートでリアルタイム物体検出がどこまでできるか試してみた話(SSDで物体検出)

2020年5月6日

ネコ(haku ちゃん)を検出

今日は、ゲーミングノート(ノートパソコン)を使ったリアルタイム物体検出の話をします。

windows10でのDeep Learning実行環境構築についてはこちらの記事を参考にしてください。

また、SSDって何?という人はこちらの記事を参考にしてください。

ゲーミングノートを使ったリアルタイム物体検出に関する記事は、ネットで調べてもあまり見かけません。

記事が少ない理由としては、

  • ノートパソコンの性能、特にGPUの性能が低いと、まともな物体検出ができない。
  • そのようなノートパソコンは基本的にゲーミングノートと呼ばれるジャンルになるが、ゲーマーがDeep Learningで物体検出しようと考える可能性は低い。
  • そもそも、個人がゲーミングノートで物体検出する理由も目的もない。

などが考えられます。

一方でゲーミングノートで実行できれば、様々なメリットが生まれます。

  • 好きな場所に持ち運んで試行できる。
  • デスクトップパソコンが設置困難な場所にも設置できる。
  • オンデマンド化が可能(必要なときに必要なだけ設置して実行できる)

AI(物体検出など)をちょっと試してみたいというニーズは、少なからずあると思います。

今回色々と試してみたので、参考にしてもらえればと思います。

今回準備した機材

準備した機材を以下に示します。

機材項目内容
ノートパソコンDell G7 15プラチナ
OSWindows 10 Pro (64bit)
CPUIntel Core i7 – 8750H , 2.2GHz
RAM16.0GB
ビデオカードNVIDIA GeForce GTX1060 with Max-Q Design
SSDC: 256GB
HDDD: 1T
WebカメラUSB2.0 接続Papalook(詳細は前回記事を参照ください)
ELP(200万画素、5-50mm)
ミニ三脚Manfrotto PIXI ブラック MTPIXI-B カメラ用

画像撮影(キャプチャプログラムの実行)

上記ノートパソコンにWebカメラを接続し画像を撮影しました。

画像撮影は、PythonとOpenCVで作成したキャプチャプログラムを使用しています。

キャプチャプログラムの詳細は前回記事を参考にしてください。

撮影時のフレームレートは 20~30FPSでした。

画像のキャプチャは、ゲーミングノートで全く問題なく実行できることが分かりました。

なお、ゲーミングノートは重いです。一般的に 2.0~2.5kgはあります。

片手でノートパソコンを持って、もう片方の手でWebカメラを持って撮影するのは、正直しんどいです。

屋外で画像を撮影する際は、ノートパソコンはどこかに置き、Webカメラを動かして撮影した方が良いと思います。手首を痛めます。

学習条件および結果(Deep Learningの実行)

今回は以下の2パターンで物体検出を試しました。

  • 柿の種
  • ネコと車

柿の種

柿の種は「おかき」と「ピーナッツ」を識別して位置が検出できるか試しました。

なお、ImageNetで学習済みのvgg16ベースのSSDモデル(.pthファイル)を用いて転移学習を行っています。

転移学習を行うことで、少ない画像枚数で認識精度を高めることができます。

学習条件および結果を以下に示します。

項目条件または結果
画像枚数70枚
学習回数3000回
学習完了までの時間40分
柿の種の学習回数とlossの関係

3000回の繰り返し学習を実施した結果、loss は約1.5になりました。

loss が小さい方がモデルの性能が良い(推論精度が高い)ので、今回はまあまあの結果だと思います。

さらにlossを下げるには以下の対策が考えられます。

  • 撮影画像のバリエーションを変えて枚数を増やす。
  • 学習率を変えて繰り返し学習を行う。

ネコと車

家で飼っているネコ(hakuちゃんとmamiちゃん)2匹を識別して位置が検出できるか試しました。

また、近所に駐車してあった車を学習させ、車の車種識別はせずに車かどうか識別して位置が検出できるか試しました。さらに、走っている車の検出が可能かも試しました。

なお、こちらもImageNetで学習済みのvgg16ベースのSSDモデル(.pthファイル)を用いて転移学習を行っています。

学習条件および結果を以下に示します。

項目条件または結果
画像枚数150枚
学習回数3000回
学習完了までの時間約30分

3000回の繰り返し学習を実施した結果、loss は約1.5になりました。

lossの値だけ見ると先ほどの柿の種のときと同じです。

ですが、柿の種の学習結果と比べ、lossのばらつきが若干大きいことが分かります。

lossの意味は、物体とラベルを突き合わせてどのくらい間違っていたか、その割合を示すものです。

柿の種の場合は、背景の変化があまりなく「おかき」か「ピーナッツ」かを当てれば良いだけなので、大きく間違うことが少なかった分 lossのばらつきが小さくなったと考えられます。

一方、ネコと車の場合は、背景の変化が大きく、ネコと車という全く異なる形状・サイズの物体を学習させているため、間違いも多くその分 lossのばらつきも大きくなったと考えられます。

先ほど述べたように、さらにlossを下げるには以下の対策が考えられます。

  • 撮影画像のバリエーションを変えて枚数を増やす。
  • 学習率を変えて繰り返し学習を行う。

物体検出結果

柿の種

検出結果を以下に示します。

柿の種を検出

分類数は「おかき」と「ピーナッツ」の2種類で合っています。

また、総数は「おかき」が 7個で、「ピーナッツ」が 3個で合っています。

正確に数量カウントと位置検出ができています。

なお、右側の画面の左上にフレームレート(一秒間に何フレーム描画しているか)が表示されています。

柿の種の物体検出では 7~ 9FPS 程度のフレームレートでした。

動きの少ない物体であれば、十分使えるレベルです。

ノートパソコンのGPU性能を上げれば、さらにフレームレートを上げることができると思います。

逆に、GPUの性能が今回試したノートパソコンよりも低ければ、フレームレートは下がると思います。

これからノートパソコンでDeep Learning を試してみたい方がいれば、今回の結果を参考にしていただければと思います。

ネコと車

検出結果を以下に示します。

ネコ(mami ちゃん)を検出

ネコは、画面に1種類しかいないので分類数1、総数も1で合っています。

また、名前はmami ちゃんなので識別もOK。検出精度は0.96(96%)とかなり高い値です。

駐車している車を検出

駐車している車を検出させました。

分類数は車だけなので1、総数は4台で合っています。

検出精度は、手前から1.00(100%)、0.76(76%)、0.79(79%)、0.97(97%)です。

若干検出精度が低い車がありますが、これは学習させた画像のバリエーションが少ないためと考えられます。

精度を上げるには、もう少し画像のバリエーションを増やす必要があります。

走行中の車を検出

走行中の車を検出させました。

分類数は1、総数は5台で合っています。

検出精度は、左から0.93(93%)、0.77(77%)、0.97(97%)、0.87(87%)、0.89(89%)です。

ここでも検出精度が低い車があります。

車の後ろ側の画像を学習させていないことが影響していると考えられます。

一方フレームレートを見ると、柿の種の物体検出では 7~ 9FPS 程度のフレームレートでしたが、ネコでは6FPS、車では5FPSでした。

ネコと車ではフレームレートが若干低い値となっています。

この原因として、推論時の計算負荷が影響していると考えられます。

柿の種の時とは異なり、ネコと車の場合は背景がリアルタイムに変化します。

フレームレートが下がるということは、それだけ計算処理に時間が掛かっているということです。

Webカメラから入力される画像に対してリアルタイムに計算して推論結果を画面表示しなければならないため、この一連の計算処理にはかなりマシンスペックが必要なことが分かりました。

やはり、CPUとGPUの性能はかなり必要だと思います。

フレームレートを上げる策としては以下が考えられます。

  • CPUをハイスペックにする(高クロックモデル、Core i 9 系)
  • GPUをハイスペックにする(RTX20XX 系)
  • 物体検出モデルとしてSSDではなくYOLOを用いる
  • メモリの容量を増す(24G、32G > 16G、DDR5以上)
  • ストレージをオールSSDとする
  • 冷却性能を上げる

計算負荷に直接、間接的に影響を及ぼすものは全てハイスペック化するのが一番簡単です。

ですが、ゲーミングノートでそこまで求めないのであれば、少なくともCPUとGPUのハイスペック化をやるだけでもかなりフレームレートは上がると思います。

逆に言うと、GPUを搭載していないノートパソコンでは、リアルタイム物体検出はかなり困難なことが分かりました。

今回の一連の実験が、これから物体検出を実行してみたい方の参考になれば幸いです。

まとめ

  • ノートパソコンで物体検出したいなら、ゲーミングノートが必須
  • ゲーミングノートは重い(2.0~2.5kg)
  • ゲーミングノートでWebカメラを使っての画像撮影は全く問題ない(快適)
  • ゲーミングノートでDeep Learning の学習も可能
  • Deep Learning の学習時はゲーミングノートのファンが鳴りっぱなしでうるさい
  • また、ゲーミングノートがかなり熱を持つので、できれば冷却システムがあると良い
  • ゲーミングノートで物体検出させる場合は、ビデオカード(GPU)の性能が重要
  • GPUの性能が高い程、リアルタイム物体検出時のフレームレートが上がると考えられる