vitis::ai::FaceFeature - 1.2 Japanese

Vitis AI ライブラリ ユーザー ガイド (UG1354)

Document ID
UG1354
Release Date
2020-07-21
Version
1.2 Japanese
顔イメージ (cv::Mat) の特徴点を取得するためのベース クラス。

入力は顔イメージ (cv::Mat) です。

出力は、入力イメージ内の顔の特徴点です。

浮動小数点のサンプル コードを次に示します。

注記: 浮動小数点の特徴点と固定小数点の特徴点を取得するために、2 つのインターフェイスが提供されています。特徴点は、512 のエレメントから成るベクターです。
cv:Mat image = cv::imread("test_face.jpg");
auto network  = vitis::ai::FaceFeature::create("facerec_resnet20", true);
auto result = network->run(image);

固定小数点のサンプル コードを次に示します。

cv:Mat image = cv::imread("test_face.jpg");
auto network  = vitis::ai::FaceFeature::create("facerec_resnet20", true);
auto result = network->run_fixed(image);

類似性を求める計算式を次に示します。

固定小数点比較サンプル コードを次に示します。

 float feature_norm(const int8_t *feature) {
    int sum = 0;
    for (int i = 0; i < 512; ++i) {
        sum += feature[i] * feature[i];
    }
    return 1.f / sqrt(sum);
 }

/// This function is used for computing dot product of two vector
static float feature_dot(const int8_t *f1, const int8_t *f2) {
   int dot = 0;
   for (int i = 0; i < 512; ++i) {
      dot += f1[i] * f2[i];
   }
   return (float)dot;
}

float feature_compare(const int8_t *feature, const int8_t *feature_lib) {
   float norm = feature_norm(feature);
   float feature_norm_lib = feature_norm(feature_lib);
   return feature_dot(feature, feature_lib) * norm * feature_norm_lib;
}

/// This function is used for model "facerec_resnet20" 
float score_map_l20(float score) { return 1.0 / (1 + exp(-12.4 * score + 3.763)); }

/// This function is used for type "facerec_resnet64"
float score_map_l64(float score) { return 1.0 / (1 + exp(-17.0836 * score + 5.5707)); }

浮動小数点と固定小数点のイメージを比較した結果を次に示します。

図 1. facecompare の結果イメージ
Image sample_facecompare_result

関数クイック リファレンス

次の表に、vitis::ai::FaceFeature クラスに定義されているすべての関数を示します。

表 1. 関数クイック リファレンス
タイプ 名前 引数
std::unique_ptr< FaceFeature > create
  • const std::string & model_name
  • bool need_preprocess
  FaceFeature
  • void
  FaceFeature
  • void
FaceFeature & operator=
  • void
  ~FaceFeature
  • void
int getInputWidth
  • void
int getInputHeight
  • void
size_t get_input_batch
  • void
FaceFeatureFloatResult run
  • const cv::Mat & img
FaceFeatureFixedResult run_fixed
  • const cv::Mat & img
std::vector< FaceFeatureFloatResult > run
  • images
std::vector< FaceFeatureFixedResult > run_fixed
  • images