Update InspireFace to 1.1.0

This commit is contained in:
JingyuYan
2024-06-19 16:41:25 +08:00
parent a1e535cf54
commit 098ac7c31f
89 changed files with 4097 additions and 511 deletions

View File

@@ -0,0 +1,30 @@
tmp/
*.pyc
*.pyo
*.pyd
__pycache__/
*.so
*.dylib
venv/
env/
.build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
.pytest_cache/
.idea/

View File

@@ -1016,33 +1016,35 @@ HFSessionCustomParameter = struct_HFSessionCustomParameter# /Users/tunm/work/Ins
PHFSessionCustomParameter = POINTER(struct_HFSessionCustomParameter)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 132
enum_HFDetectMode = c_int# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 141
enum_HFDetectMode = c_int# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 142
HF_DETECT_MODE_IMAGE = 0# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 141
HF_DETECT_MODE_ALWAYS_DETECT = 0# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 142
HF_DETECT_MODE_VIDEO = (HF_DETECT_MODE_IMAGE + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 141
HF_DETECT_MODE_LIGHT_TRACK = (HF_DETECT_MODE_ALWAYS_DETECT + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 142
HFDetectMode = enum_HFDetectMode# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 141
HF_DETECT_MODE_TRACK_BY_DETECTION = (HF_DETECT_MODE_LIGHT_TRACK + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 142
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 152
HFDetectMode = enum_HFDetectMode# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 142
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 157
if _libs[_LIBRARY_FILENAME].has("HFCreateInspireFaceSession", "cdecl"):
HFCreateInspireFaceSession = _libs[_LIBRARY_FILENAME].get("HFCreateInspireFaceSession", "cdecl")
HFCreateInspireFaceSession.argtypes = [HFSessionCustomParameter, HFDetectMode, HInt32, POINTER(HFSession)]
HFCreateInspireFaceSession.argtypes = [HFSessionCustomParameter, HFDetectMode, HInt32, HInt32, HInt32, POINTER(HFSession)]
HFCreateInspireFaceSession.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 168
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 179
if _libs[_LIBRARY_FILENAME].has("HFCreateInspireFaceSessionOptional", "cdecl"):
HFCreateInspireFaceSessionOptional = _libs[_LIBRARY_FILENAME].get("HFCreateInspireFaceSessionOptional", "cdecl")
HFCreateInspireFaceSessionOptional.argtypes = [HOption, HFDetectMode, HInt32, POINTER(HFSession)]
HFCreateInspireFaceSessionOptional.argtypes = [HOption, HFDetectMode, HInt32, HInt32, HInt32, POINTER(HFSession)]
HFCreateInspireFaceSessionOptional.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 181
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 194
if _libs[_LIBRARY_FILENAME].has("HFReleaseInspireFaceSession", "cdecl"):
HFReleaseInspireFaceSession = _libs[_LIBRARY_FILENAME].get("HFReleaseInspireFaceSession", "cdecl")
HFReleaseInspireFaceSession.argtypes = [HFSession]
HFReleaseInspireFaceSession.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 191
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 204
class struct_HFFaceBasicToken(Structure):
pass
@@ -1055,11 +1057,11 @@ struct_HFFaceBasicToken._fields_ = [
('data', HPVoid),
]
HFFaceBasicToken = struct_HFFaceBasicToken# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 191
HFFaceBasicToken = struct_HFFaceBasicToken# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 204
PHFFaceBasicToken = POINTER(struct_HFFaceBasicToken)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 191
PHFFaceBasicToken = POINTER(struct_HFFaceBasicToken)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 204
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 202
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 215
class struct_HFFaceEulerAngle(Structure):
pass
@@ -1074,9 +1076,9 @@ struct_HFFaceEulerAngle._fields_ = [
('pitch', POINTER(HFloat)),
]
HFFaceEulerAngle = struct_HFFaceEulerAngle# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 202
HFFaceEulerAngle = struct_HFFaceEulerAngle# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 215
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 216
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 229
class struct_HFMultipleFaceData(Structure):
pass
@@ -1095,47 +1097,47 @@ struct_HFMultipleFaceData._fields_ = [
('tokens', PHFFaceBasicToken),
]
HFMultipleFaceData = struct_HFMultipleFaceData# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 216
HFMultipleFaceData = struct_HFMultipleFaceData# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 229
PHFMultipleFaceData = POINTER(struct_HFMultipleFaceData)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 216
PHFMultipleFaceData = POINTER(struct_HFMultipleFaceData)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 229
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 226
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 239
if _libs[_LIBRARY_FILENAME].has("HFSessionSetTrackPreviewSize", "cdecl"):
HFSessionSetTrackPreviewSize = _libs[_LIBRARY_FILENAME].get("HFSessionSetTrackPreviewSize", "cdecl")
HFSessionSetTrackPreviewSize.argtypes = [HFSession, HInt32]
HFSessionSetTrackPreviewSize.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 235
if _libs[_LIBRARY_FILENAME].has("HFSessionSetFaceTrackMode", "cdecl"):
HFSessionSetFaceTrackMode = _libs[_LIBRARY_FILENAME].get("HFSessionSetFaceTrackMode", "cdecl")
HFSessionSetFaceTrackMode.argtypes = [HFSession, HFDetectMode]
HFSessionSetFaceTrackMode.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 248
if _libs[_LIBRARY_FILENAME].has("HFSessionSetFilterMinimumFacePixelSize", "cdecl"):
HFSessionSetFilterMinimumFacePixelSize = _libs[_LIBRARY_FILENAME].get("HFSessionSetFilterMinimumFacePixelSize", "cdecl")
HFSessionSetFilterMinimumFacePixelSize.argtypes = [HFSession, HInt32]
HFSessionSetFilterMinimumFacePixelSize.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 244
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 257
if _libs[_LIBRARY_FILENAME].has("HFSessionSetFaceDetectThreshold", "cdecl"):
HFSessionSetFaceDetectThreshold = _libs[_LIBRARY_FILENAME].get("HFSessionSetFaceDetectThreshold", "cdecl")
HFSessionSetFaceDetectThreshold.argtypes = [HFSession, HFloat]
HFSessionSetFaceDetectThreshold.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 254
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 267
if _libs[_LIBRARY_FILENAME].has("HFExecuteFaceTrack", "cdecl"):
HFExecuteFaceTrack = _libs[_LIBRARY_FILENAME].get("HFExecuteFaceTrack", "cdecl")
HFExecuteFaceTrack.argtypes = [HFSession, HFImageStream, PHFMultipleFaceData]
HFExecuteFaceTrack.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 271
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 284
if _libs[_LIBRARY_FILENAME].has("HFCopyFaceBasicToken", "cdecl"):
HFCopyFaceBasicToken = _libs[_LIBRARY_FILENAME].get("HFCopyFaceBasicToken", "cdecl")
HFCopyFaceBasicToken.argtypes = [HFFaceBasicToken, HPBuffer, HInt32]
HFCopyFaceBasicToken.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 285
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 298
if _libs[_LIBRARY_FILENAME].has("HFGetFaceBasicTokenSize", "cdecl"):
HFGetFaceBasicTokenSize = _libs[_LIBRARY_FILENAME].get("HFGetFaceBasicTokenSize", "cdecl")
HFGetFaceBasicTokenSize.argtypes = [HPInt32]
HFGetFaceBasicTokenSize.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 299
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 312
class struct_HFFaceFeature(Structure):
pass
@@ -1148,31 +1150,31 @@ struct_HFFaceFeature._fields_ = [
('data', HPFloat),
]
HFFaceFeature = struct_HFFaceFeature# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 299
HFFaceFeature = struct_HFFaceFeature# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 312
PHFFaceFeature = POINTER(struct_HFFaceFeature)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 299
PHFFaceFeature = POINTER(struct_HFFaceFeature)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 312
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 311
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 324
if _libs[_LIBRARY_FILENAME].has("HFFaceFeatureExtract", "cdecl"):
HFFaceFeatureExtract = _libs[_LIBRARY_FILENAME].get("HFFaceFeatureExtract", "cdecl")
HFFaceFeatureExtract.argtypes = [HFSession, HFImageStream, HFFaceBasicToken, PHFFaceFeature]
HFFaceFeatureExtract.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 323
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 336
if _libs[_LIBRARY_FILENAME].has("HFFaceFeatureExtractCpy", "cdecl"):
HFFaceFeatureExtractCpy = _libs[_LIBRARY_FILENAME].get("HFFaceFeatureExtractCpy", "cdecl")
HFFaceFeatureExtractCpy.argtypes = [HFSession, HFImageStream, HFFaceBasicToken, HPFloat]
HFFaceFeatureExtractCpy.restype = HResult
enum_HFSearchMode = c_int# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 336
enum_HFSearchMode = c_int# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 349
HF_SEARCH_MODE_EAGER = 0# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 336
HF_SEARCH_MODE_EAGER = 0# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 349
HF_SEARCH_MODE_EXHAUSTIVE = (HF_SEARCH_MODE_EAGER + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 336
HF_SEARCH_MODE_EXHAUSTIVE = (HF_SEARCH_MODE_EAGER + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 349
HFSearchMode = enum_HFSearchMode# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 336
HFSearchMode = enum_HFSearchMode# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 349
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 349
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 362
class struct_HFFeatureHubConfiguration(Structure):
pass
@@ -1191,21 +1193,21 @@ struct_HFFeatureHubConfiguration._fields_ = [
('searchMode', HFSearchMode),
]
HFFeatureHubConfiguration = struct_HFFeatureHubConfiguration# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 349
HFFeatureHubConfiguration = struct_HFFeatureHubConfiguration# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 362
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 361
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 374
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubDataEnable", "cdecl"):
HFFeatureHubDataEnable = _libs[_LIBRARY_FILENAME].get("HFFeatureHubDataEnable", "cdecl")
HFFeatureHubDataEnable.argtypes = [HFFeatureHubConfiguration]
HFFeatureHubDataEnable.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 367
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 380
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubDataDisable", "cdecl"):
HFFeatureHubDataDisable = _libs[_LIBRARY_FILENAME].get("HFFeatureHubDataDisable", "cdecl")
HFFeatureHubDataDisable.argtypes = []
HFFeatureHubDataDisable.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 379
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 392
class struct_HFFaceFeatureIdentity(Structure):
pass
@@ -1220,11 +1222,11 @@ struct_HFFaceFeatureIdentity._fields_ = [
('feature', PHFFaceFeature),
]
HFFaceFeatureIdentity = struct_HFFaceFeatureIdentity# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 379
HFFaceFeatureIdentity = struct_HFFaceFeatureIdentity# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 392
PHFFaceFeatureIdentity = POINTER(struct_HFFaceFeatureIdentity)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 379
PHFFaceFeatureIdentity = POINTER(struct_HFFaceFeatureIdentity)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 392
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 388
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 401
class struct_HFSearchTopKResults(Structure):
pass
@@ -1239,92 +1241,89 @@ struct_HFSearchTopKResults._fields_ = [
('customIds', HPInt32),
]
HFSearchTopKResults = struct_HFSearchTopKResults# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 388
HFSearchTopKResults = struct_HFSearchTopKResults# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 401
PHFSearchTopKResults = POINTER(struct_HFSearchTopKResults)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 388
PHFSearchTopKResults = POINTER(struct_HFSearchTopKResults)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 401
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 399
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 412
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubFaceSearchThresholdSetting", "cdecl"):
HFFeatureHubFaceSearchThresholdSetting = _libs[_LIBRARY_FILENAME].get("HFFeatureHubFaceSearchThresholdSetting", "cdecl")
HFFeatureHubFaceSearchThresholdSetting.argtypes = [c_float]
HFFeatureHubFaceSearchThresholdSetting.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 410
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 423
if _libs[_LIBRARY_FILENAME].has("HFFaceComparison", "cdecl"):
HFFaceComparison = _libs[_LIBRARY_FILENAME].get("HFFaceComparison", "cdecl")
HFFaceComparison.argtypes = [HFFaceFeature, HFFaceFeature, HPFloat]
HFFaceComparison.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 418
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 431
if _libs[_LIBRARY_FILENAME].has("HFGetFeatureLength", "cdecl"):
HFGetFeatureLength = _libs[_LIBRARY_FILENAME].get("HFGetFeatureLength", "cdecl")
HFGetFeatureLength.argtypes = [HPInt32]
HFGetFeatureLength.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 427
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 440
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubInsertFeature", "cdecl"):
HFFeatureHubInsertFeature = _libs[_LIBRARY_FILENAME].get("HFFeatureHubInsertFeature", "cdecl")
HFFeatureHubInsertFeature.argtypes = [HFFaceFeatureIdentity]
HFFeatureHubInsertFeature.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 437
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 450
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubFaceSearch", "cdecl"):
HFFeatureHubFaceSearch = _libs[_LIBRARY_FILENAME].get("HFFeatureHubFaceSearch", "cdecl")
HFFeatureHubFaceSearch.argtypes = [HFFaceFeature, HPFloat, PHFFaceFeatureIdentity]
HFFeatureHubFaceSearch.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 447
for _lib in _libs.values():
if not _lib.has("HFFeatureHubFaceSearchTopK", "cdecl"):
continue
HFFeatureHubFaceSearchTopK = _lib.get("HFFeatureHubFaceSearchTopK", "cdecl")
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 460
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubFaceSearchTopK", "cdecl"):
HFFeatureHubFaceSearchTopK = _libs[_LIBRARY_FILENAME].get("HFFeatureHubFaceSearchTopK", "cdecl")
HFFeatureHubFaceSearchTopK.argtypes = [HFFaceFeature, HInt32, PHFSearchTopKResults]
HFFeatureHubFaceSearchTopK.restype = HResult
break
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 455
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 468
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubFaceRemove", "cdecl"):
HFFeatureHubFaceRemove = _libs[_LIBRARY_FILENAME].get("HFFeatureHubFaceRemove", "cdecl")
HFFeatureHubFaceRemove.argtypes = [HInt32]
HFFeatureHubFaceRemove.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 463
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 476
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubFaceUpdate", "cdecl"):
HFFeatureHubFaceUpdate = _libs[_LIBRARY_FILENAME].get("HFFeatureHubFaceUpdate", "cdecl")
HFFeatureHubFaceUpdate.argtypes = [HFFaceFeatureIdentity]
HFFeatureHubFaceUpdate.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 472
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 485
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubGetFaceIdentity", "cdecl"):
HFFeatureHubGetFaceIdentity = _libs[_LIBRARY_FILENAME].get("HFFeatureHubGetFaceIdentity", "cdecl")
HFFeatureHubGetFaceIdentity.argtypes = [HInt32, PHFFaceFeatureIdentity]
HFFeatureHubGetFaceIdentity.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 480
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 493
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubGetFaceCount", "cdecl"):
HFFeatureHubGetFaceCount = _libs[_LIBRARY_FILENAME].get("HFFeatureHubGetFaceCount", "cdecl")
HFFeatureHubGetFaceCount.argtypes = [POINTER(HInt32)]
HFFeatureHubGetFaceCount.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 487
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 500
if _libs[_LIBRARY_FILENAME].has("HFFeatureHubViewDBTable", "cdecl"):
HFFeatureHubViewDBTable = _libs[_LIBRARY_FILENAME].get("HFFeatureHubViewDBTable", "cdecl")
HFFeatureHubViewDBTable.argtypes = []
HFFeatureHubViewDBTable.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 506
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 519
if _libs[_LIBRARY_FILENAME].has("HFMultipleFacePipelineProcess", "cdecl"):
HFMultipleFacePipelineProcess = _libs[_LIBRARY_FILENAME].get("HFMultipleFacePipelineProcess", "cdecl")
HFMultipleFacePipelineProcess.argtypes = [HFSession, HFImageStream, PHFMultipleFaceData, HFSessionCustomParameter]
HFMultipleFacePipelineProcess.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 522
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 535
if _libs[_LIBRARY_FILENAME].has("HFMultipleFacePipelineProcessOptional", "cdecl"):
HFMultipleFacePipelineProcessOptional = _libs[_LIBRARY_FILENAME].get("HFMultipleFacePipelineProcessOptional", "cdecl")
HFMultipleFacePipelineProcessOptional.argtypes = [HFSession, HFImageStream, PHFMultipleFaceData, HInt32]
HFMultipleFacePipelineProcessOptional.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 534
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 547
class struct_HFRGBLivenessConfidence(Structure):
pass
@@ -1337,17 +1336,17 @@ struct_HFRGBLivenessConfidence._fields_ = [
('confidence', HPFloat),
]
HFRGBLivenessConfidence = struct_HFRGBLivenessConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 534
HFRGBLivenessConfidence = struct_HFRGBLivenessConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 547
PHFRGBLivenessConfidence = POINTER(struct_HFRGBLivenessConfidence)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 534
PHFRGBLivenessConfidence = POINTER(struct_HFRGBLivenessConfidence)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 547
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 547
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 560
if _libs[_LIBRARY_FILENAME].has("HFGetRGBLivenessConfidence", "cdecl"):
HFGetRGBLivenessConfidence = _libs[_LIBRARY_FILENAME].get("HFGetRGBLivenessConfidence", "cdecl")
HFGetRGBLivenessConfidence.argtypes = [HFSession, PHFRGBLivenessConfidence]
HFGetRGBLivenessConfidence.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 558
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 571
class struct_HFFaceMaskConfidence(Structure):
pass
@@ -1360,17 +1359,17 @@ struct_HFFaceMaskConfidence._fields_ = [
('confidence', HPFloat),
]
HFFaceMaskConfidence = struct_HFFaceMaskConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 558
HFFaceMaskConfidence = struct_HFFaceMaskConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 571
PHFFaceMaskConfidence = POINTER(struct_HFFaceMaskConfidence)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 558
PHFFaceMaskConfidence = POINTER(struct_HFFaceMaskConfidence)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 571
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 570
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 583
if _libs[_LIBRARY_FILENAME].has("HFGetFaceMaskConfidence", "cdecl"):
HFGetFaceMaskConfidence = _libs[_LIBRARY_FILENAME].get("HFGetFaceMaskConfidence", "cdecl")
HFGetFaceMaskConfidence.argtypes = [HFSession, PHFFaceMaskConfidence]
HFGetFaceMaskConfidence.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 581
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 594
class struct_HFFaceQualityConfidence(Structure):
pass
@@ -1383,23 +1382,23 @@ struct_HFFaceQualityConfidence._fields_ = [
('confidence', HPFloat),
]
HFFaceQualityConfidence = struct_HFFaceQualityConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 581
HFFaceQualityConfidence = struct_HFFaceQualityConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 594
PHFFaceQualityConfidence = POINTER(struct_HFFaceQualityConfidence)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 581
PHFFaceQualityConfidence = POINTER(struct_HFFaceQualityConfidence)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 594
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 593
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 606
if _libs[_LIBRARY_FILENAME].has("HFGetFaceQualityConfidence", "cdecl"):
HFGetFaceQualityConfidence = _libs[_LIBRARY_FILENAME].get("HFGetFaceQualityConfidence", "cdecl")
HFGetFaceQualityConfidence.argtypes = [HFSession, PHFFaceQualityConfidence]
HFGetFaceQualityConfidence.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 605
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 618
if _libs[_LIBRARY_FILENAME].has("HFFaceQualityDetect", "cdecl"):
HFFaceQualityDetect = _libs[_LIBRARY_FILENAME].get("HFFaceQualityDetect", "cdecl")
HFFaceQualityDetect.argtypes = [HFSession, HFFaceBasicToken, POINTER(HFloat)]
HFFaceQualityDetect.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 618
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 631
class struct_HFInspireFaceVersion(Structure):
pass
@@ -1414,45 +1413,45 @@ struct_HFInspireFaceVersion._fields_ = [
('patch', c_int),
]
HFInspireFaceVersion = struct_HFInspireFaceVersion# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 618
HFInspireFaceVersion = struct_HFInspireFaceVersion# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 631
PHFInspireFaceVersion = POINTER(struct_HFInspireFaceVersion)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 618
PHFInspireFaceVersion = POINTER(struct_HFInspireFaceVersion)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 631
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 628
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 641
if _libs[_LIBRARY_FILENAME].has("HFQueryInspireFaceVersion", "cdecl"):
HFQueryInspireFaceVersion = _libs[_LIBRARY_FILENAME].get("HFQueryInspireFaceVersion", "cdecl")
HFQueryInspireFaceVersion.argtypes = [PHFInspireFaceVersion]
HFQueryInspireFaceVersion.restype = HResult
enum_HFLogLevel = c_int# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 640
enum_HFLogLevel = c_int# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 653
HF_LOG_NONE = 0# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 640
HF_LOG_NONE = 0# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 653
HF_LOG_DEBUG = (HF_LOG_NONE + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 640
HF_LOG_DEBUG = (HF_LOG_NONE + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 653
HF_LOG_INFO = (HF_LOG_DEBUG + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 640
HF_LOG_INFO = (HF_LOG_DEBUG + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 653
HF_LOG_WARN = (HF_LOG_INFO + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 640
HF_LOG_WARN = (HF_LOG_INFO + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 653
HF_LOG_ERROR = (HF_LOG_WARN + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 640
HF_LOG_ERROR = (HF_LOG_WARN + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 653
HF_LOG_FATAL = (HF_LOG_ERROR + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 640
HF_LOG_FATAL = (HF_LOG_ERROR + 1)# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 653
HFLogLevel = enum_HFLogLevel# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 640
HFLogLevel = enum_HFLogLevel# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 653
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 645
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 658
if _libs[_LIBRARY_FILENAME].has("HFSetLogLevel", "cdecl"):
HFSetLogLevel = _libs[_LIBRARY_FILENAME].get("HFSetLogLevel", "cdecl")
HFSetLogLevel.argtypes = [HFLogLevel]
HFSetLogLevel.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 650
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 663
if _libs[_LIBRARY_FILENAME].has("HFLogDisable", "cdecl"):
HFLogDisable = _libs[_LIBRARY_FILENAME].get("HFLogDisable", "cdecl")
HFLogDisable.argtypes = []
HFLogDisable.restype = HResult
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 663
# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 676
if _libs[_LIBRARY_FILENAME].has("HFDeBugImageStreamImShow", "cdecl"):
HFDeBugImageStreamImShow = _libs[_LIBRARY_FILENAME].get("HFDeBugImageStreamImShow", "cdecl")
HFDeBugImageStreamImShow.argtypes = [HFImageStream]
@@ -1516,27 +1515,27 @@ HFImageData = struct_HFImageData# /Users/tunm/work/InspireFace/cpp/inspireface/c
HFSessionCustomParameter = struct_HFSessionCustomParameter# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 132
HFFaceBasicToken = struct_HFFaceBasicToken# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 191
HFFaceBasicToken = struct_HFFaceBasicToken# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 204
HFFaceEulerAngle = struct_HFFaceEulerAngle# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 202
HFFaceEulerAngle = struct_HFFaceEulerAngle# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 215
HFMultipleFaceData = struct_HFMultipleFaceData# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 216
HFMultipleFaceData = struct_HFMultipleFaceData# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 229
HFFaceFeature = struct_HFFaceFeature# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 299
HFFaceFeature = struct_HFFaceFeature# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 312
HFFeatureHubConfiguration = struct_HFFeatureHubConfiguration# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 349
HFFeatureHubConfiguration = struct_HFFeatureHubConfiguration# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 362
HFFaceFeatureIdentity = struct_HFFaceFeatureIdentity# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 379
HFFaceFeatureIdentity = struct_HFFaceFeatureIdentity# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 392
HFSearchTopKResults = struct_HFSearchTopKResults# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 388
HFSearchTopKResults = struct_HFSearchTopKResults# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 401
HFRGBLivenessConfidence = struct_HFRGBLivenessConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 534
HFRGBLivenessConfidence = struct_HFRGBLivenessConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 547
HFFaceMaskConfidence = struct_HFFaceMaskConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 558
HFFaceMaskConfidence = struct_HFFaceMaskConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 571
HFFaceQualityConfidence = struct_HFFaceQualityConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 581
HFFaceQualityConfidence = struct_HFFaceQualityConfidence# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 594
HFInspireFaceVersion = struct_HFInspireFaceVersion# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 618
HFInspireFaceVersion = struct_HFInspireFaceVersion# /Users/tunm/work/InspireFace/cpp/inspireface/c_api/inspireface.h: 631
# No inserted files

View File

@@ -131,7 +131,6 @@ class ImageStream(object):
return self._handle
# == Session API ==
@dataclass
@@ -234,6 +233,7 @@ class SessionCustomParameter:
return custom_param
class InspireFaceSession(object):
"""
Manages a session for face detection and recognition processes using the InspireFace library.
@@ -244,8 +244,9 @@ class InspireFaceSession(object):
param (int or SessionCustomParameter): Configuration parameters or flags for the session.
"""
def __init__(self, param, detect_mode: int = HF_DETECT_MODE_IMAGE,
max_detect_num: int = 10):
def __init__(self, param, detect_mode: int = HF_DETECT_MODE_ALWAYS_DETECT,
max_detect_num: int = 10, detect_pixel_level=-1, track_by_detect_mode_fps=-1):
"""
Initializes a new session with the provided configuration parameters.
Args:
@@ -259,9 +260,11 @@ class InspireFaceSession(object):
self._sess = HFSession()
self.param = param
if isinstance(self.param, SessionCustomParameter):
ret = HFCreateInspireFaceSession(self.param._c_struct(), detect_mode, max_detect_num, self._sess)
ret = HFCreateInspireFaceSession(self.param._c_struct(), detect_mode, max_detect_num, detect_pixel_level,
track_by_detect_mode_fps, self._sess)
elif isinstance(self.param, int):
ret = HFCreateInspireFaceSessionOptional(self.param, detect_mode, max_detect_num, self._sess)
ret = HFCreateInspireFaceSessionOptional(self.param, detect_mode, max_detect_num, detect_pixel_level,
track_by_detect_mode_fps, self._sess)
else:
raise NotImplemented("")
if ret != 0:
@@ -314,20 +317,6 @@ class InspireFaceSession(object):
else:
return []
def set_track_mode(self, mode: int):
"""
Sets the tracking mode for the face detection session.
Args:
mode (int): An integer representing the tracking mode to be used.
Notes:
If setting the mode fails, an error is logged with the returned status code.
"""
ret = HFSessionSetFaceTrackMode(self._sess, mode)
if ret != 0:
logger.error(f"Set track mode error: {ret}")
def set_track_preview_size(self, size=192):
"""
Sets the preview size for the face tracking session.
@@ -342,6 +331,12 @@ class InspireFaceSession(object):
if ret != 0:
logger.error(f"Set track preview size error: {ret}")
def set_filter_minimum_face_pixel_size(self, min_size=32):
ret = HFSessionSetFilterMinimumFacePixelSize(self._sess, min_size)
if ret != 0:
logger.error(f"Set filter minimum face pixel size error: {ret}")
def face_pipeline(self, image, faces: List[FaceInformation], exec_param) -> List[FaceExtended]:
"""
Processes detected faces to extract additional attributes based on the provided execution parameters.
@@ -494,6 +489,7 @@ class InspireFaceSession(object):
def __del__(self):
self.release()
# == Global API ==
def launch(resource_path: str) -> bool:
"""
@@ -623,7 +619,6 @@ def feature_comparison(feature1: np.ndarray, feature2: np.ndarray) -> float:
return float(comparison_result.value)
class FaceIdentity(object):
"""
Represents an identity based on facial features, associating the features with a custom ID and a tag.
@@ -688,6 +683,7 @@ class FaceIdentity(object):
feature=PHFFaceFeature(feature)
)
def feature_hub_set_search_threshold(threshold: float):
"""
Sets the search threshold for face matching in the FeatureHub.
@@ -697,6 +693,7 @@ def feature_hub_set_search_threshold(threshold: float):
"""
HFFeatureHubFaceSearchThresholdSetting(threshold)
def feature_hub_face_insert(face_identity: FaceIdentity) -> bool:
"""
Inserts a face identity into the FeatureHub database.
@@ -716,6 +713,7 @@ def feature_hub_face_insert(face_identity: FaceIdentity) -> bool:
return False
return True
@dataclass
class SearchResult:
"""
@@ -728,6 +726,7 @@ class SearchResult:
confidence: float
similar_identity: FaceIdentity
def feature_hub_face_search(data: np.ndarray) -> SearchResult:
"""
Searches for the most similar face identity in the feature hub based on provided facial features.
@@ -755,6 +754,7 @@ def feature_hub_face_search(data: np.ndarray) -> SearchResult:
none = FaceIdentity(np.zeros(0), most_similar.customId, "None")
return SearchResult(confidence=confidence.value, similar_identity=none)
def feature_hub_face_search_top_k(data: np.ndarray, top_k: int) -> List[Tuple]:
"""
Searches for the top 'k' most similar face identities in the feature hub based on provided facial features.
@@ -780,6 +780,7 @@ def feature_hub_face_search_top_k(data: np.ndarray, top_k: int) -> List[Tuple]:
outputs.append((confidence, customId))
return outputs
def feature_hub_face_update(face_identity: FaceIdentity) -> bool:
"""
Updates an existing face identity in the feature hub.
@@ -799,6 +800,7 @@ def feature_hub_face_update(face_identity: FaceIdentity) -> bool:
return False
return True
def feature_hub_face_remove(custom_id: int) -> bool:
"""
Removes a face identity from the feature hub using its custom ID.
@@ -818,6 +820,7 @@ def feature_hub_face_remove(custom_id: int) -> bool:
return False
return True
def feature_hub_get_face_identity(custom_id: int):
"""
Retrieves a face identity from the feature hub using its custom ID.
@@ -839,6 +842,7 @@ def feature_hub_get_face_identity(custom_id: int):
return FaceIdentity.from_ctypes(identify)
def feature_hub_get_face_count() -> int:
"""
Retrieves the total count of face identities stored in the feature hub.
@@ -856,6 +860,7 @@ def feature_hub_get_face_count() -> int:
return int(count.value)
def view_table_in_terminal():
"""
Displays the database table of face identities in the terminal.
@@ -867,6 +872,7 @@ def view_table_in_terminal():
if ret != 0:
logger.error(f"Failed to view DB: {ret}")
def version() -> str:
"""
Retrieves the version of the InspireFace library.
@@ -878,6 +884,7 @@ def version() -> str:
HFQueryInspireFaceVersion(PHFInspireFaceVersion(ver))
return f"{ver.major}.{ver.minor}.{ver.patch}"
def set_logging_level(level: int) -> None:
"""
Sets the logging level of the InspireFace library.
@@ -887,6 +894,7 @@ def set_logging_level(level: int) -> None:
"""
HFSetLogLevel(level)
def disable_logging() -> None:
"""
Disables all logging from the InspireFace library.

View File

@@ -5,7 +5,7 @@ from inspireface.modules.core.native import HF_ENABLE_NONE, HF_ENABLE_FACE_RECOG
HF_ENABLE_MASK_DETECT, HF_ENABLE_AGE_PREDICT, HF_ENABLE_GENDER_PREDICT, HF_ENABLE_QUALITY, HF_ENABLE_INTERACTION
# Face track mode
from inspireface.modules.core.native import HF_DETECT_MODE_IMAGE, HF_DETECT_MODE_VIDEO
from inspireface.modules.core.native import HF_DETECT_MODE_ALWAYS_DETECT, HF_DETECT_MODE_LIGHT_TRACK, HF_DETECT_MODE_TRACK_BY_DETECTION
# Image format
from inspireface.modules.core.native import HF_STREAM_RGB, HF_STREAM_BGR, HF_STREAM_RGBA, HF_STREAM_BGRA, HF_STREAM_YUV_NV12, HF_STREAM_YUV_NV21

View File

@@ -18,7 +18,7 @@ def case_face_detection_image(resource_path, image_path):
# Optional features, loaded during session creation based on the modules specified.
opt = HF_ENABLE_FACE_RECOGNITION | HF_ENABLE_QUALITY | HF_ENABLE_MASK_DETECT | HF_ENABLE_LIVENESS
session = ifac.InspireFaceSession(opt, HF_DETECT_MODE_IMAGE)
session = ifac.InspireFaceSession(opt, HF_DETECT_MODE_ALWAYS_DETECT)
# Load the image using OpenCV.
image = cv2.imread(image_path)

View File

@@ -20,7 +20,7 @@ def case_face_recognition(resource_path, test_data_folder):
# Enable face recognition features.
opt = HF_ENABLE_FACE_RECOGNITION
session = ifac.InspireFaceSession(opt, HF_DETECT_MODE_IMAGE)
session = ifac.InspireFaceSession(opt, HF_DETECT_MODE_ALWAYS_DETECT)
# Configure the feature management system.
feature_hub_config = ifac.FeatureHubConfiguration(

View File

@@ -26,7 +26,7 @@ def case_face_tracker_from_video(resource_path, source, show):
# Optional features, loaded during session creation based on the modules specified.
opt = HF_ENABLE_NONE
session = ifac.InspireFaceSession(opt, HF_DETECT_MODE_VIDEO) # Use video mode
session = ifac.InspireFaceSession(opt, HF_DETECT_MODE_LIGHT_TRACK) # Use video mode
# Determine if the source is a digital webcam index or a video file path.
try:

View File

@@ -33,7 +33,7 @@ TEST_FACE_COMPARISON_IMAGE_THRESHOLD = 0.45
TEST_PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
# Current project path
CURRENT_PROJECT_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
CURRENT_PROJECT_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Main project path
MAIN_PROJECT_PATH = os.path.dirname(CURRENT_PROJECT_PATH)

View File

@@ -181,7 +181,6 @@ def lfw_generator(directory_path):
def batch_import_lfw_faces(lfw_path, engine: ifac.InspireFaceSession, num_of_faces: int):
engine.set_track_mode(HF_DETECT_MODE_IMAGE)
generator = lfw_generator(lfw_path)
registered_faces = 0

View File

@@ -16,7 +16,7 @@ class CameraStreamCase(unittest.TestCase):
def test_stream_rotation(self) -> None:
# Prepare material
engine = ifac.InspireFaceSession(HF_ENABLE_NONE, HF_DETECT_MODE_IMAGE)
engine = ifac.InspireFaceSession(HF_ENABLE_NONE, HF_DETECT_MODE_ALWAYS_DETECT)
# Prepare rotation images
rotation_images_filenames = ["rotate/rot_0.jpg", "rotate/rot_90.jpg", "rotate/rot_180.jpg","rotate/rot_270.jpg"]
rotation_images = [cv2.imread(get_test_data(path)) for path in rotation_images_filenames]

View File

@@ -12,13 +12,12 @@ class FaceRecognitionBaseCase(unittest.TestCase):
def setUp(self) -> None:
# Prepare material
track_mode = HF_DETECT_MODE_IMAGE
track_mode = HF_DETECT_MODE_ALWAYS_DETECT
param = ifac.SessionCustomParameter()
param.enable_recognition = True
self.engine = ifac.InspireFaceSession(param, track_mode, 10)
def test_face_feature_extraction(self):
self.engine.set_track_mode(mode=HF_DETECT_MODE_IMAGE)
# Prepare a image
image = cv2.imread(get_test_data("bulk/kun.jpg"))
self.assertIsNotNone(image)
@@ -38,7 +37,6 @@ class FaceRecognitionBaseCase(unittest.TestCase):
self.assertIsNotNone(feature)
#
def test_face_comparison(self):
self.engine.set_track_mode(mode=HF_DETECT_MODE_IMAGE)
# Prepare two pictures of someone
images_path_list = [get_test_data("bulk/kun.jpg"), get_test_data("bulk/jntm.jpg")]
self.assertEqual(len(images_path_list), 2, "Only 2 photos can be used for the 1v1 scene.")
@@ -89,7 +87,7 @@ class FaceRecognitionCRUDMemoryCase(unittest.TestCase):
search_threshold=TEST_FACE_COMPARISON_IMAGE_THRESHOLD,
)
ifac.feature_hub_enable(config)
track_mode = HF_DETECT_MODE_IMAGE
track_mode = HF_DETECT_MODE_ALWAYS_DETECT
param = ifac.SessionCustomParameter()
param.enable_recognition = True
cls.engine = ifac.InspireFaceSession(param, track_mode)
@@ -188,7 +186,7 @@ class FaceRecognitionFeatureExtractCase(unittest.TestCase):
self.stream = ifac.ImageStream.load_from_cv_image(image)
self.assertIsNotNone(self.stream)
# Prepare material
track_mode = HF_DETECT_MODE_IMAGE
track_mode = HF_DETECT_MODE_ALWAYS_DETECT
param = ifac.SessionCustomParameter()
param.enable_recognition = True
self.engine = ifac.InspireFaceSession(param, track_mode)
@@ -207,7 +205,6 @@ class FaceRecognitionFeatureExtractCase(unittest.TestCase):
@benchmark(test_name="Feature Extract", loop=1000)
def test_benchmark_feature_extract(self):
self.engine.set_track_mode(HF_DETECT_MODE_IMAGE)
for _ in range(self.loop):
feature = self.engine.face_feature_extract(self.stream, self.face)
self.assertEqual(TEST_MODEL_FACE_FEATURE_LENGTH, feature.size)

View File

@@ -9,10 +9,13 @@ class FaceTrackerCase(unittest.TestCase):
def setUp(self) -> None:
# Prepare material
track_mode = HF_DETECT_MODE_IMAGE # Use video mode
track_mode = HF_DETECT_MODE_ALWAYS_DETECT
self.engine = ifac.InspireFaceSession(param=ifac.SessionCustomParameter(),
detect_mode=track_mode)
self.engine_tk = ifac.InspireFaceSession(param=ifac.SessionCustomParameter(),
detect_mode=HF_DETECT_MODE_LIGHT_TRACK)
def test_face_detection_from_image(self):
image = cv2.imread(get_test_data("bulk/kun.jpg"))
self.assertIsNotNone(image)
@@ -33,8 +36,6 @@ class FaceTrackerCase(unittest.TestCase):
self.assertEqual(len(self.engine.face_detection(any_image)), 0)
def test_face_pose(self):
self.engine.set_track_mode(HF_DETECT_MODE_IMAGE)
# Test yaw (shake one's head)
left_face = cv2.imread(get_test_data("pose/left_face.jpeg"))
self.assertIsNotNone(left_face)
@@ -84,11 +85,9 @@ class FaceTrackerCase(unittest.TestCase):
self.assertEqual(True, right_face_roll > 30)
def test_face_track_from_video(self):
self.engine.set_track_mode(HF_DETECT_MODE_VIDEO)
# Read a video file
video_gen = read_video_generator(get_test_data("video/810_1684206192.mp4"))
results = [self.engine.face_detection(frame) for frame in video_gen]
results = [self.engine_tk.face_detection(frame) for frame in video_gen]
num_of_frame = len(results)
num_of_track_loss = len([faces for faces in results if not faces])
total_track_ids = [faces[0].track_id for faces in results if faces]
@@ -117,30 +116,27 @@ class FaceTrackerBenchmarkCase(unittest.TestCase):
self.image = cv2.imread(get_test_data("bulk/kun.jpg"))
self.assertIsNotNone(self.image)
# Prepare material
track_mode = HF_DETECT_MODE_VIDEO # Use video mode
self.engine = ifac.InspireFaceSession(HF_ENABLE_NONE, track_mode, )
self.engine = ifac.InspireFaceSession(HF_ENABLE_NONE, HF_DETECT_MODE_ALWAYS_DETECT, )
self.engine_tk = ifac.InspireFaceSession(HF_ENABLE_NONE, HF_DETECT_MODE_LIGHT_TRACK, )
# Prepare video data
self.video_gen = read_video_generator(get_test_data("video/810_1684206192.mp4"))
@benchmark(test_name="Face Detect", loop=1000)
def test_benchmark_face_detect(self):
self.engine.set_track_mode(HF_DETECT_MODE_IMAGE)
for _ in range(self.loop):
faces = self.engine.face_detection(self.image)
self.assertEqual(len(faces), 1, "No face detected may have an error, please check.")
@benchmark(test_name="Face Track", loop=1000)
def test_benchmark_face_track(self):
self.engine.set_track_mode(HF_DETECT_MODE_VIDEO)
for _ in range(self.loop):
faces = self.engine.face_detection(self.image)
faces = self.engine_tk.face_detection(self.image)
self.assertEqual(len(faces), 1, "No face detected may have an error, please check.")
@benchmark(test_name="Face Track(Video)", loop=345)
def test_benchmark_face_track_video(self):
self.engine.set_track_mode(HF_DETECT_MODE_VIDEO)
for frame in self.video_gen:
faces = self.engine.face_detection(frame)
faces = self.engine_tk.face_detection(frame)
self.assertEqual(len(faces), 1, "No face detected may have an error, please check.")
@classmethod

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 39 KiB