3.1. Windowsクイックテスト

Windowsプラットフォームでは、C++言語およびJava言語のサンプルデモを提供しています。サンプルはsdk\samplesディレクトリに存在します。サンプルはC++11標準コードを使用しているため、Visual Studio 2012の使用を推奨します。現在、Windows XPはサポートしていません。

本サンプルはサンプルコードを提供し、SDK APIの呼び出し方法、基本機能のテスト方法を理解していただくためにのみご利用ください。サンプルコードは変更したり、実際の開発工程でプログラムを書き換えたりすることができます。

C++言語サンプルデモ

1. OpenCVライブラリのインストールまたはコンパイル

SDK本体はOpenCVライブラリに依存しておらず、サンプルデモでのみ使用されています。サンプルの実行はopencv3.2ライブラリに依存します。

a) OpenCVのダウンロード

opencvの公式Webサイトから、Windowsプラットフォーム用のopencv3.2.0をダウンロードします。

b) 解凍およびインストール

ダウンロード後にファイルを開き、ディレクトリを選択してインストールします。選択したディレクトリ内へ、OpenCVフォルダを解凍します。

c) 環境変数の追加

次のように、システム環境変数にOpenCVライブラリディレクトリを追加します。

1) [マイコンピューター]を右クリックし、[プロパティ]をクリックします。

2) システムの詳細設定を選択します。

3) [詳細] > [環境変数]を選択してください。

4) 環境変数のPathを追加します。

d) 32bit OpenCVライブラリのコンパイル

opencv 3.2.0のexeインストールパッケージは,64bitライブラリのみが提供されています。32bitテストプログラムを実行する場合は、OpenCVのソースコードを使用して32bit OpenCVライブラリをコンパイルする必要があります。このとき、64bit OpenCVライブラリもソースコードと合わせてコンパイルすることを推奨します。

2. C++ サンプルテストの設定

SDKパッケージはVisual Studioテストプロジェクトを提供しています。C++11標準コードが使用しているため、Visual Studioバージョン2012、またはそれ以降のバージョンを推奨します。 以下はsample_face_detect_1vs1を例としたテストプロジェクトの設定手順です。

a) テストプロジェクトを開く

Visual Studioバージョン2012、またはそれ以降のバージョンで、[ツールバー] > [ファイル] > [開く] > [プロジェクト/ソリューション] を選択します。

次に、入手済みのSDKファイルが配置されたフォルダの中にある、下記プロジェクトファイルをクリックしてプロジェクトを開きます。

sdk\samples\c++\sample_face_detect_1vs1\sample_face_detect_1vs1.vcxproj

b) ヘッダファイルとライブラリの設定

インクルードディレクトリおよびライブラリディレクトリを順に変更します。 操作方法:[ソリューションエクスプローラー] > [プロジェクトの選択]の順にクリックします。[プロパティ]を右クリックし、[VC++ディレクトリ] > [インクルードディレクトリ]、または[ライブラリディレクトリ]を選択します。

[インクルードディレクトリ]または[ライブラリディレクトリ]を選択し、ドロップダウンメニューから[編集]を選択します。

手順1:SDKヘッダファイルディレクトリを追加します(相対パスも利用可能です)。 例:../ and../../../ include

手順2:OpenCVヘッダファイルディレクトリを追加します。例では、E:\opencv\build\include、E:\opencv\build\include\opencv および E:\opencv\build\include\opencv2です。

手順3:SDKライブラリファイルディレクトリを追加します(相対パスも利用可能です)。例ではsdk\libs\windows-x86_64(32bitシステムでは、windows-x86を選択)です。

手順4:OpenCV SDKライブラリファイルディレクトリを追加します。例では、E:\opencv\build\x64\vc14\libです。

c) SDKおよびopencvライブラリファイルの依存ファイルを追加

操作方法:[ソリューションエクスプローラー] > [プロジェクトの選択]の順にクリックします。[プロパティ]を右クリックし、[リンカー] > [入力] > [追加の依存ファイル]を選択します。

  • SDKライブラリファイル:

