Toybrick

有关人脸识别的精度问题

MadDog

中级会员

积分
402
楼主
发表于 2021-2-20 15:52:51    查看: 15836|回复: 5 | [复制链接]    打印 | 只看该作者
大家好:
我现在在利用3399ProD的板子最人脸识别的工作,我的大概的工作流程是:
1:建一个人脸库的目录,里面是每个人的大头照,照片的尺寸是300*400,调用rockx_face_recognize获取每张人脸的feature,记录下载作为基准库
2:检测一副大的图像,调用rockx_object_detect获取到其中多个人脸目标,按照检测出的box,从原始图像中分别拷贝出单张人脸,调用 rockx_face_recognize获取每张人脸的feature;
3:用步骤 2 中获取的feature和步骤 1 中获取的 feature进行比对(rockx_face_feature_similarity),用similarity最小的作为检测结果。

代码都实现了,人脸匹配的结果非常不理想,总是匹配错误(匹配错人了);
其中遇到几个问题:
1:步骤2中,检测人脸还是挺准的,可是按照box拷贝出的图像,拿去提取特征值的时候,报warnning  
W RKNNAPI: warning: inputs[0] expected input len is 37632, but actual len is 138168!

问题:rockx_face_recognize 方法对输入的图像的大小有要求或限制吗?

2:在步骤 2 中,因为是从大图中按照box截取图像的,截取出的人脸周边都没有空隙,这样是否会影响特征值的提取?

3:similarity越小越相似,大概的经验值是多少,我们认为是同一个人呢?

谢谢!
回复

使用道具 举报

jefferyzhang

版主

积分
13580
沙发
发表于 2021-2-21 10:59:30 | 只看该作者
不对齐?
回复

使用道具 举报

zhuyuliang0

中级会员

积分
355
板凳
发表于 2021-2-22 10:04:04 | 只看该作者
similartiy我试过设置小于1是不会匹配错人的,关于抓拍匹配确实有些不理想
回复

使用道具 举报

zhuyuliang0

中级会员

积分
355
地板
发表于 2021-2-22 10:05:55 | 只看该作者
zhuyuliang0 发表于 2021-2-22 10:04
similartiy我试过设置小于1是不会匹配错人的,关于抓拍匹配确实有些不理想

box的尺寸大于112的时候匹配率会高些
回复

使用道具 举报

MadDog

中级会员

积分
402
5#
 楼主| 发表于 2021-2-22 10:23:09 | 只看该作者

对齐了,但是在对齐过程中,会报错,并且有可能导致崩溃;
我的做法是 用其它的函数加载图片(RGB的格式)得到一块Buffer,自己构造
rockx_image_t input_image;
input_image.data = image->buf;
input_image.pixel_format = (rockx_pixel_format)image->emFmt;
input_image.width = image->width;
input_image.height = image->height;

然后进行align操作,

rockx_image_t image_align;
memset(&image_align, 0, sizeof(rockx_image_t));
               
rockx_rect_t in_box;
in_box.left = objPos.left;
in_box.top = objPos.top;
in_box.right = objPos.right;
in_box.bottom = objPos.bottom;
               
rockx_ret_t retAlign = rockx_face_align((rockx_handle_t)m_hFaceLandMark5,
                        &input_image,
                        &in_box,
                        NULL,
                        &image_align);

......
......
rockx_image_release(&image_align);

这样的话,在处理某些图片的时候会导致崩溃:
begin get feature of 高佳佳.jpg image width 585 height 735
obj left 0 top 199 width 351 height 336
D RKNNAPI: __can_use_fixed_point: use_fixed_point = 1.

free(): invalid next size (normal)
Aborted
上面就是在获取这个图片的特征值,图片大小是585*735,检测到其中人脸的区域是(0, 199)到(351, 535),进行align处理时,崩溃。

请问时我的用法有问题吗?
回复

使用道具 举报

MadDog

中级会员

积分
402
6#
 楼主| 发表于 2021-2-23 15:57:02 | 只看该作者
对齐了,但是在对齐过程中,会报错,并且有可能导致崩溃;
我的做法是 用其它的函数加载图片(RGB的格式)得到一块Buffer,自己构造
rockx_image_t input_image;
input_image.data = image->buf;
input_image.pixel_format = (rockx_pixel_format)image->emFmt;
input_image.width = image->width;
input_image.height = image->height;

然后进行align操作,

rockx_image_t image_align;
memset(&image_align, 0, sizeof(rockx_image_t));
               
rockx_rect_t in_box;
in_box.left = objPos.left;
in_box.top = objPos.top;
in_box.right = objPos.right;
in_box.bottom = objPos.bottom;
               
rockx_ret_t retAlign = rockx_face_align((rockx_handle_t)m_hFaceLandMark5,
                        &input_image,
                        &in_box,
                        NULL,
                        &image_align);

......
......
rockx_image_release(&image_align);

这样的话,在处理某些图片的时候会导致崩溃:
begin get feature of 高佳佳.jpg image width 585 height 735
obj left 0 top 199 width 351 height 336
D RKNNAPI: __can_use_fixed_point: use_fixed_point = 1.

free(): invalid next size (normal)
Aborted
上面就是在获取这个图片的特征值,图片大小是585*735,检测到其中人脸的区域是(0, 199)到(351, 535),进行align处理时,崩溃。

请问时我的用法有问题吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表