「Jetson Nano」のCUDAコアで“Hello AI World”を動作させてみるJetson Nanoで組み込みAIを試す(3)(2/2 ページ)

» 2019年08月07日 10時00分 公開
[大原雄介MONOist]
前のページへ 1|2       

推論にかかる時間は結構変動が大きい

 では実際に動かしてみよう。完成したバイナリは、先ほどのjetson-inference/buildの下にあるaarch64/binの下に置かれている。ここにカレントディレクトを移した上で、

$ ./imagenet-console --network=googlenet orange_0.jpg output_0.jpg

を実行すると(図8)、入力ソース(この場合だとorange_0.jpg)を読み取って分類を実施、結果をoutput_0.jpgに返す(図9)。

図8 図8 完成したバイナリを実行(クリックで拡大)
図9 図9 画面内左側が元画像のorange_0.jpg。同右側がInferenceによる推論結果で、左上に“97.900% orang”"として結果が追記されている(クリックで拡大)

 ちなみに--networkをresnet18にすればResNet-18が、resnet50にすればResNet-50がそれぞれ利用されることになる。

 さて、表1にこれら3つのネットワークを利用してInferenceを実行した場合の所要時間と精度(というか、確率)をまとめた。精度というのは、そのネットワークが何%程度の確率でorange_0.jpgが「オレンジである」と見なしたかを示す。結果から分かるように、ネットワークによって精度や所要時間に結構なバラつきがあることが分かった。

CPU平均所要時間(ms) CUDA平均所要時間(ms) Orangeである確率(%)
GoogleNet 113.7 112.9 97.90
ResNet-18 99.3 98.7 99.60
ResNet-50 133.1 132.4 99.80
表1 各ネットワークでInferenceを実行した場合の所要時間と精度

 ちなみに、待機時の消費電力は4.5W程度、Inferenceを行っている時の消費電力は6.8W程度であったが、恐らくはまだフルにCUDAコアが動いているという状況ではないので、この先どの程度消費電力が増えてゆくかは引き続きチェックしたいと思う。

 なお表1では所要時間の全体をまとめたが、実際にはもう少し細かく数字が出る。例えば、GoogleNetのある実行時間は、

CPU CUDA
Pre-Process 0.106ms 1.711ms
Network 116.998ms 114.749ms
Post-Process 0.394ms 0.391ms

となっており、両方にそれなりの負荷が掛かっていることが見てとれる。

 ところで、表1では「平均」の値を示したが、実は結構変動が大きい。そこでこれら3つのネットワークについて、それぞれ10回ずつInferenceを実行し、合計の所要時間の平均、最大、最小と標準偏差を取ったのが表2である。なんというか、非常にバラつきが大きいのが分かる。まぁ実際には1フレーム単位での処理ではなく、それこそカメラ入力から連続的に画像を取り込んでリアルタイムに分析を行う、といった使い方がむしろ多そうなので、平均フレームレートで測定するのが正しい評価方法なのかもしれない。

プロセッサ 平均所要時間(ms) 最小所要時間(ms) 最大所要時間(ms) 標準偏差(ms)
GoogleNet CPU 113.7 61.3 189.0 39.1
CUDA 112.9 60.7 188.0 39.1
ResNet-18 CPU 99.3 53.0 150.2 34.8
CUDA 98.7 52.3 150.3 34.9
ResNet-50 CPU 133.1 92.9 273.3 50.7
CUDA 132.4 92.2 273.0 50.8
表2 各ネットワークでInferenceを実行した場合の所要時間の平均、最大、最小と標準偏差

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.