SDKライブラリファイル stidface_professional.lib を追加します。

  • OpenCV ライブラリファイル

OpenCVライブラリファイル:コンパイルしたOpenCVライブラリを使用している場合は、リリースバージョンに以下の内容を追加してください。

opencv\_core320.lib
opencv\_highgui320.lib
opencv\_imgproc320.lib
opencv\_imgcodecs320.lib
opencv\_videoio320.lib

デバッグバージョンに、以下の内容を追加します。

opencv\_core320d.lib
opencv\_highgui320d.lib
opencv\_imgproc320d.lib
opencv\_imgcodecs320d.lib
opencv\_videoio320d.lib

libと同じファイル名で、OpenCVに対応するdllライブラリをexe 実行時のexeディレクトリまたはシステムディレクトリに配置してください。

exeから解凍したOpenCVライブラリを直接使用する場合、デバッグバージョンとリリースバージョンに、以下の内容を追加します。

opencv\_world320.lib

exeを実行する場合、opencv_world320.dllはexeディレクトリまたはシステムディレクトリに配置します。

d) コンパイルの実行

前述の設定が完了した後、プロジェクトをコンパイルすることができます。exeを実行する際、SDKライブラリファイルfstidface_professional.dllをexeファイルと同じディレクトリに配置する必要があります。

e) SDKライセンス認証を設定

このサンプルでは、サンプル設定ファイル(ファイル拡張子はiniに該当)中で設定されたパスであるlicense_filepathの下に、ライセンスファイル(ファイル拡張子はlicに該当)を保存する必要があります。サンプル実行中、SDKのライセンス認証APIは上記パス下にあるライセンスファイル(ファイル拡張子はlicに該当)をロードします。なお、他のAPIを呼び出す前に、ライセンス認証APIでライセンス認証する必要があります。

サンプルの実行中にライセンスファイルを変更した場合、senseid_facepro_snフォルダ(設定ファイルのactivation_code_dirフォルダのパスに対応しており、カスタマイズすることが可能)、およびアクティベーションコードファイルを削除する必要があります。licファイルはアクティベーションコードファイルに対応しています。

ライセンス認証APIの定義については、「ライセンス認証 API」をご参照ください。オンラインサンプルでは、アクティベーション版ライセンスの一般的な呼び出しプロセスを示します。

  1. stid_face_professional_online_activate_license APIは、JCVから提供されたライセンスファイルの内容をロードします。

  2. stid_face_professional_online_activate_license APIは、ネットワーク化してライセンスをアクティベートします。

  3. stid_face_professional_online_activate_license は、アクティベートされた新しいライセンスファイルの内容を出力します。

  4. stid_face_professional_load_license_contentは、出力された新しいライセンスファイルをロードします。

  5. stid_face_professional_load_license_content は、STID_OKを返し、承認認証が成功します。

  6. stid_license_release_content は、アクティベートされたライセンスの内容を解放し、プロセスを終了します。

実行パラメーターについては、サンプルのパート3「サンプルの機能紹介とパラメーターの説明」をご参照ください。

Java 言語サンプルデモ

1. Java SDKをインストールし、環境変数を設定します。

2. Java ライブラリとOpenCVのjarパッケージをインストールおよびコンパイルします。

a) OpenCVのダウンロード

公式WebサイトからWindows用のopencv3.2.0をダウンロードします。

b) 解凍およびインストール

ダウンロード後にファイルを開き、ディレクトリを選択してインストールします。選択したディレクトリ内のOpenCVフォルダを解凍します。

c) OpenCVのJavaライブラリをシステムディレクトリにコピーする

32-bit システムの場合は、E:\opencv\build\java\x86\opencv_java320.dll をC:\windows\system32へコピーします。 64-bit システムの場合は、E:\opencv\build\java\x86\opencv_java320.dll をC:\windows\syswow64へコピーし、同時にE:\opencv\build\java\x64\opencv_java320.dll をC:\windows\system32 へコピーします。

