Closed kyakuno closed 3 years ago
サンプルコードがないので、他のサンプルコードを参考に実装
import sys, os
import cv2
import numpy as np
from openvino.inference_engine import IECore
img_file = "age-gender-recognition-retail-0001.jpg"
ie = IECore()
# モデルの読み込み
net = ie.read_network(model='age-gender-recognition-retail-0013.xml', weights='age-gender-recognition-retail-0013.bin')
exec_net = ie.load_network(net, 'CPU')
inblobs = (list(net.inputs.keys()))
outblobs = (list(net.outputs.keys()))
print(inblobs, outblobs)
# 入力画像読み込み
img = cv2.imread(img_file)
# 入力データフォーマットへ変換
h, w = 62, 62
img = cv2.resize(img, (w, h)) # サイズ変更
in_img = img.transpose((2, 0, 1)) # HWC > CHW
in_img = np.expand_dims(in_img, axis=0) # 次元合せ
# 推論実行
res = exec_net.infer(inputs={'data': in_img})
print(res)
https://github.com/openvinotoolkit/open_model_zoo/blob/master/models/intel/age-gender-recognition-retail-0013/assets/age-gender-recognition-retail-0001.jpg の画像に対して、推論結果が公式の情報と合わない。 公式の情報: age=18.97 推論結果: age=25.19
こちらで報告されている問題と同じ?公式の情報が間違いなだけ? https://community.intel.com/t5/Intel-Distribution-of-OpenVINO/age-gender-recognition-retail-0013-output/m-p/1141530
以下のコマンドでONNXエクスポート可能
openvino2tensorflow \
--model_path age-gender-recognition-retail-0013.xml \
--output_saved_model --output_pb \
--output_onnx \
--onnx_opset 11
OpenVinoの公式のサンプル実装は下記となります。 https://github.com/openvinotoolkit/open_model_zoo/blob/master/demos/interactive_face_detection_demo/cpp/face.cpp
ビデオモードの場合、複数フレームで平滑化するようです。
void Face::updateAge(float value) {
_age = (_age == -1) ? value : 0.95f * _age + 0.05f * value;
}
void Face::updateGender(float value) {
if (value < 0)
return;
if (value > 0.5) {
_maleScore += value - 0.5f;
} else {
_femaleScore += 0.5f - value;
}
}
1フレーム前の顔のbounding boxのiouが0.5以上であれば同じ顔と認識して平滑化、とかできるとデモとしては良さそうです。
Ageは100倍しているだけみたいで、現在の実装で問題なさそうです。
AgeGenderDetection::Result r = {ageBlobMapped.as<float*>()[idx] * 100,
https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/intel/age-gender-recognition-retail-0013 Apache