HongSoftが顔認識SDKの無料版とオフライン版をリリースし、各バージョンの対応するC# DemoをGithubで次々と共有して以来、私の会社のプロジェクトはHongSoftのSDKを使用しているため、HongSoftの公式サイトで新しいバージョンがリリースされるたびに、私はそれを学び、Demoでその機能を検証しています。RainbowSoftの公式グループやフォーラムで、SDKをアップグレードした後、何人かの友人が以下の問題をフィードバックしているのを見ました:
- SDKファイルを置き換えると、インターフェースが2を返すことがあります。
- メモリのオーバーフロー、プログラムのクラッシュ
- 紛らわしい検査結果
私もバージョンアップの過程でこの種の問題に遭遇しましたので、バージョンアップの過程で必要な変更を以下に文書化しました。
**問題の原因:** ArcFace 2.0から3.1バージョンまで、HOSHINOFT SDKはアルゴリズム機能を最適化し続けており、最適化の過程でSDKのいくつかのインターフェースも最適化され、いくつかの変数パラメータが追加され、SDKのアップグレード時にC#コードが同期して修正されません。
治療
体験的な効果にのみ使用するのであれば、SDKバージョンはデモバージョンと同じにしてください。
古いバージョンで開発していて、新しいバージョンにアップグレードする必要がある場合は、インターフェースの渡されるパラメータのリストを変更する必要があります。
Githubデモ:
ArcFace 2.2 Demo ArcFace 3.0 SDK
-
/// <summary> /// 検出モード /// </summary> public enum DetectionMode : uint { /// <summary> /// Video一般的にマルチフレーム連続検出に使用されるモード /// </summary> ASF_DETECT_MODE_VIDEO = 0x, /// <summary> /// Imageモード、一般に静止イメージの単一検出に使用される。 /// </summary> ASF_DETECT_MODE_IMAGE = 0xFFFFFFFF }また、ArcSoftFaceFaceForm.csのLine:661とLine:881をそれぞれ変更します:
//Line166 uint detectMode = (uint)DetectionMode.ASF_DETECT_MODE_IMAGE; //Line188 uint detectModeVideo = (uint)DetectionMode.ASF_DETECT_MODE_VIDEO; 顔検出インターフェイスのSDKASFDetectFacesインターフェイスの新しいオプションのパラメータASF_DetectModelは、インターフェイスの呼び出しが正常であることを確認するために、行に変更する必要があります:50は、次のように変更しました:
public static extern int ASFDetectFaces(IntPtr pEngine, int width, int height, int format, IntPtr imgData, IntPtr detectedFaces, int ASF_DetectModel=0x1);- ASF_LIFE_PHOTO: ライフフォト間の機能比較に使用され、この項目はデフォルトの項目です;
- ASF_ID_PHOTO:ID写真、またはID写真とライフスタイル写真の特徴比較に使用されます。
インターフェイスが一致するようにするには、まずASF_CompareModel.csという新しい列挙を以下のコードで追加します:
/// <summary> /// 顔照合用オプションモデル /// </summary> public enum ASF_CompareModel { /// <summary> /// 生命写真間の特徴比較のための推奨しきい値。0.80 /// </summary> ASF_LIFE_PHOTO = 0x1, /// <summary> /// IDフォトまたはライフフォトとIDフォトの特徴比較に使用される、推奨しきい値0.82 /// </summary> ASF_ID_PHOTO = 0x2 }次に、*ArcSoftFace\SDKUtil\ASFFunctions.cs*のLine:89を変更して、新しいオプション・パラメータを以下のコードで追加します:
public static extern int ASFFaceFeatureCompare(IntPtr pEngine, IntPtr faceFeature1, IntPtr faceFeature2, ref float similarity, ASF_CompareModel compareModel = ASF_CompareModel.ASF_LIFE_PHOTO);このバージョンでは、顔特徴モデルをアップグレードしているため、SDK 2.*バージョンに保存されている顔特徴を再度抽出する必要があります。
さらに、新しい機能インターフェイスが追加されています。具体的な追加内容やインターフェイスの呼び出しについては、ArcFaceDemoV3.0コードを参照してください。
ArcFace 3.0 Demo ArcFace 3.1 SDK
public static extern int ASFFaceFeatureExtract(IntPtr pEngine, int width, int height, int format, IntPtr imgData, IntPtr faceInfo, IntPtr faceFeature, int threadNum = 1);public static extern int ASFFaceFeatureExtractEx(IntPtr hEngine, IntPtr imgData, IntPtr faceInfo, IntPtr feature, int threadNum = 1);古いアクティベーション・インターフェイスASFActivationを削除します。
さらに、新しい機能インターフェイスが追加されました。新しいコンテンツ、インターフェイス呼び出しの詳細については、ArcFaceSDKのドキュメント**ArcFaceDemoV3.1**コードを参照してください。
第三に、SDKの基本バージョンは、対応する付加価値バージョンに置き換えられます。
以下のコードで、onlineActivation インタフェース ASFOnlineActivationにactiveKeyパラメータを追加します:
public static extern int ASFOnlineActivation(string appId, string sdkKey,string activeKey);以下のコードで、ASFActivationインターフェイスにactiveKeyパラメータを追加します:
public static extern int ASFActivation(string appId, string sdkKey,string activeKey);オフラインアクティベーション・インターフェースASFOfflineActivationを以下のコードで追加します:
[DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] public static extern int ASFOfflineActivation(IntPtr filePath);
関連製品については、オープンプラットフォーム「HOSHINO VISION」でご覧いただけます。