3. Javaサンプルテストの設定

SDKパッケージはeclipseテストプロジェクトを提供します。 以下は、Detect_OneVSOneを例としたテストプロジェクトの設定手順です。

a) テストプロジェクトのインポート

eclipseを開き、[Toolbar] > [File] > [Import] を選択します。[Genreal] > [Existing Projects in Workspace]を選択し、[Next] ボタンをクリックします。[Select root directory] > [Browse..]から、SDK内のJavaサンプルの場所のパス、sdk \samples\java\java_samples\Detect_OneVSOneを選択し、[Confirm]をクリックします。

b) テストプロジェクトの設定

(1) JREシステムライブラリの設定

デモプロジェクト名を右クリックし、[Properties] > [Java Build Path] > [Libraries]をクリックします。全ての項目を選択し、[Remove]を右クリックします。[Add Library]を右クリックし、表示されたダイアログボックスで、[JRE System Library]を選択して、下部の[Next]をクリックします。次に[Workspace default JRE]を選択し、[Finish]をクリックします。

(2) テストプロジェクトに必要な jarパッケージを追加

Javaサンプルのテストには、JSON fileを解析するjarパッケージ gson-2.3.1.jar をダウンロードする必要があります。

デモプロジェクト名を右クリックし、[Properties] > [Java Build Path] > [Libraries] > [Add External JARs...] をクリックします。その後、OpenCVインストールディレクトリ内のjarパッケージ opencv\build\java\opencv-320.jarを選択します。

SDKディレクトリ内のSDK jarパッケージsdk\samples\java\StidFaceProfessional.jar およびJSONファイルを解析するjarパッケージgson-2.3.1.jarを選択します。

下部の [Apply and Close]をクリックします。

(3) SDKライブラリをシステムディレクトリへコピー

サンプルを実行するには、下記のとおりにdllファイルをWindowsシステムディレクトリにコピーします。

ⅰ).32bitシステムの場合

 sdk\libs\windows-x86\stidface_professional.dllおよびsdk\samples\java\jni_libs\x86\jni_facepro.dllをC:\Windows\system32 へコピーします。

ⅱ).64bitシステムの場合

 sdk\libs\windows-x86_64\stidface_professional.dllおよびsdk\samples\java\jni_libs\x86_64\jni_facepro.dllをC:\Windows\system32へ、さらにsdk\libs\windows-x86\stidface_professional.dllおよびsdk\samples\java\jni_libs\x86\jni_facepro.dllをC:\Windows\system64へ、それぞれコピーする必要があります。

(4) 上記の設定の完了後、プロジェクトをコンパイルして使用することができます。

(5) 実行パラメーターについては、サンプルのパート3「サンプルの機能紹介とパラメーターの説明」をご参照ください。

c) SDKライセンスの認証を設定

このサンプルでは、サンプル設定ファイル(ファイル拡張子はiniに該当)中で設定されたパスであるlicense_filepathの下にライセンスファイル(ファイル拡張子はlicに該当)を保存する必要があります。サンプルの実行中に、SDKのライセンス認証APIは上記パス下にあるライセンスファイル(ファイル拡張子はlicに該当)をロードします。なお、他のAPIを呼び出す前に、ライセンス認証APIでライセンス認証する必要があります。

サンプルの実行中にライセンスファイルを変更した場合、senseid_facepro_snフォルダ(設定ファイルのactivation_code_dirフォルダのパスに対応しており、カスタマイズ可能)、およびアクティベーションコードファイルを削除する必要があります。licファイルはアクティベーションコードファイルに対応しています。

