深層学習を用いた画像認識分野では様々なCNNのネットワーク構造が提案されており,ImageNetデータセット等を用いた予測精度比較が広く行われています.
じゃあどのCNNモデルを使うべきなんだろう…と考えていましたが,最近こんなtweetが目に入りました.
代表的なCNNアーキテクチャについて、パラメータ数や実際の演算量・時間、エネルギー消費などを精度との関係とともに検証。純粋に読み物として面白くてさくさく読めるし、肌感覚的にNW構造と計算量の関係を掴んでおくのは今やサバイバル術だしな https://t.co/6ZAEkWXKtu
— 水産品 (@sakanazensen) 2017年2月27日
予測精度による比較は広く行われていますが,計算速度やメモリ使用量による比較は見たことが無かったので,tweetで紹介されている論文"An Analysis of Deep Neural Network Models for Practical Applications"を読んでみました.
比較対象のCNNモデル
この論文では以下のCNNモデルを比較しています.
- AlexNet
- BN-AlexNet (batch normalized AlexNet)
- BN-NIN (batch normalized Network In Network)
- ENet
- GoogLeNet
- ResNet-18, 34, 50, 101, 152
- VGG-16, 19
- Inception-v3, v4
比較方法
この論文では以下の比較を行っています.
- 予測精度 (Top-1 Accuracy, single central-crop)
- 命令数
- 予測時間
- 消費電力
- メモリ使用量
予測精度による比較
まずは色々なところで目にする予測精度比較を見てみます.
(論文中Figure 1から引用)
縦軸はTop-1 Accuracyなので縦棒が長いほど良いCNNモデルです.ResNetやInceptionは後発なだけあって予測精度が高いことが分かります.
予測精度と予測時間による比較
予測精度が高いのはもちろん良いことなのですが,実応用では予測時間が気になるケースも多々あります.
コンペティションのように予測にいくらでも時間をかけられるなら良いのですが,リアルタイム性が要求される応用先ではなるべく高速に予測を行いたい気持ちがあります.
論文中では予測精度 vs 予測時間による比較を行っていました.
(論文中Figure 9から引用)
縦軸はAccuracy,横軸は1秒あたりに予測された平均画像数を表しています.図中の右上に円があれば,そのモデルは高速かつ高精度な予測を行えることを意味します.
各円の色はFigure 1の手法と対応しており,円の大きさは命令数と比例しています.
左のグラフはバッチサイズを1,右のグラフはバッチサイズを16としています.
予測精度と予測時間はトレードオフの関係にあることがわかります.当たり前と言えば当たり前かもしれませんが…
ResNetとInceptionはVGGと同等の予測時間にも関わらず高精度な予測を行っていることから,VGGを選ぶ理由はあまり無いのかなという印象です.
AlexNetおよびNINの予測時間は短いため,精度をそこまで気にしないケースならば選択肢に上がりそうです.
その他
予測精度と予測時間に特に興味があったため,この記事では上の比較を紹介しましたが,他にも様々な比較を行っているので興味のある方は論文を読んでみてください.
(論文で触れられているENetは著者らの提案手法のようです,論文中でもちょいちょいENetを推している言い回しが出てきましたね…)
参考文献
- A. Canziani, et al, "An Analysis of Deep Neural Network Models for Practical Applications", 2017. https://arxiv.org/abs/1605.07678