3.1. 統合ガイド

FacePro SDKで提供されるSampleプロジェクトは、Xcode開発環境をベースとしており、統合手順は主にiOS 開発の知識、およびXcodeの経験を有する方を対象に記述されています。

1. 開発コンポーネント

ZIP パッケージには主に次のファイルが含まれています。

  • STFaceProSample:FacePro SDK を統合する完全なプロジェクトのサンプル

  • STFaceProSDK:FacePro SDK を統合して使用するために必要な SDK とモデルファイルを含む

  • Docs:統合ドキュメント

2. サンプルの概要

準備

  1. 有効なライセンス認証ファイルが利用可能であること。

  2. Cocoapods ツールを含むMac(オプション)がインストールされていること。

Xcode 統合実行サンプル

統合手順は次のとおりです。

  1. ZIP ファイルを解凍し、ターミナルを開きます。Podfileがあるディレクトリに移動し、実行してインストールします。

    Cocoapodsツールがローカルにない場合、リンク(抽出コード: e00c40)をクリックして、関連ファイルをダウンロードし、解凍したPodsフォルダをPodfileがあるディレクトリにコピーしてください。

  2. podが正常に実行されたら、STFaceProSample.xcworkspaceをダブルクリックして、Xcodeでプロジェクトを開きます。

  3. 認証用のライセンスファイル "SENSEID_....lic" を STFaceProSDKディレクトリにコピーし、名前を "senseid_facepro.lic" に変更します。

    ライセンスファイルの名前を変更する理由: ZIP パッケージ内のSampleの STFaceProMainViewController.swift には、ファイル名を指定することで、ファイルの読み込み認証を完了します。プロジェクトで使用されているライセンスファイルは "senseid_facepro.lic" という名前です。

  4. STFaceProMainViewController.swift ファイルで、ライセンス認証タイプに従って、

    パラメーターを修正します: let licType: LicenseType = .online / .offline

  5. iOSデバイスに接続し、プログラムを実行してテストします。

3. お客様のプロジェクトへの FacePro SDK の統合

手順は次のとおりです。

  1. ZIPファイルを解凍します。

  2. 解凍した STFaceProSDK フォルダーのすべてのコンテンツをお客様のプロジェクトに追加します。

上記の手順を実行すると、FacePro SDK がお客様のプロジェクトに統合されます。

4. FacePro SDK API に関する手順

FacePro SDK は、顔トラッキング、顔検知、属性検知、品質検知、姿勢角情報の検知、モーションブラー品質検知、なりすまし防止検知、顔特徴抽出、顔特徴比較、および検索機能を提供します。

主要な関数について

API

Info

ビデオフレームシーンでの顔トラッキング

静止画像シーンでの顔トラッキング

顔属性の検知

品質検知

姿勢角情報の検知

モーションブラー品質の検知

なりすまし防止検知

顔特徴情報の抽出

顔特徴の比較および検索。

TrackerまたはDetectorは、同じスレッドで使用する必要があります。

API 呼び出しと SDK のワークフロー

SDK の基本的なワークフロー

  • ライセンス認証

  • Tracker または Detector インスタンスを作成する

  • Track または detect を開始する(FaceDetector 以外の Detectordetect メソッドは、すべて Trackの結果に依存します)Track または detect の結果を取得する

  • 使用しなくなった場合は、APIに対応するリリースメソッドを呼び出して解放する

