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ディレクトリ作成

  1. sudo mkdir /usr/lib/jvm

  2. sudo tar -xvzf jdk-8u221-linux-x64.tar.gz -C /usr/lib/jvm

Java環境設定を行う

  1. sudo apt-get install vim

  2. 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

  1. 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"

  1. source /etc/profile

  2. source /etc/environment

  3. java -version 上記のコマンド入力後に"1.8.0_231"と表示されれば、正常な結果となります。それ以外の場合は7、8のコマンドを入力してください。

  4. sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_231/bin/java 100

  5. sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_231/bin/javac 100

3.3.1.3 前提条件設定

  1. sudo apt-get update

  2. sudo apt-get install --assume-yes build-essential cmake git

  3. sudo apt-get install --assume-yes pkg-config unzip ffmpeg qtbase5-dev python-dev python3-dev python-numpy python3-numpy

  4. sudo apt-get install --assume-yes libgtk2.0-dev

  5. sudo apt-get install --assume-yes libopencv-dev libgtk-3-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng-dev libtiff5-dev

  6. sudo apt-get install --assume-yes libavcodec-dev libavformat-dev libswscale-dev libxine2-dev

  7. sudo apt-get install --assume-yes libv4l-dev libtbb-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev

  8. sudo apt-get install --assume-yes libgstreamer-plugins-base1.0-dev libdc1394-22

  9. sudo apt-get install --assume-yes libvorbis-dev libxvidcore-dev v4l-utils

  10. sudo apt-get install --assume-yes liblapacke-dev libopenblas-dev checkinstall

  11. sudo apt-get install --assume-yes libgdal-dev

  12. sudo apt-get install --assume-yes ant

3.3.1.4 OpenCVコンパイル/インストール

OpenCV事前準備

  1. cd /home/{username}/Downloads

  2. unzip opencv-3.2.0.zip

  3. cd /home/username/Downloads/opencv-3.2.0/

  4. mkdir build

  5. cd /home/username/Downloads/opencv-3.2.0/build

OpenCVコンフィグ設定

  1. cd /home/{username}/Downloads/opencv-3.2.0/build

  2. 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になっていれば、正常に動作しています。

  1. make -j1

  2. sudo make install

3.3.2 サンプルコード起動

3.3.2.1 サンプルコード準備

  1. mkdir /home/{username}/dev

  2. mv senseid_facepro-2.0.5-face_professional-linux.zip /home/username/dev

  3. unzip senseid_facepro-2.0.5-face_professional-linux.zip

  4. cd /home/username/dev/senseid_facepro-2.0.5-face_professional-linux/libs/linux-armv7

  5. rm libstidface_professional.so

  6. rm libstidface_professional.so.2.0

  7. mv libstidface_professional.so.2.0.5 libstidface_professional.so

  8. sudo cp libstidface_professional.so /usr/lib

  9. cd /home/username/dev/senseid_facepro-2.0.5-face_professional-linux/samples/c++_armv7

  10. sudo ldconfig -v

  11. sudo chmod +x run_sample_face_detect_1vs1.sh

  12. sudo chmod +x run_sample_face_extract_image_feature_to_file.sh

  13. sudo chmod +x run_sample_face_singleliveness_1vsN.sh

3.3.2.2 ライセンス/写真用意

  1. 開始通知書に添付されているライセンスを、SDKファイル/samples/C++_armv7に配置します

  2. ライセンス名を“senseid_facepro.lic”に変更 ※同ファイル内のtest.iniにてアクティベートするライセンス名の変更も可能です。

  3. 比較のための顔写真2枚を、SDKファイル/samples/C++_armv7に配置 その際に名前は、face_01.jpg, face_02.jpgに変更 ※各種.shファイルにて顔情報比較画像の名の変更も可能です

  4. SDKファイル/samples/c++_armv7内にtest_imageフォルダを作成

  5. 特徴量を抽出する顔写真をSDKファイルを、/samples/c++_armv7/test_imageに配置

3.3.2.3 test.iniファイル修正

  1. test.iniファイルを開き、以下の項目を修正 license_filepath:同フォルダ内に存在しているライセンス名を指定

3.3.2.4 サンプルコード起動

  1. sudo ./run_sample_face_detect_1vs1.sh

  2. sudo ./run_sample_face_extract_image_feature_to_file.sh

  3. sudo ./run_sample_face_singleliveness_1vsN.sh

3.3.3 サンプル機能紹介及びパラメータ説明

機能紹介及びパラメータ説明

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

  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. モノキュラカメラによる顔トラッキングを行う

  2. 顔に対してクオリティチェックを行い、1フレームの静止画を選択する

  3. モノキュラカメラによる顔認識を行う

  4. 顔特徴の抽出を行う

  5. 顔特徴に対して1:N検索を行う

  6. モノキュラカメラによる生体認証を行う

  7. モノキュラカメラによる顔特徴ライブラリでの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認証と生体検知を同時に行う)

  1. バイノキュラ(Binocular)カメラによる顔トラッキングを行う

  2. 顔に対してクオリティチェックを行い、1フレームの静止画を選択する

  3. バイノキュラカメラによる顔認識を行う

  4. 顔特徴の抽出を行う

  5. 顔特徴に対して1:N検索を行う

  6. バイノキュラカメラによる生体認証を行う

  7. バイノキュラカメラによる顔特徴ライブラリでの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