ArcFace-python icon indicating copy to clipboard operation
ArcFace-python copied to clipboard

请问大佬,怎么把提取出来的人脸特征保存下来呢

Open wuxiaolianggit opened this issue 4 years ago • 8 comments

请问大佬,怎么把提取出来的人脸特征保存下来呢? @ @tensorflower

wuxiaolianggit avatar Jun 30 '20 03:06 wuxiaolianggit

请问大佬,怎么把提取出来的人脸特征保存下来呢? @ @tensorflower

作者的特征提取部分结构体写的有问题,需要修改一下才能把特征存下来

GengCauWong avatar Apr 25 '21 05:04 GengCauWong

大佬,怎么修改呢 @GengCauWong

wuxiaolianggit avatar Apr 25 '21 08:04 wuxiaolianggit

大佬,怎么修改呢 @GengCauWong

这个文件struct_info.py改成如下,然后face_feature1.feature[num],num是0~1032

#人脸特征信息 class ASF_FaceFeature(Structure): feature:List[int] featureSize:int

_fields_=[('feature',POINT(c_uint8)),       # 人脸特征
          ('featureSize',c_int32)     # 人脸特征长度
          ]

GengCauWong avatar Apr 26 '21 08:04 GengCauWong

多谢大佬回复,我试一下 @GengCauWong

wuxiaolianggit avatar Apr 26 '21 08:04 wuxiaolianggit

多谢大佬回复,我试一下 @GengCauWong

忘了一个地方,lib_func.py里面的,如下地方也要改

malloc = dllc.malloc malloc.restype = POINTER(c_uint8) malloc.argtypes = (c_size_t,)

GengCauWong avatar Apr 26 '21 09:04 GengCauWong

好的,多谢大佬 @GengCauWong

wuxiaolianggit avatar Apr 26 '21 09:04 wuxiaolianggit

其实不用该源文件。特征就是一个Bytes数据。通过get_feature_bytes()拿到数据之后保存到文件或者数据都行。然后用的时候再都出来,由于对比的时候需要特定的类型,所以还要转换一下。ASF_FaceFeature()里的set_feature()已经告诉你怎么构造了。打个比方,你从文件或者数据库中读出保存的Bytes数据为feature,然后 fas = ASF_FaceFeature() fas.featureSize = feature.__len__() fas.feature = dllc.malloc(fas.featureSize) dllc.memcpy(fas.feature, feature, fas.featureSize) 然后拿这个fas和其他的对比即可,比如 res, score = im.similiarity(fas, face_feature2)

a1696585 avatar Nov 12 '21 09:11 a1696585

其实不用该源文件。特征就是一个Bytes数据。通过get_feature_bytes()拿到数据之后保存到文件或者数据都行。然后用的时候再都出来,由于对比的时候需要特定的类型,所以还要转换一下。ASF_FaceFeature()里的set_feature()已经告诉你怎么构造了。打个比方,你从文件或者数据库中读出保存的Bytes数据为feature,然后 fas = ASF_FaceFeature() fas.featureSize = feature.__len__() fas.feature = dllc.malloc(fas.featureSize) dllc.memcpy(fas.feature, feature, fas.featureSize) 然后拿这个fas和其他的对比即可,比如 res, score = im.similiarity(fas, face_feature2)

请问大佬有

多谢大佬回复,我试一下 @GengCauWong

忘了一个地方,lib_func.py里面的,如下地方也要改

malloc = dllc.malloc malloc.restype = POINTER(c_uint8) malloc.argtypes = (c_size_t,)

您好,我按照您说的修改还是无法保存。

jcluo1994 avatar Feb 21 '22 03:02 jcluo1994