聚美智数


人脸搜索

<p>[TOC]</p> <h2>功能介绍</h2> <p>人脸搜索主要用在人脸通用场景,搜索相似人脸,主要分两种:</p> <ul> <li>人脸搜索1:N:在指定人脸集合中,找到最相似的人脸;</li> <li>人脸搜索M:N:待识别图片中含有多个人脸时,在指定人脸集合中,找到这多个人脸分别最相似的人脸</li> </ul> <p>要完成1:N或者M:N识别,首先需要构建一个人脸库,用于存放所有人脸特征,相关接口如下:</p> <ul> <li>添加人脸:向人脸库中添加人脸</li> <li>删除人脸:删除指定用户的某张人脸</li> <li>获取用户人脸列表:获取某个用户组中的全部人脸列表</li> <li>获取用户列表:查询指定用户组中的用户列表</li> <li>删除用户:删除指定用户</li> </ul> <h2>接口调用说明</h2> <h3>请求方式</h3> <p>如接口没有单独说明,均为:<strong>POST</strong></p> <h3>请求格式</h3> <p>如接口没有单独说明,均为:<strong>application/form-data</strong></p> <h3>请求参数</h3> <p>请求参数包括公共参数和业务参数(业务参数见具体接口说明) 调用接口时,需要把<strong>公共参数</strong>和<strong>业务参数</strong>一并放在<strong>请求参数</strong>中提交</p> <h4>公共请求参数</h4> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>appId</td> <td>String</td> <td>是</td> <td>服务商分配的唯一标识</td> </tr> <tr> <td>timestamp</td> <td>Long</td> <td>是</td> <td>当前时间戳(毫秒)</td> </tr> <tr> <td>sign</td> <td>String</td> <td>是</td> <td>签名,详见签名算法说明</td> </tr> </tbody> </table> <h4>签名算法说明</h4> <pre><code>sign = sha256(appId + appSecret + timestamp)</code></pre> <p>用服务商分配的 <strong>appId</strong>、服务商分配的 <strong>appSecret</strong>,当前时间戳(毫秒) <strong>timestamp</strong>,按上述顺序拼接成字符串,再进行 <strong>sha256</strong> 哈希得到。如下:</p> <pre><code class="language-java">String appId = &amp;quot;xyzxy2121zxyz&amp;quot;; String timestamp = &amp;quot;1555378976238&amp;quot;; String appSecret = &amp;quot;efcefcef1121cefcefc1212121&amp;quot;; String str = appId + appSecret + timestamp; String sign = sha256(str);</code></pre> <h3>返回说明</h3> <h4>公共返回字段说明</h4> <p>所有接口均返回以下公共字段:</p> <table> <thead> <tr> <th>字段名</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>code</td> <td>返回码,详见:公共code返回码说明</td> </tr> <tr> <td>msg</td> <td>code对应的描述</td> </tr> <tr> <td>charge</td> <td>计费标志</td> </tr> <tr> <td>taskNo</td> <td>本次请求号</td> </tr> <tr> <td>data</td> <td>返回具体结果,object类型,详见data返回字段描述</td> </tr> </tbody> </table> <h4>公共code返回码说明</h4> <p>所有接口公共返回码如下:</p> <table> <thead> <tr> <th>code</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>200</td> <td>成功</td> </tr> <tr> <td>201</td> <td>找不到该用户,或未找到匹配的用户,请确认人脸库中是否存在此用户</td> </tr> <tr> <td>202</td> <td>该用户已存在,请不要重复创建用户</td> </tr> <tr> <td>203</td> <td>该人脸不存在</td> </tr> <tr> <td>204</td> <td>该人脸已存在,请不要重复添加人脸</td> </tr> <tr> <td>205</td> <td>faceToken不存在</td> </tr> <tr> <td>206</td> <td>人脸库中用户下的人脸数目超过20个的限制</td> </tr> <tr> <td>207</td> <td>人脸尺寸过小,请保证人脸区域在64 X 64以上</td> </tr> <tr> <td>208</td> <td>请使用非卡通的人脸图像</td> </tr> <tr> <td>209</td> <td>人脸属性编辑处理该图像失败,请使用其他图片</td> </tr> <tr> <td>210</td> <td>图片尺寸过小,请使用清晰的图片</td> </tr> <tr> <td>211</td> <td>图片中没有人脸或无法解析人脸</td> </tr> <tr> <td>212</td> <td>人脸有被遮挡</td> </tr> <tr> <td>213</td> <td>人脸模糊</td> </tr> <tr> <td>214</td> <td>人脸图片添加失败</td> </tr> <tr> <td>215</td> <td>获取人脸图片失败</td> </tr> <tr> <td>400</td> <td>参数错误</td> </tr> <tr> <td>404</td> <td>接口地址不正确</td> </tr> <tr> <td>500</td> <td>系统维护,请稍候再试</td> </tr> <tr> <td>601</td> <td>接口未开通</td> </tr> <tr> <td>602</td> <td>账号停用</td> </tr> <tr> <td>604</td> <td>接口停用</td> </tr> <tr> <td>606</td> <td>调用超限,请稍候再试</td> </tr> <tr> <td>607</td> <td>ip不在白名单</td> </tr> <tr> <td>609</td> <td>请求过于频繁,请稍候再试</td> </tr> <tr> <td>610</td> <td>请求超时</td> </tr> <tr> <td>999</td> <td>其他,以实际返回为准</td> </tr> </tbody> </table> <h2>人脸搜索(1:N)</h2> <h3>接口描述</h3> <ul> <li>在指定人脸集合中,找到最相似的人脸</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/face/search</code></p> <h3>业务参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>file</td> <td>file</td> <td>否</td> <td>人脸图片文件</td> </tr> <tr> <td>base64</td> <td>String</td> <td>否</td> <td>人脸图片的Base64</td> </tr> <tr> <td>url</td> <td>String</td> <td>否</td> <td>人脸图片的url</td> </tr> <tr> <td>userId</td> <td>String</td> <td>否</td> <td>用户Id,当需要对特定用户进行比对时,指定user_id进行比对。即人脸认证功能</td> </tr> <tr> <td>qualityControl</td> <td>String</td> <td>否</td> <td>图片质量控制&lt;br&gt;NONE: 不进行控制&lt;br&gt;LOW:较低的质量要求&lt;br&gt;NORMAL: 一般的质量要求&lt;br&gt;HIGH: 较高的质量要求&lt;br&gt;默认 NONE&lt;br&gt;若图片质量不满足要求,则返回结果中会提示质量检测失败</td> </tr> <tr> <td>livenessControl</td> <td>String</td> <td>否</td> <td>活体检测控制&lt;br&gt;NONE: 不进行控制&lt;br&gt;LOW:较低的活体要求(高通过率 低攻击拒绝率)&lt;br&gt;NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率)&lt;br&gt;HIGH: 较高的活体要求(高攻击拒绝率 低通过率)&lt;br&gt;默认 NONE&lt;br&gt;若活体检测结果不满足要求,则返回结果中会提示活体检测失败</td> </tr> <tr> <td>faceSortType</td> <td>Integer</td> <td>否</td> <td>人脸检测排序类型&lt;br&gt;0:代表检测出的人脸按照人脸面积从大到小排列&lt;br&gt;1:代表检测出的人脸按照距离图片中心从近到远排列&lt;br&gt;默认为0</td> </tr> <tr> <td>maxUserNum</td> <td>Integer</td> <td>否</td> <td>查找后返回的用户数量。返回相似度最高的几个用户,默认为1,最多返回50个</td> </tr> <tr> <td>matchThreshold</td> <td>Integer</td> <td>否</td> <td>匹配阈值(设置阈值后,score低于此阈值的用户信息将不会返回) 最大100 最小0 默认0&lt;br&gt;此阈值设置得越高,检索速度将会越快,推荐使用阈值80</td> </tr> </tbody> </table> <ul> <li>base64、file、url,必须提供一个,优先级:base64 &gt; file &gt; url</li> <li>图片现支持PNG、JPG、JPEG、BMP,图片文件大小不超过2MB</li> </ul> <h3>成功返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 200,// 返回码,详见返回码说明 &amp;quot;taskNo&amp;quot;: &amp;quot;907635727140148539633037&amp;quot;,// 本次请求号 &amp;quot;charge&amp;quot;: true,//计费标准 &amp;quot;data&amp;quot;: { &amp;quot;face_token&amp;quot;: &amp;quot;2bcef82220e41cbe57feb612345&amp;quot;,//人脸标志 &amp;quot;user_list&amp;quot;: [//匹配的用户信息列表 { &amp;quot;score&amp;quot;: 99.999900817871,//用户的匹配得分,推荐阈值80分 &amp;quot;group_id&amp;quot;: &amp;quot;groupIdtest123&amp;quot;,//用户所属的group_id &amp;quot;user_id&amp;quot;: &amp;quot;userIdtest123&amp;quot;,//用户的user_id &amp;quot;user_info&amp;quot;: &amp;quot;&amp;quot;//注册用户时携带的user_info } ] } }</code></pre> <h3>失败返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;图片信息不能为空&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 400,// 返回码,详见返回码说明 &amp;quot;charge&amp;quot;: false//计费标准 }</code></pre> <h3>data返回字段说明</h3> <table> <thead> <tr> <th>字段名</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>face_token</td> <td>人脸标志</td> </tr> <tr> <td>user_list</td> <td>匹配的用户信息列表</td> </tr> <tr> <td>score</td> <td>用户的匹配得分,推荐阈值80分</td> </tr> <tr> <td>group_id</td> <td>用户所属的group_id</td> </tr> <tr> <td>user_id</td> <td>用户的user_id</td> </tr> <tr> <td>user_info</td> <td>注册用户时携带的user_info</td> </tr> </tbody> </table> <h2>人脸搜索(M:N)</h2> <h3>接口描述</h3> <ul> <li>待识别的图片中,存在多张人脸的情况下,支持在一个人脸库中,一次请求,同时返回图片中所有人脸的识别结果。</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/face/multi-search</code></p> <h3>业务参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>file</td> <td>file</td> <td>否</td> <td>人脸图片文件</td> </tr> <tr> <td>base64</td> <td>String</td> <td>否</td> <td>人脸图片的Base64</td> </tr> <tr> <td>url</td> <td>String</td> <td>否</td> <td>人脸图片的url</td> </tr> <tr> <td>maxFaceNum</td> <td>Integer</td> <td>否</td> <td>最多处理人脸的数目,默认值为1(仅检测图片中面积最大的那个人脸) 最大值10</td> </tr> <tr> <td>matchThreshold</td> <td>Integer</td> <td>否</td> <td>匹配阈值,设置阈值后,score低于此阈值的用户信息将不会返回&lt;br&gt;最大100,最小0,默认80&lt;br&gt;此阈值设置得越高,检索速度将会越快,推荐使用默认阈值80</td> </tr> <tr> <td>qualityControl</td> <td>String</td> <td>否</td> <td>图片质量控制&lt;br&gt;NONE: 不进行控制&lt;br&gt;LOW:较低的质量要求&lt;br&gt;NORMAL: 一般的质量要求&lt;br&gt;HIGH: 较高的质量要求&lt;br&gt;默认 NONE&lt;br&gt;若图片质量不满足要求,则返回结果中会提示质量检测失败</td> </tr> <tr> <td>livenessControl</td> <td>String</td> <td>否</td> <td>活体检测控制&lt;br&gt;NONE: 不进行控制&lt;br&gt;LOW:较低的活体要求(高通过率 低攻击拒绝率)&lt;br&gt;NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率)&lt;br&gt;HIGH: 较高的活体要求(高攻击拒绝率 低通过率)&lt;br&gt;默认 NONE&lt;br&gt;若活体检测结果不满足要求,则返回结果中会提示活体检测失败</td> </tr> <tr> <td>maxUserNum</td> <td>Integer</td> <td>否</td> <td>识别返回的最大用户数,默认为1,最大20个</td> </tr> </tbody> </table> <ul> <li>base64、file、url,必须提供一个,优先级:base64 &gt; file &gt; url</li> <li>图片文件大小不超过2MB</li> </ul> <h3>成功返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;, // 返回码对应描述 &amp;quot;code&amp;quot;: 200,// 返回码,详见返回码说明 &amp;quot;taskNo&amp;quot;: &amp;quot;525195723178392579953620&amp;quot;,// 本次请求号 &amp;quot;charge&amp;quot;: true,//计费标准 &amp;quot;data&amp;quot;: { &amp;quot;face_num&amp;quot;: 1,//图片中的人脸数量 &amp;quot;face_list&amp;quot;: [//人脸信息列表 { &amp;quot;face_token&amp;quot;: &amp;quot;2bcef82220e41cbe57feb652c69b4db8&amp;quot;,//人脸标志 &amp;quot;location&amp;quot;: { //人脸在图片中的位置 &amp;quot;top&amp;quot;: 95.57,//人脸区域离上边界的距离 &amp;quot;left&amp;quot;: 103.77,//人脸区域离左边界的距离 &amp;quot;rotation&amp;quot;: 7,//人脸框相对于竖直方向的顺时针旋转角 &amp;quot;width&amp;quot;: 83,//人脸区域的宽度 &amp;quot;height&amp;quot;: 83//人脸区域的高度 }, &amp;quot;user_list&amp;quot;: [//匹配的用户信息列表 { &amp;quot;score&amp;quot;: 99.99991607666,//用户的匹配得分,推荐阈值80分 &amp;quot;group_id&amp;quot;: &amp;quot;groupIdtest123&amp;quot;,//用户所属的group_id &amp;quot;user_id&amp;quot;: &amp;quot;userIdtest123&amp;quot;,//用户的user_id &amp;quot;user_info&amp;quot;: &amp;quot;&amp;quot;//注册用户时携带的user_info } ] } ] } }</code></pre> <h3>失败返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;图片信息不能为空&amp;quot;, // 返回码对应描述 &amp;quot;code&amp;quot;: 400,// 返回码,详见返回码说明 &amp;quot;charge&amp;quot;: false//计费标准 }</code></pre> <h3>data返回字段说明</h3> <table> <thead> <tr> <th>字段名</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>face_num</td> <td>图片中的人脸数量</td> </tr> <tr> <td>face_list</td> <td>人脸信息列表</td> </tr> <tr> <td>face_token</td> <td>人脸标志</td> </tr> <tr> <td>user_list</td> <td>匹配的用户信息列表</td> </tr> <tr> <td>score</td> <td>用户的匹配得分,推荐阈值80分</td> </tr> <tr> <td>group_id</td> <td>用户所属的group_id</td> </tr> <tr> <td>user_id</td> <td>用户的user_id</td> </tr> <tr> <td>user_info</td> <td>注册用户时携带的user_info</td> </tr> <tr> <td>location</td> <td>人脸在图片中的位置</td> </tr> <tr> <td>top</td> <td>人脸区域离上边界的距离</td> </tr> <tr> <td>left</td> <td>人脸区域离左边界的距离</td> </tr> <tr> <td>width</td> <td>人脸区域的宽度</td> </tr> <tr> <td>height</td> <td>人脸区域的高度</td> </tr> <tr> <td>rotation</td> <td>人脸框相对于竖直方向的顺时针旋转角,[-180,180]</td> </tr> </tbody> </table> <h2>添加人脸</h2> <h3>接口描述</h3> <ul> <li>向人脸库中添加人脸</li> <li>添加人脸后,生效时间一般为5s以内,之后便可以进行人脸搜索或认证操作。</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/face/add</code></p> <h3>业务参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>file</td> <td>file</td> <td>否</td> <td>人脸图片,文件类型</td> </tr> <tr> <td>base64</td> <td>String</td> <td>否</td> <td>人脸图片的Base64</td> </tr> <tr> <td>url</td> <td>String</td> <td>否</td> <td>人脸图片的url</td> </tr> <tr> <td>userId</td> <td>String</td> <td>是</td> <td>用户id,(由数字、字母、下划线组成),长度限制48B。</td> </tr> <tr> <td>userInfo</td> <td>String</td> <td>否</td> <td>用户资料,长度限制256B,默认空</td> </tr> <tr> <td>qualityControl</td> <td>String</td> <td>否</td> <td>图片质量控制&lt;br&gt;NONE: 不进行控制&lt;br&gt;LOW:较低的质量要求&lt;br&gt;NORMAL: 一般的质量要求&lt;br&gt;HIGH: 较高的质量要求&lt;br&gt;默认 NONE&lt;br&gt;若图片质量不满足要求,则返回结果中会提示质量检测失败</td> </tr> <tr> <td>livenessControl</td> <td>String</td> <td>否</td> <td>活体检测控制&lt;br&gt;NONE: 不进行控制&lt;br&gt;LOW:较低的活体要求(高通过率 低攻击拒绝率)&lt;br&gt;NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率)&lt;br&gt;HIGH: 较高的活体要求(高攻击拒绝率 低通过率)&lt;br&gt;默认 NONE&lt;br&gt;若活体检测结果不满足要求,则返回结果中会提示活体检测失败</td> </tr> <tr> <td>actionType</td> <td>String</td> <td>否</td> <td>操作方式&lt;br&gt;APPEND: 当user_id在库中已经存在时,对此user_id重复注册时,新注册的图片默认会追加到该user_id下&lt;br&gt;REPLACE : 当对此user_id重复注册时,则会用新图替换库中该user_id下所有图片&lt;br&gt;默认使用APPEND</td> </tr> </tbody> </table> <ul> <li>base64、file、url,必须提供一个,优先级:base64 &gt; file &gt; url</li> <li>图片文件大小不超过2MB</li> <li>组内每个uid下的人脸图片数目上限为20张</li> </ul> <h3>成功返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 200,// 返回码,详见返回码说明 &amp;quot;taskNo&amp;quot;: &amp;quot;686172601162294852169843&amp;quot;,// 本次请求号 &amp;quot;charge&amp;quot;: true,//计费标准 &amp;quot;data&amp;quot;: { &amp;quot;face_token&amp;quot;: &amp;quot;2bcef82220e41cbe57feb652c612345&amp;quot;,// 本次请求号 &amp;quot;location&amp;quot;: { &amp;quot;top&amp;quot;: 95.57,// 人脸区域离上边界的距离 &amp;quot;left&amp;quot;: 103.77,// 人脸区域离左边界的距离 &amp;quot;rotation&amp;quot;: 7,// 人脸框相对于竖直方向的顺时针旋转角 &amp;quot;width&amp;quot;: 83,// 人脸区域的宽度 &amp;quot;height&amp;quot;: 83// 人脸区域的高度 } } }</code></pre> <h3>失败返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;图片信息不能为空&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 400,// 返回码,详见返回码说明 &amp;quot;charge&amp;quot;: false //计费标准 }</code></pre> <h3>data返回字段说明</h3> <table> <thead> <tr> <th>字段名</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>face_token</td> <td>人脸标志</td> </tr> <tr> <td>location</td> <td>人脸在图片中的位置</td> </tr> <tr> <td>top</td> <td>人脸区域离上边界的距离</td> </tr> <tr> <td>left</td> <td>人脸区域离左边界的距离</td> </tr> <tr> <td>width</td> <td>人脸区域的宽度</td> </tr> <tr> <td>height</td> <td>人脸区域的高度</td> </tr> <tr> <td>rotation</td> <td>人脸框相对于竖直方向的顺时针旋转角,[-180,180]</td> </tr> </tbody> </table> <h2>获取用户人脸列表</h2> <h3>接口描述</h3> <ul> <li>用于获取一个用户的全部人脸列表。</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/face/list</code></p> <h3>请求参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>userId</td> <td>String</td> <td>是</td> <td>用户id,(由数字、字母、下划线组成),长度限制48B</td> </tr> </tbody> </table> <h3>成功返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 200,// 返回码,详见返回码说明 &amp;quot;taskNo&amp;quot;: &amp;quot;907635727140148539633037&amp;quot;,// 本次请求号 &amp;quot;charge&amp;quot;: false,//计费标准 &amp;quot;data&amp;quot;: { &amp;quot;face_list&amp;quot;: [ { &amp;quot;face_token&amp;quot;: &amp;quot;2bcef82220e41cbe57feb612345&amp;quot;,//人脸图片的唯一标识 &amp;quot;ctime&amp;quot;: &amp;quot;2018-01-01 00:00:00&amp;quot;//人脸创建时间 } ] } }</code></pre> <h3>失败返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;参数userId不能为空&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 400,// 返回码,详见返回码说明 &amp;quot;charge&amp;quot;: false//计费标准 }</code></pre> <h3>data返回字段说明</h3> <table> <thead> <tr> <th>字段名</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>face_list</td> <td>人脸列表</td> </tr> <tr> <td>ctime</td> <td>人脸创建时间</td> </tr> <tr> <td>face_token</td> <td>人脸图片的唯一标识</td> </tr> </tbody> </table> <h2>获取用户列表</h2> <h3>接口描述</h3> <ul> <li>用于查询用户列表。</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/face/user/list</code></p> <h3>请求参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>start</td> <td>Integer</td> <td>否</td> <td>默认值0,起始序号</td> </tr> <tr> <td>length</td> <td>Integer</td> <td>否</td> <td>返回数量,默认值100,最大值1000</td> </tr> </tbody> </table> <h3>成功返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 200,// 返回码,详见返回码说明 &amp;quot;taskNo&amp;quot;: &amp;quot;984185255132493644829345&amp;quot;,// 本次请求号 &amp;quot;charge&amp;quot;: false,//计费标准 &amp;quot;data&amp;quot;: { &amp;quot;user_id_list&amp;quot;: [ &amp;quot;userIdtest123&amp;quot; ] } }</code></pre> <h3>失败返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;参数length值不正确&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 400,// 返回码,详见返回码说明 &amp;quot;charge&amp;quot;: false//计费标准 }</code></pre> <h3>data返回字段说明</h3> <table> <thead> <tr> <th>字段名</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>user_id_list</td> <td>用户ID列表,数组元素为用户ID</td> </tr> </tbody> </table> <h2>删除人脸</h2> <h3>接口描述</h3> <ul> <li>删除用户的某一张人脸,如果该用户只有一张人脸图片,则同时删除用户。</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/face/delete</code></p> <h3>请求参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>logId</td> <td>String</td> <td>是</td> <td>请求标识码,随机数,唯一</td> </tr> <tr> <td>userId</td> <td>String</td> <td>是</td> <td>用户id(由数字、字母、下划线组成),长度限制48B</td> </tr> <tr> <td>faceToken</td> <td>String</td> <td>是</td> <td>需要删除的人脸图片token,(由数字、字母、下划线组成)长度限制64B</td> </tr> </tbody> </table> <h3>成功返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 200,// 返回码,详见返回码说明 &amp;quot;taskNo&amp;quot;: &amp;quot;525195723178392579912345&amp;quot;,// 本次请求号 &amp;quot;charge&amp;quot;: false//计费标准 }</code></pre> <h3>失败返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;参数logId不能为空&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 400,// 返回码,详见返回码说明 &amp;quot;charge&amp;quot;: false//计费标准 }</code></pre> <p>&lt;a name=&quot;删除用户&quot;&gt;&lt;/a&gt;</p> <h2>删除用户</h2> <h3>接口描述</h3> <ul> <li>用于将用户从某个组中删除 &gt; 删除用户将参数该用户下所有人脸,请谨慎使用</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/face/user/delete</code></p> <h3>请求参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>userId</td> <td>String</td> <td>是</td> <td>用户id(由数字、字母、下划线组成),长度限制48B</td> </tr> </tbody> </table> <h3>成功返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 200,// 返回码,详见返回码说明 &amp;quot;taskNo&amp;quot;: &amp;quot;525195723178392579912345&amp;quot;,// 本次请求号 &amp;quot;charge&amp;quot;: false//计费标准 }</code></pre> <h3>失败返回样例</h3> <pre><code class="language-json">{ &amp;quot;msg&amp;quot;: &amp;quot;参数userId不能为空&amp;quot;,// 返回码对应描述 &amp;quot;code&amp;quot;: 400,// 返回码,详见返回码说明 &amp;quot;charge&amp;quot;: false//计费标准 }</code></pre> <h2>附录</h2> <h3>质量控制参数说明</h3> <p>不同的控制度下所对应的质量控制阈值,如果检测出来的质量信息某一项不符合控制阈值的要求,则会返回错误信息。</p> <p>遮挡情况的阈值</p> <table> <thead> <tr> <th>控制度</th> <th>left_eye</th> <th>right_eye</th> <th>nose</th> <th>mouth</th> <th>left_cheek</th> <th>right_cheek</th> <th>chin_contour</th> </tr> </thead> <tbody> <tr> <td>LOW</td> <td>0.8</td> <td>0.8</td> <td>0.8</td> <td>0.8</td> <td>0.8</td> <td>0.8</td> <td>0.8</td> </tr> <tr> <td>NORMAL</td> <td>0.6</td> <td>0.6</td> <td>0.6</td> <td>0.6</td> <td>0.6</td> <td>0.6</td> <td>0.6</td> </tr> <tr> <td>HIGH</td> <td>0.2</td> <td>0.2</td> <td>0.2</td> <td>0.2</td> <td>0.2</td> <td>0.2</td> <td>0.2</td> </tr> </tbody> </table> <p>模糊度、完整度的阈值</p> <table> <thead> <tr> <th>控制度</th> <th>illumination</th> <th>blurdegree</th> <th>completeness</th> </tr> </thead> <tbody> <tr> <td>LOW</td> <td>20</td> <td>0.8</td> <td>0</td> </tr> <tr> <td>NORMAL</td> <td>40</td> <td>0.6</td> <td>0</td> </tr> <tr> <td>HIGH</td> <td>100</td> <td>0.2</td> <td>1</td> </tr> </tbody> </table> <h3>活体控制参数说明</h3> <p>不同的控制度下所对应的活体控制阈值不同,如果检测出来的活体分数小于控制阈值,则会返回错误信息。</p> <table> <thead> <tr> <th>控制度</th> <th>阈值</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>LOW</td> <td>0.05</td> <td>活体误拒率:万分之一;拒绝率:97.75%</td> </tr> <tr> <td>NORMAL</td> <td>0.3</td> <td>活体误拒率:千分之一;拒绝率:98.82%</td> </tr> <tr> <td>HIGH</td> <td>0.9</td> <td>活体误拒率:百分之一;拒绝率:99.77%</td> </tr> </tbody> </table> <p>1、误拒率: 把真人识别为假人的概率. 阈值越高,安全性越高, 要求也就越高, 对应的误识率就越高 2、通过率=1-误拒率</p> <p>关于以上数值的概念介绍: 拒绝率(TRR):如99%,代表100次作弊假体攻击,会有99次被拒绝。 误拒率(FRR):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。 通过率(TAR):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。 阈值(Threshold):高于此数值,则可判断为活体。</p>

页面列表

ITEM_HTML