呼び出し方法について

  1. プロジェクトに FacePro SDK を統合します。詳細については、「お客様のプロジェクトへの FacePro SDK の統合」をご参照ください。

  2. ライセンス認証を実行するには、Sample 内の STFaceProMainViewController.swift のメソッドをご参照ください。

       ...
       // MARK: - Authorization / 認証
       // offline / オフラインでのライセンス認証
       func loadLicense(with fileName: String) {
           let licensePath = Bundle.main.path(forResource: fileName, ofType: "lic")
           apiResult = self.loadLicense.load(withLicensePath: licensePath ?? "")
       }
    
       // online / オンラインでのライセンス認証
       func activateLicense(with fileName: String) {
           if let filePath = self.loadLicense.activatedLicenseFilePath() {
               // There is already an authorized lic locally, it can be loaded directly / 既に認証されたライセンスファイルがローカルにあり、直接ロードできます
               apiResult = self.loadLicense.load(withLicensePath: filePath)
           } else {
               // There is no authorized lic locally, online activation is required / ローカルに認証用のライセンスファイルが存在しません。オンラインでのライセンス認証を要求します
               let licensePath = Bundle.main.path(forResource: fileName, ofType: "lic")
               apiResult = self.loadLicense.activate(withLicensePath: licensePath ?? "")
    
               // Load after successful authorization / ライセンス認証に成功したらロードします
               if let filePath = self.loadLicense.activatedLicenseFilePath() {
                   apiResult = self.loadLicense.load(withLicensePath: filePath)
               }
           }
       }
       ...
  3. 機能要件に従って、STFaceProFaceTracker を使用して Tracker インスタンスを作成します。正常に作成されたら、track メソッドを介して顔トラッキングを行います。サンプルコードの詳細については、Sample 内の STFaceProTrackViewController.swift をご参照ください。

       func createTracker() {
           let bundlePath = Bundle.main.path(forResource: "st_facepro_resource", ofType: "bundle") ?? ""
           let occlusionModelPath = bundlePath + "/model" + "/M_Align_occlusion.model"
    
           apiResult = self.faceTracker.create(withModelPath: occlusionModelPath, config: .SMALL_FACE)
           apiResult = self.faceTracker.setTrackingLimitWithMaxNum(Int32(STFaceProDetectionMaxNum)) { (realNum) in
               print("---setTrackingLimitWithMaxNum--realNum \(realNum)")
           }
           self.faceTracker.delegate = self
       }
  4. 機能要件に従って、異なる Detector を作成します。作成方法は、上記のTrackerインスタンスの作成手順と同様です。作成後、detect メソッドを呼び出して、検知処理を行います。

    FaceDetector を除くその他の Detectordetect メソッドは、すべてTrackの結果に依存します。FaceDetector は静止画像の顔検知に使用され、detect メソッドのパラメーターは静止画像に依存します。

       ...
    
       let bundlePath = Bundle.main.path(forResource: "st_facepro_resource", ofType: "bundle") ?? ""
       let calcposeModelPath = bundlePath + "/model" + "/M_Align_CalcPose.model"
       let antispootingGeneralModelPath = bundlePath + "/model" + "/M_Liveness_Antispoofing_General.model"
       let verifyModelPath = bundlePath + "/model" + "/M_Verify_Mobilenetv2Pruned.model"
       let occlusionModelPath = bundlePath + "/model" + "/M_Align_occlusion.model"
       let attributeModelPath = bundlePath + "/model" + "/M_Attribute.model"
    
       // FaceDetector detect
       apiResult = self.faceDetector.create(withModelPath: occlusionModelPath, config: .LARGE_FACE)
    
       // AttributeDetector detect
       apiResult = self.attributeDetector.create(withModelPath: attributeModelPath)
       self.attributeDetector.delegate = self
    
       // HeadPoseDetector detect
       apiResult = self.headPoseDetector.create(withModelPath: calcposeModelPath)
       self.headPoseDetector.delegate = self
    
       // QualityDetector detect
       self.qualityDetector.delegate = self
    
       // MotionSharpnessDetector detect
       apiResult = self.motionSharpnessDetector.create()
       self.motionSharpnessDetector.delegate = self
    
       // AntiSpoofingDetector detect
       apiResult = self.antiSpoofingDetector.create(withModelPath: antispootingGeneralModelPath)
       self.antiSpoofingDetector.delegate = self
       apiResult = self.antiSpoofingDetector.defaultHacknessThreshold { [weak self] (threshold) in
           print("----antiSpoofingDetector----threshold \(threshold)")
           self?.defaultHacknessThreshold = threshold
       }
    
       ...
  5. 顔のなりすまし防止検知には STFaceProFeatureExtraction を使用します。詳細については、API に関する説明とサンプルをご参照ください。

    apiResult = self.featureExtraction.create(withModelPath: verifyModelPath)
  6. 顔特徴の比較および検索には STFaceProFeatureComparison を使用します。詳細については、API に関する説明と Sample をご参照ください。

    apiResult = self.featureComparison.create(withModelPath: verifyModelPath)
    self.featureComparison.delegate = self

最終更新