3.3. Arm Linuxクイックテスト
Arm Linuxプラットフォームでは、C++言語のサンプルデモを提供しており、Ubuntu OS、Opencvバージョン3.2.0を例として、以下の通りに設定手順を示します。
本サンプルはサンプルコードを提供し、SDK APIの呼び出し方法、基本機能のテスト方法を理解していただくためにのみご利用ください。サンプルコードは変更したり、実際の開発工程でプログラムを書き換えたりすることができます。
SDK本体はOpenCVライブラリに依存せず、OpenCV(バージョン3.2.0)ライブラリはARMプラットフォーム上C++言語のサンプルデモのみに使用されます。
3.3.1 環境準備
3.3.1.1 各種HW/SWの準備
HW
Raspberry Pi
Raspberry Pi Model 3 b+
OS
Ubuntu
Ubuntu Mate 18.04.03 LTS 32bit
※当SDKは64bitはサポートしておりません。
UbuntuダウンロードURL
https://www.raspberrypi.org/downloads/
Kernel
Linux 4.15.0-1049-raspi2 armv7
SW
JDK
jdk-8u231-linux-arm32-vfp-hflt.tar.gz
JDKダウンロードURL
https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
OpenCV
Version 3.2.0(3.4.5でも利用可)
OpenCVダウンロードURL
https://opencv.org/releases/
SDK
JCV顔認証SDK
開通通知メールからダウンロードしてください
ライセンス
開通通知メールからダウンロードしてください
3.3.1.2 JDKインストール
Java runtimeディレクトリ作成
sudo mkdir /usr/lib/jvm
sudo tar -xvzf jdk-8u221-linux-x64.tar.gz -C /usr/lib/jvm
Java環境設定を行う
sudo apt-get install vim
sudo vim /etc/profile
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_231
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
sudo vim /etc/environment
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_231
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
source /etc/profile
source /etc/environment
java -version 上記のコマンド入力後に"1.8.0_231"と表示されれば、正常な結果となります。それ以外の場合は7、8のコマンドを入力してください。
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_231/bin/java 100
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_231/bin/javac 100
3.3.1.3 前提条件設定
sudo apt-get update
sudo apt-get install --assume-yes build-essential cmake git
sudo apt-get install --assume-yes pkg-config unzip ffmpeg qtbase5-dev python-dev python3-dev python-numpy python3-numpy
sudo apt-get install --assume-yes libgtk2.0-dev
sudo apt-get install --assume-yes libopencv-dev libgtk-3-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng-dev libtiff5-dev
sudo apt-get install --assume-yes libavcodec-dev libavformat-dev libswscale-dev libxine2-dev
sudo apt-get install --assume-yes libv4l-dev libtbb-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev
sudo apt-get install --assume-yes libgstreamer-plugins-base1.0-dev libdc1394-22
sudo apt-get install --assume-yes libvorbis-dev libxvidcore-dev v4l-utils
sudo apt-get install --assume-yes liblapacke-dev libopenblas-dev checkinstall
sudo apt-get install --assume-yes libgdal-dev
sudo apt-get install --assume-yes ant
3.3.1.4 OpenCVコンパイル/インストール
OpenCV事前準備
cd /home/{username}/Downloads
unzip opencv-3.2.0.zip
cd /home/username/Downloads/opencv-3.2.0/
mkdir build
cd /home/username/Downloads/opencv-3.2.0/build
OpenCVコンフィグ設定
cd /home/{username}/Downloads/opencv-3.2.0/build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D JAVA_HOME=/usr/lib/jvm/jdk1.8.0_231 -D LAPACKE_H_PATH=/usr/include -D BUILD_TESTS=OFF -D WITH_FFMPEG=OFF ..
JNI項目がインストールしたバージョン(jdk1.8.0_231)と表示されており、ConfigurationとGeneration項目がDoneになっていれば、正常に動作しています。
make -j1
sudo make install
3.3.2 サンプルコード起動
3.3.2.1 サンプルコード準備
mkdir /home/{username}/dev
mv senseid_facepro-2.0.5-face_professional-linux.zip /home/username/dev
unzip senseid_facepro-2.0.5-face_professional-linux.zip
cd /home/username/dev/senseid_facepro-2.0.5-face_professional-linux/libs/linux-armv7
rm libstidface_professional.so
rm libstidface_professional.so.2.0
mv libstidface_professional.so.2.0.5 libstidface_professional.so
sudo cp libstidface_professional.so /usr/lib
cd /home/username/dev/senseid_facepro-2.0.5-face_professional-linux/samples/c++_armv7
sudo ldconfig -v
sudo chmod +x run_sample_face_detect_1vs1.sh
sudo chmod +x run_sample_face_extract_image_feature_to_file.sh
sudo chmod +x run_sample_face_singleliveness_1vsN.sh
3.3.2.2 ライセンス/写真用意
開始通知書に添付されているライセンスを、SDKファイル/samples/C++_armv7に配置します
ライセンス名を“senseid_facepro.lic”に変更 ※同ファイル内のtest.iniにてアクティベートするライセンス名の変更も可能です。
比較のための顔写真2枚を、SDKファイル/samples/C++_armv7に配置 その際に名前は、face_01.jpg, face_02.jpgに変更 ※各種.shファイルにて顔情報比較画像の名の変更も可能です
SDKファイル/samples/c++_armv7内にtest_imageフォルダを作成
特徴量を抽出する顔写真をSDKファイルを、/samples/c++_armv7/test_imageに配置
3.3.2.3 test.iniファイル修正
test.iniファイルを開き、以下の項目を修正 license_filepath:同フォルダ内に存在しているライセンス名を指定
3.3.2.4 サンプルコード起動
sudo ./run_sample_face_detect_1vs1.sh
sudo ./run_sample_face_extract_image_feature_to_file.sh
sudo ./run_sample_face_singleliveness_1vsN.sh
3.3.3 サンプル機能紹介及びパラメータ説明
機能紹介及びパラメータ説明
パラメータは、“コマンドラインパラメータ”と“設定ファイル内のパラメータ”の2種類に分けられています。 “コマンドラインパラメータ”は、サンプル固有の機能に必要なパラメータを提供しています。 “設定ファイル内のパラメータ”は、各サンプルの基本設定(認証ファイルパスとモデルファイルパス など)を提供しています。
サンプルを実行している時にライセンス認証ファイルを置き換える場合は、“senseid_facepro_sn”フォルダおよび中に含まれているアクティベーションコードを削除する必要があります。
※senseid_facepro_snフォルダは構成ファイルである“XXX.ini“中の“activation_code_dir”フォルダパスに対応していて、変更できます)
a) sample_face_detect_1vs1
1) 機能
認証の設定コマンドセット、顔認識、顔特徴の抽出、顔の照会機能
2) 実行パラメータ
コマンドライン(sample_face_detect_1vs1.sh)
[ini file path] [image A path] [image B path] ([image face orientation])
-ini file path:構成ファイルのパス
-image A path:画像ファイルAのパス
-image B path:画像ファイルBのパス
-image face orientation:(オプション)画像中の顔の向きを指定するパラメータです。 0:上向き、1:左向き、2:右向き、3:下向き このパラメータがない場合、デフォルトそして上向きとします。
構成ファイル (test.ini)
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枚の写真及び写真+顔の向き
出力:顔一致度スコア、同じ人物であるかどうかを判断します。
b) sample_face_extract_image_feature_to_file
1) 機能
顔認証サンプルを使用できるように顔照会及び顔特徴抽出機能を確認し、フォルダ内にあるすべての写真特徴をjsonフォルダに保存し、顔ライブラリを提供します。
2) 実行パラメータ
コマンドライン(sample_face_extract_image_feature_to_file.sh)
[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:(オプション)画像中の顔の向きを指定するパラメータです。 0:上向き、1:左向き、2:右向き、3:下向き このパラメータがない場合、デフォルトもしくは上向きとします。
構成ファイル(test.ini)
license_filepath:ライセンス認証ファイル
activation_code_dir:アクティベーションコードファイル保存ディレクトリ
alignment_model_filepath:顔認識モデルのパス
verify_model_filepath:顔特徴抽出モデルのパス
detector_config:顔認識モード設定:大顔認識モード、小顔認識モード、大小画面混合認識モード*
【各種モード説明】
大顔認識モード:画面上で顔面積が大きく占める場合に用いる顔認識モード
小顔認識モード:全身が映っている等の対象の顔面積が小さい場合に用いる顔認識モード
大小画面混合認識モード:両モードを同時に行うモード(処理に時間がかかる場合があります)
※基本的に顔認証を行う際には、大顔認識モードの使用を推奨しています。
alignment_count:(オプション)顔面の特徴点の繰り返す回数、回数を増やすことで特徴点の精度を上げることができますが、その代わり効率が下がります。 数値範囲:0x1~0xff
3) 入出力
入力:画像ファイルをした保存フォルダ名
出力:画像特徴を保存したjsonファイル名
c) sample_face_singleliveness_1vsN
※Raspberry Piのカメラを使用する場合、次のファイルを以下のように修正してください:
ファイル名:sample_face_singleliveness_track_frameselector_1vsN.cpp
修正箇所:78行目
修正前 capture.open(camera_index)
修正後 capture.open(camera_index, CAP_V4L2)
1) 機能
本人認証シミュレーションを行う(1:N認証と生体検知を同時に行う)
モノキュラカメラによる顔トラッキングを行う
顔に対してクオリティチェックを行い、1フレームの静止画を選択する
モノキュラカメラによる顔認識を行う
顔特徴の抽出を行う
顔特徴に対して1:N検索を行う
モノキュラカメラによる生体認証を行う
モノキュラカメラによる顔特徴ライブラリでの1:1認証を行う
2) 実行パラメータ
コマンドライン(sample_face_singleliveness_1vsN.sh)
[ini file path] [feature file name]
-ini file path: ファイルパスの設定
-feature file name:顔特徴のjsonファイルの保存パス
構成ファイル(test.ini)
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ファイルを保存し、顔照合用ライブラリを提供します。
出力:モノキュラカメラによる測定スコアが戻り値として表示され、生体であるかどうかを判断します。顔類似度スコアの高い画像ファイル名をプリントアウトします。
4) 機能モジュール指定
サンプルから以下の機能モジュールを指定できます:
フレーム選択機能(顔のクオリティの検出及び顔角度の計算)
フレーム選択機能+生体認識機能
フレーム選択機能+生体認識機能+1:N検索機能
C++サンプル
機能モジュールを有効かするには対応するマクロを使用する必要があります。
機能モジュール
対応マクロ
フレーム選択機能
TRACK_FRAMESELECTO
フレーム選択機能+生体認識機能
TRACK_FRAMESELECTO
TRACK_FRAMESELECTOR_LIVENESS
フレーム選択機能+生体認識機能+1:N検索機能
TRACK_FRAMESELECTOR
TRACK_FRAMESELECTOR_LIVENESS、
TRACK_FRAMESELECTOR_LIVENESS_1VSN
d) sample_face_binocularliveness_1vsN
Raspberry Piのカメラを使用する場合、次のファイルを以下の通りに修正してください:
ファイル名:sample_face_binocular_liveness_track_frameselector_1vsN.cpp
修正箇所①:87行目
修正前 rgb_capture.open(rgb_camera_index); // open the rgb camera
修正後 rgb_capture.open(rgb_camera_index, CAP_V4L2); // open the rgb camera
修正箇所②:92行目
修正前 infrared_capture.open(infrared_camera_index); // open the infrared camera
修正後 infrared_capture.open(infrared_camera_index, CAP_V4L2); // open the infrared camera
1) 機能
本人認証シミュレーションを行う(1:N認証と生体検知を同時に行う)
バイノキュラ(Binocular)カメラによる顔トラッキングを行う
顔に対してクオリティチェックを行い、1フレームの静止画を選択する
バイノキュラカメラによる顔認識を行う
顔特徴の抽出を行う
顔特徴に対して1:N検索を行う
バイノキュラカメラによる生体認証を行う
バイノキュラカメラによる顔特徴ライブラリでの1:1認証を行う
2) 実行パラメータ
コマンドライン(sample_face_binocularliveness_1vsN.sh)
[ini file path] [feature file name]
-ini file path:ファイルパスの設定
-feature file name:顔特徴のjsonファイルの保存パス
構成ファイル(test.ini)
license_filepath:ライセンス認証ファイル
activation_code_dir:アクティベーションコードファイルの保存ディレクトリ
binocularliveness_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ファイルを保存し、顔照合用ライブラリを提供します。
出力:モノキュラカメラによる測定スコアが戻り値として表示され、生体であるかどうかを判断します。顔類似度スコアの高い画像ファイル名をプリントアウトします。
4) 機能モジュール指定
サンプルから以下の機能モジュールを指定できます:
フレーム選択機能(顔のクオリティの検出及び顔角度の計算)
フレーム選択機能+生体認識機能
フレーム選択機能+生体認識機能+1:N検索機能
C++サンプル
機能モジュールを有効化するには、対応するマクロを使用する必要があります。
機能モジュール
対応マクロ
フレーム選択機能
TRACK_FRAMESELECTO
フレーム選択機能+生体認識機能
TRACK_FRAMESELECTO
TRACK_FRAMESELECTOR_LIVENESS
フレーム選択機能+生体認識機能+1:N検索機能
TRACK_FRAMESELECTOR
TRACK_FRAMESELECTOR_LIVENESS、
TRACK_FRAMESELECTOR_LIVENESS_1VSN
※注意:ini構成ファイルを修正した後、utf-8エンコードフォーマットで保存してください。
Last updated