2017年11月20日月曜日

OpenCV の dnn の順方向のデータ伝搬に関して調べてみた。

はじめに

OpenCV のチュートリアルの解説では、順方向のデータ伝搬に関しては、

6 Make forward pass

        prob = net.forward("prob");                          //compute output

During the forward pass output of each network layer is computed, but in this example we need output from "prob" layer only.

と解説されている。

以前からこの最後のレイヤー名を指定するのは、レイヤー名を知っていることが前提であり、少し不便かと思っていた。

そこで、関数の説明を調べてみたら、モデルの最終レイヤーからの出力が欲しい場合、レイヤー名を指定しなくても(デフォルト値)問題ないことが分かった。

forward() [1/4]
Mat cv::dnn::Net::forward    (    const String &     outputName = String())

By default runs forward pass for the whole network.


試しに、caffe_googlenet.cpp で、

prob = net.forward();

に変更してみても、オリジナルと同等の結果を得られたことを確認した。

以上

0 件のコメント:

コメントを投稿