ライセンス認証APIの定義については、「ライセンス認証 API について」をご参照ください。オンラインサンプルでは、アクティベーション版ライセンスの一般的な呼び出しプロセスを示します。

  1. stid_face_professional_online_activate_license APIは、JCVから提供されたライセンスファイルの内容をロードします。

  2. stid_face_professional_online_activate_license APIは、ネットワーク化してライセンスをアクティベートします。

  3. stid_face_professional_online_activate_license は、アクティベートされた新しいライセンスファイルの内容を出力します。

  4. stid_face_professional_load_license_content 出力された新しいライセンスファイルをロードします。

  5. stid_face_professional_load_license_content は STID_OKを返し、承認認証が成功します。

  6. stid_license_release_contentは、アクティベートされたライセンスの内容を解放し、プロセスを終了します。

4. サンプルの機能紹介とパラメーターの説明

1:パラメーターはコマンドラインパラメーターと設定ファイル内のパラメーターの2種類に分けられています。コマンドラインパラメーターはサンプル固有の機能に必要なパラメーターを提供しています。設定ファイル内のパラメーターは各サンプルの基本設定(ライセンスファイルパスとモデルファイルパスなど)を提供します。

2:サンプルの実行中にライセンスファイルを変更した場合、senseid_facepro_snフォルダおよびアクティベーションコードファイルを削除する必要があります。

a) sample_face_detect_1vs1(同じ機能を持つ対応するJavaサンプル名はDetect_OneVSOne)

1). 機能

設定命令セット、顔検知、顔特徴の抽出、顔の比較機能の検証。

2). 実行パラメーター

i). コマンドライン

[ini file path] [image A path] [image B path] ([image face orienttation])

-ini file path: 設定ファイルのパスとファイル名

-image A path: 画像Aのパスとファイル名

-image B path: 画像Bのパスとファイル名

-image face orientation:(オプション)画像中の顔の向きを指定するパラメーターです(2枚の写真はデフォルトで同じ向き)。 0:上向き、1:左向き、2:右向き、3:下向き このパラメーターがない場合、デフォルトで上向きとします。

ii). 設定ファイル

license_filepath:ライセンスファイル

activation_code_dir:アクティベーションコードファイルの保存されたディレクトリ名

alignment_model_filepath:顔検知モデルのパス

Verify_model_filepath:顔特徴抽出モデルのパス

compare_model_filepath:顔特徴比較モデルのパス

detector_config:顔検知モード設定。大顔認識モード、小顔認識モード、大小混合認識モード

alignment_count:(オプション)顔面の特徴点の繰り返す回数。回数を増やすことで特徴点の精度を上げることができますが、効率が下がります。 数値範囲:0x1〜0xff。

compare_threshold:顔比較のしきい値です。顔一致度のスコアが設定されたしきい値より高い場合、同じ人物として認定されます。 しきい値範囲:0~1。

3). 入出力

入力:2枚の写真および写真の中の顔の向き

出力:顔一致度スコア。2つの顔が同じ人物であるかどうかを判断します。

b). Sample_face_extract_image_feature_to_file (対応するjavaサンプル名は ExtractFeature となります)

1). 機能

顔比較及び顔特徴抽出機能を検証。他の顔認証サンプルが使用できるよう、特定のフォルダ内にあるすべての写真をjsonファイルに保存し、顔ライブラリを提供します

新しいサンプルを実行する際には、「3. Javaサンプルテストの設定」の「a) テストプロジェクトのインポート」を再度実行する必要があります。

2). 実行パラメーター

i). コマンドライン

[ini file path] [search image dir] [output feature file name] ([image face orientation])

-ini file path:設定ファイルのパスとファイル名

-search image dir:抽出元となる画像が保存されたフォルダ名

-output feature file name:画像特徴が保存されたJSONファイル名

-image face orientation(オプション)画像中の顔の向きを指定するパラメーターです(2枚の写真はデフォルトで同じ向き)。 0:上向き、1 :左向き、2:右向き、3:下向き このパラメーターがない場合、デフォルトで上向きとします。

ii). 設定ファイル

license_filepath:ライセンスファイル

activation_code_dir:アクティベーションコードファイルの保存されたディレクトリ名

alignment_model_filepath:顔検知モデルのパス

