812 'space shuttle' 99.9828% |
はじめに
OpenCV 3.3.0-rcでcoreに移動した dnn モジュールを試してみようとチュートリアルのプログラムを動作させようとしたが、ドキュメント内のリンク先が見当たらなかった。それゆえ、3.2.0 contribのサンプルを使用してみたが、APIが変更されておりサンプルプログラムをコンパイルできなかった。上記内容をまとめて、OpenCV の Issue として報告したところ、早速対応作が記載されたので、試してみた。
修正内容
1 caffe_googlenet.cpp2 bvlc_googlenet.prototxt
3 synset_words.txt
サンプルプログラムと、2、3を取得し、 bvlc_googlenet.caffemodel と space_shuttle.jpg を同じフォルダーにおき、コンパイルを行う。
caffe_googlenet を引数なしで、実行すると、space_shuttle.jpg 画像データの内容の分類を行う。結果は、 99.9828% でスペースシャトルと判定している。
実行結果 |
サンプルの概要
サンプルプログラムは、判定対象の画像ファイルのパスを引数にすることができる。Caffe モデルとweightの読み込み
Net net = dnn::readNetFromCaffe(modelTxt, modelBin);
入力された画像は、前処理で、224x224にリサイズされ、平均値をひかれ、 Mat型のinputBlob に変換される。
Mat inputBlob = blobFromImage(img, 1, Size(224, 224),Scalar(104, 117, 123));
入力画像を設定
net.setInput(inputBlob, "data");
予測実行
Mat prob = net.forward("prob");
最高確率を有するクラスIDとその確率を取得
getMaxClass(prob, &classId, &classProb);
後処理
クラスIDから、クラス名への変換
以上
0 件のコメント:
コメントを投稿