MachineLearning
DeepLearning
ssd
Caffe
Pelee

物体検出モデルSSDの派生ーPeleeモデルの実力はいかに?

はじめに

現在、情報系の大学に通う大学4年生です。

今回は、今年(2018)の4月に発表された、物体検出モデルPeleeについて調べてみました。

Peleeについて

Peleeの論文のタイトルは、「Pelee: A Real-Time Object Detection System on Mobile Devices」です。

タイトルの通り、モバイル端末でのリアルタイムでの物体検出に適したモデルらしいです。

つまり、処理速度を上げつつ、モデルの大きさ(パラメータ数)を抑えたモデルらしいです。

Peleeモデルのテクニック

PeleeモデルはDenseNetベースのモデルで、これをSSDと組み合わせたようです。

スクリーンショット 2018-06-14 10.45.13.png
Densely Connected Convolutional Networks

Peleeの主なテクニックとして、以下のようなものが上げられています。

  • ResBlockのconvにおける1×1カーネル

これにより、モデルの大きさを削減できる。

スクリーンショット 2018-06-14 11.03.17.png
Pelee: A Real-Time Object Detection System on Mobile
Devices

  • Post Activation

これにより、最後の推論時にまとめて正規化・活性化できるので、処理速度が向上する。

スクリーンショット 2018-06-14 11.13.22.png
Post Activation vs Pre Activation

  • SSDの特徴マップで38x38を使用しない

これにより、モデルの大きさが削減でき、処理速度が向上する。

スクリーンショット 2018-06-14 11.17.09.png
Pelee: A Real-Time Object Detection System on Mobile
Devices

比較

学習済みモデルを使って、SSD(VGGベース)とPeleeのモデルの大きさと速度を比較してみたいと思います。

精度の計測は、実際に行っていないので論文の値を載せておきます。

Method 07+12 07+12+coco
SSD300 77.2 81.2
Pelee 70.9 76.4

SSDモデルPeleeモデルはGitHubにCaffe形式で上げられています。

まずは、モデルの大きさが以下の通りです。

SSD_300x300 Pelee_304x304
約100M 約20M

SSDの方が約5倍くらい大きいようです。

次に、コマンドラインによる(CPUの仮想マシン環境下における)ベンチマークが以下の通りです。

SSD_300x300 Pelee_304x304
Average Forward pass 475.895 ms 90.4204 ms
Average Backward pass 386.498 ms 41.6736 ms.
Average Forward-Backward 863.5 ms 133.7 ms
Total Time 8635 ms 1337 ms

Peleeの方がかなり速いようです。

ついでに、物体検出の様子をGIFにしてみました。

SSD-Pelee.gif

左がSSD、右がPeleeです。

検出を表示する閾値は、両者とも0.6以上に設定しています。

結果は、Peleeの方も結構いい感じに検出してくれているように見えます。

最後に

PeleeはSSD(VGGベース)よりも、たしかに処理速度が早く、モデルの大きさが小さいモデルでした。

論文によると精度はPeleeの方が少し低いので、Peleeは精度と速度をトレードオフしたモデルのようです。

そして、最後の最後に一言。

Caffeのインストールが難しすぎる。。。

参考