




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
阳光人脸识别二次开发包 (V3.05)说明书第一部分 产品的性能评价,使用说明,问题等。第二部分 SDK函数手册。 第一部分一 产品的版权本品从底层开始即完全自主知识产权开发,未用任何第三方图像库及GDI函数库。更未引用其它公司的人脸识别SDK来进行加工与封装。本品是VC开发,但只有极小部分用到了MFC,大部分CODE均为标准C+编写。二 产品的版本SunLightFace.exe是网站发布的演示程序,用户可以通过这个程序来测试SDK的性能。SunLightFace.dll 是SDK,其性能技术指标与演示程序是完全相同的。目前这个版本全称是:可见光主动识别版(非红外摄像头,配合识别)另外还有两个版本:可见光被动识别版,红外主动识别版。三 产品的重要特点1. 人脸检测的高正确率,误检,漏检很少,支持多脸(max=32)。平面旋转高达60度,并带鼻,嘴定位,及眼镜判断等功能。2. 人脸识别的高精度,向用户推荐的识别阀值不仅能适应光线环境的变化,而且有高达97.18%以上的正确率。带眼镜或头发挡住眉毛都行。(但黑粗边眼镜的识别率相对低些,即在较好的识别环境下,黑粗边眼镜仍是OK的,除此之外的眼镜,对识别率没有任何影响)四 如何使用范例代码SunLightFace.dll是按WINDOWS API的标准调用来生成的动态库,并提供了VB,VC,C#三类范例代码,精简扼要,如果因VS版本问题无法打开,可以用其它文件编辑器打开.CPP,.H,.CS,.frm,.bas文件来进行分析。五 如何采模板1.因为是主动配合识别,最好是采5张模板(总量是10张),正面1张,侧面2张,上仰下俯各1张,偏角不宜大(2-3度即可-微偏:因为你在主动配合识别时不会故意地去偏着头识别,而是正对识别,但可能无心偏了一点,这里要求你“微偏”的目的就是为了和你将来可能的“无心偏了一点“对应),并都眼看着画面中的自己,因为眼球是定准比对的重要依据,所以无论是采模板还是识别,都眼看着画面中的自己最佳。2.另外余下的5个模板,可以空,用于以后进行动态模板更新(后面第二部分详解),以适应人脸的长期发展变化。3.采模板时,光线不宜偏亮,也不宜偏暗,适中,并充分地反映出人脸轮廓。这样的标准化模板才能更有效地去兼容那些人脸偏亮或偏暗的识别时段。要让识别更准确,眼球附近就必须最大可能地清晰鲜明,同时眼球上最好不要反白光。4.由于各个摄像头的焦距不同,可能对人脸轮廓的拉伸度也不同,所以,为达到最好的识别率,建议采集与识别完全用一模一样的摄像头。5.及时画出采集的人脸模板照片,如果发现其中人眼定位不准确的,建议删除该模板重采,因为这样的模板是对识别无效的。六如何设置相似度阀值?当前版本的人脸检测推荐阀值为: 0.55当前版本的人脸识别1CN推荐阀值为: 0.71当前版本的人脸识别1C1推荐阀值为: 0.611.人脸识别或验证最好进行三次,取最大值,更可靠些。2.1C1由于有个人ID的输入或打卡,所以相似度阀值可略低些。3.假定每个ID都有5个模板,且都有一张正面的BMP文件,则把所有加入的ID,用它们对应的BMP,在内部做一遍2选的1CN相互识别。 这样,2选的结果:会输出两个值,第一个为张三的照片与张三的模板的相似度,第二个是与张三最像的人的模板与张三照片的相似度,我们关注第二个: 求出第二个的平均相似度及最高相似度,再参照SDK的推荐值来共同设定。 比如:SDK的推荐值=0.55 全部互识别的第二个结果的平均相似度=0.2 第二个结果的最高相似度=0.41 (由于这两个人像) 那么,说明:最终阀值可定为:0.55 虽然目前取0.43(比0.41多0.02)的阀值也不会出错,但难保外人来识别时不会错,所以还是用推荐值好些。 再比如:SDK的推荐值=0.55 全部互识别的第二个结果的平均相似度=0.3 第二个结果的最高相似度=0.56 (由于这两个人非常像) 那么,说明:最终阀值可定为:0.58 (高于推荐值) 否则:这两个人就可能相互识别错。 六 图像格式,大小,人脸大小怎样最佳?1.图像格式可用BMP,JPG,但最好用BMP,因为最终分析数据还是BMP的。2.图像大小推荐用320*240(240*320更好),最大可支持1280*1280,但大了会使速度减慢。3.人脸最佳采模板和识别SIZE是:眼距40像素。七 产品的适用人群仅对人脸识别而言:(即不针对人脸检测)最适用人群:深色眼球,眉毛与眼睛界限分明,鼻尖处明暗分明。不适用人群:眼球颜色非常“浅色”的人脸。(除此外,黑黄蓝绿眼球都是可以的)年纪限制: 老少男女均可识别,无头发可,头发挡住眉毛也可。佩戴限制:戴墨镜不行,戴帽子可以,但不能挡住眼,戴粗黑边眼镜时,识别效果比不戴眼镜稍差,但仍能识别,其它眼镜不影响识别,而且可以戴眼镜采模板,不带眼镜识别,反之亦可。八 人脸数据的保存1. 一个模板大约需要1MB的硬盘空间。其中含有一张档案式人脸照片,可由SDK函数读出并画出。2. 注意查看一个名为DataBase.ini的文件,里面可对数据库进行配置。即可以由用户定制ADO连接串,目前主要兼容Access和SQLSERVER两种数据库。九 如何鉴别两套人脸识别SDK的优劣?1CN如果识别出错(把你认成了别人),就意味着1C1也会错,即这个误认的人用你的ID号就能识别通过,所以,应用1CN来比较人脸识别开发包(SDK)的性能,几个人采好模板后,在各种可能性的光线下都能刚好通过的1CN阀值,就是“性能比较阀值”,(各家SDK的阀值不同,这就相当于让两个SDK都处于相同的识别能力水平上。)然后想办法找百人照片,或千人照片,(且一个人只能有一张照片,不能重复,)越多越好,以每张照片一个ID的方式加入,从而构成大型人脸模板库,然后再一一用这些照片进行1CN的5选,当然第1名相似度应是0.99以上(自身像片),而第2,3,4,5个相似度(其他人的像片),应在“性能比较阀值”之下(否则就是实际上的认错人了),而且差距越大越好,然后统计出这1000次操作的平均结果,就可以知道哪个SDK识别能力强了。十 在DELPHI下做二次开发的注意事项:1. 因为是WIN32 API,所以delphi调用应采用 stdcall方式。2. VC之CHAR *对应的变量类型是delphi的pchar类型。3. 定义结构时,应选择record方式。第二部分(注:下文虽采用VC语言格式进行说明,但仍支持其它语言(VB,DELPHI,C#)进行二次开发,并提供了各类编程语言的简明范例代码)一 结构定义:/人脸检测的输出结果结构struct DLL_OUT_FACE_STRUCT BYTE address; /无意义,传址的 LONG eye1_x; LONG eye1_y; LONG eye2_x; LONG eye2_y; /两眼坐标,要进行了人眼定位才有效 /注意:试用版不能做人眼定位,只能输出下面的人脸矩形。 LONG left; LONG top; LONG right; LONG bottom; /人脸矩形 LONG angle; /人脸平面角度 (正面垂直时为90度) float tally; /得分 ,100分制,即人脸的置信度。 LONG is_small_face;/是小脸还是大脸,1为小脸,是启用了小脸检测的结果,小脸不能进行人脸识别 /当是小脸时,只输出人脸矩形,即只有人脸矩形有效,其它值无效 /下面的值要进行了人眼定位与人脸检测的后期处理才有效 LONG skin_color_R; /采样肤色COLORREF。(RGB) LONG skin_color_G; /采样肤色COLORREF。(RGB) LONG skin_color_B; /采样肤色COLORREF。(RGB) LONG skin_hd_bright; /采样肤色的灰度亮度。LONG left_face_len; /从左眼开始计算的左脸估计长度。LONG right_face_len; /从右眼开始计算的右脸估计长度。float face_width_rely; /脸宽的信任度0,1)。LONG nose_x; /在原图像中的鼻尖位置。LONG nose_y; /在原图像中的鼻尖位置。float nose_rely; /鼻尖位置:可信任度0,1)。LONG month_x; /在原图像中的嘴中心位置。LONG month_y; /在原图像中的嘴中心位置。float month_rely; /嘴心位置:可信任度0,1)。float glass_rely; /可能眼镜的置信度0,1) 。LONG eye1_w; /人眼的两个眼球的宽与高,人眼的两个眼球的宽与高,但要求姿态端正,LONG eye1_h; /定位精度随眼距的增大而增高LONG eye2_w;LONG eye2_h; LONG CloseEyeBelievable; /闭眼的可能性系数输出,值域0,1000;/END STRUCT DEF/1CN的识别输出结构struct DLL_1CN_RECOG_OUT_STRUCT BYTE address; /无意义,传址的 float value; /相似度值域(0,1) char Template_ID33; /模板的ID char TemplateFileName256; /模板源文件名称;/一般地,SDK提供的所有函数的返回值为0,表示失败或消极结果,小于0则表示传入参数发生错误,1和1以上表示函数成功。二:初始化部分 LONG _stdcall Initialize(CHAR *username); /装入SDK时最先执行且只执行一次的。 /上面这个用户名是SDK购买者的名称:XXXX公司经理XXX,成功返回1。LONG _stdcall UnInitialize(); /退出SDK时执行且只执行一次的。LONG _stdcall GetLastError(LONG OID,CHAR *msg); /取得最后一次失败的原因信息。 LONG _stdcall CreateOneThreadObject(LONG IS_LOAD_TZLIB=1,CHAR *DataFilePath=NULL); /参数1表示是否载入特征库到内存,只做慢速的1C1(或只做人脸检测)就不用LOAD./参数2表示指明数据文件的路径,数据与程序可以不在同一目录中,如果在同一目录,就默认为空。/返回值,LONG 线程对象的ID,线程ID值域1,64,共可建64个线程,0表示失败/如果是多线程,则此函数必要在线程上运行,即,一个对象实例,从头到尾都只能在一个线程上建立,运行,销毁。LONG _stdcall DeleteOneThreadObject(LONG OID); /返回值0,失败,1,成功三:识别主体部分/人脸定位的输出数组已按从高到低的得分排了序。 LONG _stdcall FaceLocate(LONG OID, /第一个函数返回的人脸识别实例对象ID CHAR *FileName, /图像文件名,JPG,BMPLONG max_out_nums, /用户要求的最大人脸输出数FLOAT Threshold, /人脸置信度阀值,高于这个阀值才会被输出 DLL_OUT_FACE_STRUCT *dofs); /人脸输出结构数组 /返回值,实际输出的人脸数量 LONG _stdcall FaceLocate_BmpData( LONG OID, /第一个函数返回的人脸识别实例对象ID BYTE *BmpData,INT width,INT height,INT bitcount, /标准Windows位图数据(lpData,320,240,24) LONG max_out_nums, /用户要求的最大人脸输出数 FLOAT Threshold, /人脸置信度阀值,高于这个阀值才会被输出 DLL_OUT_FACE_STRUCT *dofs); /人脸输出结构数组/返回值,实际输出的人脸数量,如果一张照片上有8张人脸,则返回8. LONG _stdcall FlagFace( LONG OID,LONG draw_window_hwnd,LONG order,LONG offset_x=0,LONG offset_y=0);/在目标窗口上标志人脸(用户可自行开发) LONG _stdcall FaceLocate_FreeMemory( LONG OID); (用户可自行开发)/人脸检测完成后,可用作人脸识别,或画标志,最后在清除人脸检测暂用的内存。LONG _stdcall Recog1C1( LONG OID,CHAR *VID,LONG order,FLOAT *value,CHAR *TemplateFileName=NULL); LONG _stdcall Recog1C1_Fast( LONG OID,CHAR *VID,LONG order,FLOAT *value,CHAR *TemplateFileName=NULL);/VID是指当前检测到的人脸和模板库中的哪一个ID的脸做验证。/order是人脸检测中输出的编号,order=0 order=0 orderm_hWnd,0);Recog1CN(OID1,0,1,rout);CString lsx;lsx.Format(OID:%d xsd:%0.4f id:%s n,OID1,rout0.value,rout0.Template_ID );TRACE(lsx); FaceLocate_FreeMemory(OID1);/回收人脸检测内存return 1;UINT thr2(LPVOID) DLL_OUT_FACE_STRUCT ofs32; DLL_1CN_RECOG_OUT_STRUCT rout;OID2=CreateOneThreadObject(1,D:MWORK);while(true) Sleep(10);int ret=FaceLocate( OID2, /第一个函数返回的人脸识别实例对象IDd:111.bmp, /图像文件名,JPG,BMP 1, /用户要求的最大人脸输出数 50, /人脸置信度阀值,高于这个阀值才会被输出 ofs); /人脸输出结构数组 /FlagFace(OID2,(LONG)this-m_hWnd,0);Recog1CN(OID2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机车兼职活动方案
- 智能环保参赛活动方案
- 未央公司庆典策划方案
- 普法下基层活动策划方案
- 朗诵视频赈灾活动方案
- 暑假航模活动方案
- 春节音乐领域活动方案
- 暑假高温福利活动方案
- 本月良心活动方案
- 服务群众接待日活动方案
- 六年级数学下听评课记录
- 原材料管理制度文件
- 2025新人教版道德与法治一年级下册《第三单元 幸福一家人》大单元整体教学设计2022课标
- 手术室人员出入管理制度
- 2025年贵州省罗甸县事业单位人才引进166人历年高频重点提升(共500题)附带答案详解
- 《如何设定目标》课件
- 房地产业智慧物业管理系统实施方案
- T∕HGJ 12402-2021 石油化工装置火灾紧急隔离控制阀设计标准
- 办公用纸项目建设实施方案
- 2024版《53天天练单元归类复习》3年级语文下册(统编RJ)附参考答案
- 辣椒购销合同范本
评论
0/150
提交评论