Verify_model_filepath:顔特徴抽出モデルのパス

detector_config:顔検知モード設定。大顔認識モード、小顔認識モード、大小混合認識モード

alignment_count:(オプション)顔面の特徴点の繰り返す回数。回数を増やすことで特徴点の精度を上げることができますが、効率が下がります。 数値範囲:0x1〜0xff。

3) 入出力

Input:画像の保存されたフォルダ名

Output:画像特徴の保存されたJSON形式のファイル

c). sample_face_singleliveness_1vsN

(対応するjavaサンプル名は、SinglelivenessOneVSNとなります)

1). 機能

モノキュラカメラによる顔トラッキング、フレーム選択、モノキュラカメラによる顔検知、顔特徴の1:N検索機能、モノキュラカメラによる生体顔検知、顔特徴データベース比較、および顔認証機能のシミュレーションの検証。

2). 実行パラメーター

i). コマンドライン

[ini file path] [feature file name]

-ini file path:設定ファイルのパスとファイル名

-feature file name:顔特徴の保存されたJSONファイルのパスとファイル名

ii). 設定ファイル

license_filepath:ライセンスファイル

activation_code_dir:アクティベーションコードファイルの保存されたディレクトリ名

singleliveness_model_filepath:モノキュラカメラによる顔検知モデルのパス

calcpose_model_filepath:顔の角度と方向を計算するモデル

Verify_model_filepath:顔特徴抽出モデルのパス

compare_model_filepath:顔特徴比較モデルのパス

singleliveness_track_config:モノキュラカメラによる顔トラッキング設定。大顔検知モードまたは小顔検知モードのみをサポートしています。

rgb_camera_index:モノキュラカメラのインデックス値

camera_face_orientation:カメラの向き

hack_threshold:生体検知しきい値。生体スコアがこの値より大きい場合、検知された顔が非生体に属していると判断されます。 閾値範囲:0〜1。

frame_selector_threshold:顔写真品質チェックの設定(顔写真品質のパラメーター範囲、顔の角度や向きなど)。具体的な設定情報については、ヘッダファイルおよび設定ファイルtest.iniをご参照ください。

3) 入出力

入力:画像特徴のJSONファイルを保存し、比較Nデータベースを提供します。 出力:モノキュラカメラによる検知のスコアが返され、検知された顔が生体であるかどうかを判断します。 比較スコアに応じて検知された顔と比較し、最も類似度スコアの高い複数の写真の名前を出力します。

4). 機能モジュールの指定

サンプルでは次の機能モジュールを指定できます。 1. フレーム選択機能:顔写真品質チェックと顔の角度と向きの計算 2. フレーム選択機能+生体検知機能 3. フレーム選択機能+生体検知機能+1:N 検索機能

i). C++ サンプル

マクロ定義で異なる機能モジュールを開きます。フレーム選択機能: TRACK FRAMESELECTORマクロを使用します。

フレーム選択機能+生体検知機能:TRACK_FRAMESELECTORマクロと TRACK_FRAMESELECTOR_LIVENESSマクロを使用します。

フレーム選択機能+生体検知機能+1:N 検索:TRACK_FRAMESELECTORマクロ、TRACK_FRAMESELECTOR_LIVENESSマクロ、TRACK_FRAMESELECTOR_LIVENESS_1VSNマクロを使用します。

ii). Java サンプル

静的変数定義で異なる機能モジュールを開きます。 フレーム選択機能:TRACK FRAMESELECTORを1に設定します。

フレーム選択機能+生体検知機能:TRACK_FRAMESELECTORを1に、TRACK_FRAMESELECTOR_BINOCULARLIVENESSをTRACK_FRAMESELECTOR&1に設定します。

フレーム選択機能+生体検知機能+1:N検索:TRACK_FRAMESELECTORを1に、TRACK_FRAMESELECTOR_SINGLELIVENESS をTRACK_FRAMESELECTOR&1、TRACK_FRAMESELECTOR_SINGLELIVENESS_1VSNをTRACK_FRAMESELECTOR_SINGLELIVENESS&1に設定します。

d). sample_face_binocularliveness_1vsN(対応するjavaサンプル名はBinocularlivenessOneVSNとなります)

1). 機能

ビノキュラカメラによる顔トラッキング、フレーム選択、ビノキュラカメラによる顔検知、顔特徴量抽出、顔特徴の1:N検索機能、ビノキュラカメラによる生体顔検知、顔特徴データベース比較、顔認証機能のシミュレーションの検証。

2). 実行パラメーター

i). コマンドライン

[ini file path] [feature file name]

-ini file path:設定ファイルのパスとファイル名

-feature file name:顔特徴の保存されたJSONファイルのパスとファイル名

ii). 設定ファイル

license_filepath:ライセンスファイル

activation_code_dir:アクティベーションコードファイルの保存されたディレクトリ名

calcpose_model_filepath:顔の角度と方向を計算するモデル

calcpose_model_filepath: 顔の角度と方向を計算するモデル

Verify_model_filepath:顔特徴抽出モデルのパス

compare_model_filepath: 顔特徴比較モデルのパス

binocularliveness_track_config:ビノキュラトラッキング設定。大顔検知モードおよび小顔検知モードのみをサポートしています。

Rgb_camera_index:RGBカメラのインデックス値

Infrared_camera_index:IRカメラのインデックス値

camera_face_orientation:カメラの向き

hack_threshold:生体検知しきい値。生体スコアがこの値より大きい場合、検知された顔が非生体に属していると判断されます。しきい値範囲:0〜1。

frame_selector_threshold:顔写真品質チェックの設定(顔写真品質のパラメーター範囲、顔の角度や向きなど)。具体的な設定情報については、ヘッダファイルおよび設定ファイルtest.iniをご参照ください。

3) 入出力

入力:画像特徴のJSONファイルを保存し、比較Nデータベースを提供します。 出力:ビノキュラカメラによる検知のスコアが返され、検知された顔が生体であるかどうかを判断します。比較スコアに応じて検知された顔と比較し、最も類似度スコアの高い複数の写真の名前を出力します。

4). 機能モジュールの指定

サンプルでは次の機能モジュールを指定できます。 1. フレーム選択機能:顔写真品質チェックと顔の角度と向きの計算 2. フレーム選択機能+ 生体検知機能 3. フレーム選択機能+生体検知機能+1:N検索機能。

i). C++ サンプル

マクロ定義で異なる機能モジュールを開きます。フレーム選択機能: TRACK FRAMESELECTORマクロを使用します。

フレーム選択機能+生体検知機能:TRACK_FRAMESELECTORマクロとTRACK_FRAMESELECTOR_LIVENESSマクロを使用します。

フレーム選択機能+生体検知機能+1:N検索:TRACK_FRAMESELECTORマクロ、TRACK_FRAMESELECTOR_LIVENESSマクロ、TRACK_FRAMESELECTOR_LIVENESS_1VSNマクロを使用します。

ii). Javaサンプル

静的変数定義で異なる機能モジュールを開きます。 フレーム選択機能:TRACK FRAMESELECTORを1に設定します。

フレーム選択機能+生体検知機能:TRACK_FRAMESELECTORを1に、TRACK_FRAMESELECTOR_BINOCULARLIVENESSをTRACK_FRAMESELECTOR&1に設定します。

フレーム選択機能+生体検知機能+1:N 検索:TRACK_FRAMESELECTORを1に、TRACK_FRAMESELECTOR_BINOCULARLIVENESSをTRACK_FRAMESELECTOR&1、TRACK_FRAMESELECTOR_BINOCULARLIVENESS_1VSNをTRACK_FRAMESELECTOR_BINOCULARLIVENESS&1に設定します。

注意:Notepad++ソフトウェアを使用してini設定ファイルを変更し、utf-8エンコーディング形式で保存することを推奨します。

最終更新