添加人脸分析任务
<p>[TOC]</p>
<h1>简要描述</h1>
<ul>
<li>通过该接口创建人物分析任务</li>
</ul>
<h1>请求URL</h1>
<ul>
<li><code>http://IP:PORT/LVFaceService/task/v1/face_analyze</code></li>
</ul>
<h1>请求方式</h1>
<ul>
<li>post</li>
</ul>
<h1>参数</h1>
<h2>请求参数</h2>
<h3>Body 参数</h3>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">task_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>任务ID</td>
<td>调用方要保证taskid的唯一性,可以使用uuid,英文、数字、下划线(_)、中划线(-)组成,不能包含中文及其他特殊字符</td>
</tr>
<tr>
<td style="text-align: left;">file_path</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>分析文件</td>
<td>当前只支持文件url,可以传递图片或视频</td>
</tr>
<tr>
<td style="text-align: left;">resource_id</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>资源ID</td>
<td>待分析文件(file_path)对应的业务资源ID,当is_use_search_db为true时,必须填写,否则可以不填</td>
</tr>
<tr>
<td style="text-align: left;">sync</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">bool</td>
<td>是否同步返回</td>
<td>只有图片资源分析时有效;图片分析支持同步返回结果,需要应用层等待分析结果</td>
</tr>
<tr>
<td style="text-align: left;">person_db_ids</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string array</td>
<td>人物库ID列表</td>
<td>用于人脸识别,当前值支持一个,如果传递多个,使用第一个</td>
</tr>
<tr>
<td style="text-align: left;">search_db_id</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>搜索库</td>
<td>如果分析的资源需要在后续进行人脸检索或人脸翻库,需要指定这个ID,否则不需要;搜索库会自动在引擎端创建</td>
</tr>
<tr>
<td style="text-align: left;">recognite_min_simi</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">float</td>
<td>人脸识别最小相似度</td>
<td>默认0.71,分析人脸与人物库中人物的最小相似度</td>
</tr>
<tr>
<td style="text-align: left;">aggregate_min_simi</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">float</td>
<td>人物聚合相似度</td>
<td>默认0.71,用于视频文件人脸分析阶段的聚合参考最小相似度,大于该值得人脸会被聚合到一起</td>
</tr>
<tr>
<td style="text-align: left;">analyze_interval_ms</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">integer</td>
<td>视频分析间隔</td>
<td>默认1000,单位ms;指定视频文件抽帧分析间隔</td>
</tr>
<tr>
<td style="text-align: left;">merge_max_interval_ms</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">integer</td>
<td>视频人脸聚合最大时间间隔</td>
<td>默认1000,单位ms;指定人脸聚合阶段人脸时间段合并的最大间隔,超出这个间隔,认为是不同的片段</td>
</tr>
<tr>
<td style="text-align: left;">recog_model</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>人脸向量提取模型</td>
<td>默认arc</td>
<td>--</td>
</tr>
<tr>
<td style="text-align: left;">is_use_search_db</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">bool</td>
<td>是否使用搜索库</td>
<td>如果为true,分析的人脸内容将录入search_db_id指定的搜索库中,参与后续的检索或翻库;否则,分析数据不会保留</td>
</tr>
<tr>
<td style="text-align: left;">is_need_add_face_id_task</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">bool</td>
<td>测试参数:是否提交FaceID引擎人物</td>
<td>当测试人员不需要从新分析素材,只需要测试分析聚合情况时,可以填写该字段为false,如果为false,就不会再次提交分析人脸向量的任务,会获取已经分析完成任务的结果作为本次任务的聚合输入</td>
</tr>
<tr>
<td style="text-align: left;">face_filter_condition</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">object</td>
<td>测试参数:该参数对应配置文件中的faceFilters参数;</td>
<td>如果配置该参数,优先使用这个参数作为人脸过滤条件</td>
</tr>
<tr>
<td style="text-align: left;">is_mark_face</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">bool</td>
<td>测试参数:是否标记人脸</td>
<td>如果填写,优先使用该参数,如果不填写,使用配置文件中的isMarkFace参数;作用:如果该参数为true,将进行抽帧处理,在人脸汇聚结束后标记人脸结果,用于结果查看</td>
</tr>
<tr>
<td style="text-align: left;">mark_file</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>测试参数:标注文件</td>
<td>标注文件访问url,标注文件由标注工具生成</td>
</tr>
<tr>
<td style="text-align: left;">param</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">object</td>
<td>扩展参数</td>
<td>具体参见TaskParam说明</td>
</tr>
</tbody>
</table>
<h4>TaskParam</h4>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">test_resource_index</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">integer</td>
<td>素材索引</td>
<td>如果该参数不是空,说明该任务为造数据任务,任务中资源ID将与该参数结合形成新的资源ID,并将对应的人脸结果与新的资源ID关联录入到库中</td>
</tr>
<tr>
<td style="text-align: left;">test_max_face_count</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">integer</td>
<td>最大录入人脸数量</td>
<td>默认500万,最多造多少人脸数据</td>
</tr>
</tbody>
</table>
<h3>请求样例</h3>
<pre><code> post http://IP:PORT/LVFaceService/task/v1/face_analyze
{
&quot;task_id&quot;: &quot;task001&quot;,
&quot;file_path&quot;: &quot;http://114.255.110.195:8187/LVCallbackServer/00_FaceTest/LJH.mp4&quot;,
&quot;resource_id&quot;: &quot;resource001&quot;,
&quot;person_db_ids&quot;: [
&quot;PersonDB001&quot;
],
&quot;search_db_id&quot;: &quot;SearchDB001&quot;,
&quot;is_use_search_db&quot;: true
}</code></pre>
<pre><code># 添加一条任务,不进行faceID任务添加
post http://IP:PORT/LVFaceService/task/v1/face_analyze
{
&quot;task_id&quot;: &quot;task001&quot;,
&quot;file_path&quot;: &quot;http://114.255.110.195:8187/LVCallbackServer/00_FaceTest/LJH.mp4&quot;,
&quot;resource_id&quot;: &quot;resource001&quot;,
&quot;person_db_ids&quot;: [
&quot;PersonDB001&quot;
],
&quot;search_db_id&quot;: &quot;SearchDB001&quot;,
&quot;is_use_search_db&quot;: true,
&quot;is_need_add_face_id_task&quot;: false
}</code></pre>
<pre><code># 添加一条任务,不进行faceID任务添加, 并按照过滤条件进行人脸过滤
post http://IP:PORT/LVFaceService/task/v1/face_analyze
{
&quot;task_id&quot;: &quot;task001&quot;,
&quot;file_path&quot;: &quot;http://114.255.110.195:8187/LVCallbackServer/00_FaceTest/LJH.mp4&quot;,
&quot;resource_id&quot;: &quot;resource001&quot;,
&quot;person_db_ids&quot;: [
&quot;PersonDB001&quot;
],
&quot;search_db_id&quot;: &quot;SearchDB001&quot;,
&quot;is_use_search_db&quot;: true,
&quot;is_need_add_face_id_task&quot;: false,
&quot;face_filter_condition&quot;: [
{
&quot;maxSize&quot;: 720,
&quot;minSize&quot;: 0,
&quot;condition&quot;: [[21, 0],[45,70],[9999,80]],
&quot;mixCondition&quot;: [[40,10],[9999,30]]
},
{
&quot;maxSize&quot;: 1280,
&quot;minSize&quot;: 720,
&quot;condition&quot;: [[21, 0],[45,70],[9999,80]],
&quot;mixCondition&quot;: [[70,10],[9999,30]]
},
{
&quot;maxSize&quot;: 1920,
&quot;minSize&quot;: 1280,
&quot;condition&quot;: [[40, 0],[60,70],[9999,75]],
&quot;mixCondition&quot;: [[100,10],[9999,30]]
},
{
&quot;maxSize&quot;: 999999,
&quot;minSize&quot;: 1920,
&quot;condition&quot;: [[40, 0],[60,70],[9999,75]],
&quot;mixCondition&quot;: [[100,10],[9999,30]]
}
]
}</code></pre>
<pre><code>#造一千万人脸数据:
post http://IP:PORT/LVFaceService/task/v1/face_analyze
{
&quot;task_id&quot;: &quot;task001&quot;,
&quot;file_path&quot;: &quot;http://114.255.110.195:8187/LVCallbackServer/00_FaceTest/LJH.mp4&quot;,
&quot;resource_id&quot;: &quot;resource001&quot;,
&quot;person_db_ids&quot;: [
&quot;PersonDB001&quot;
],
&quot;search_db_id&quot;: &quot;SearchDB001&quot;,
&quot;is_use_search_db&quot;: true,
&quot;param&quot;:{
&quot;test_resource_index&quot;:0,
&quot;test_max_face_count&quot;:10000000
}
}</code></pre>
<h5>返回体示例</h5>
<pre><code>{
&quot;task_id&quot;: &quot;task001&quot;
}
</code></pre>
<h5>返回体说明</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">error</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">object</td>
<td>错误信息</td>
<td>如果返回该字段,说明服务报错;接口参见 ErrorInfo</td>
</tr>
<tr>
<td style="text-align: left;">task_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>任务ID</td>
<td>-</td>
</tr>
</tbody>
</table>
<h5>ErrorInfo</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">error_code</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>错误码</td>
<td>--</td>
</tr>
<tr>
<td style="text-align: left;">error_desc</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>错误描述</td>
</tr>
</tbody>
</table>
<h5>备注</h5>
<ul>
<li>更多返回错误代码请看首页的错误代码描述</li>
</ul>
<p>[TOC]</p>
<h1>简要描述</h1>
<ul>
<li>通过该接口创建人物</li>
</ul>
<h1>请求URL</h1>
<ul>
<li><code>http://IP:PORT/LVFaceService/person</code></li>
</ul>
<h1>请求方式</h1>
<ul>
<li>put </li>
</ul>
<h1>参数</h1>
<h2>请求参数</h2>
<h3>Body 参数</h3>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">db_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>库ID</td>
<td>英文、数字、下划线(_)、中划线(-)组成,不能包含中文及其他特殊字符</td>
</tr>
<tr>
<td style="text-align: left;">person_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>人物ID</td>
<td>--</td>
</tr>
<tr>
<td style="text-align: left;">person_name</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>人物姓名</td>
<td>--</td>
</tr>
<tr>
<td style="text-align: left;">person_des</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>人物描述</td>
<td>--</td>
</tr>
<tr>
<td style="text-align: left;">data</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">object</td>
<td>用户数据</td>
<td>用户自定义数据</td>
</tr>
</tbody>
</table>
<h3>请求样例</h3>
<pre><code> put http://IP:PORT/LVFaceService/person
{
&quot;db_id&quot;: &quot;test001&quot;,
&quot;person_id&quot;: &quot;person001&quot;,
&quot;person_name&quot;: &quot;测试人物001&quot;,
&quot;data&quot;: {
&quot;testData&quot;:&quot;&quot;
}
}</code></pre>
<h5>返回体示例</h5>
<pre><code>{
&quot;db_id&quot;: &quot;test001&quot;,
&quot;person_id&quot;: &quot;person001&quot;,
&quot;person_name&quot;: &quot;测试人物001&quot;,
&quot;data&quot;: {
&quot;testData&quot;: &quot;&quot;
},
&quot;create_time&quot;: &quot;2024-10-21 13:38:27&quot;
}</code></pre>
<h5>返回体说明</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">error</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">object</td>
<td>错误信息</td>
<td>如果返回该字段,说明服务报错;接口参见 ErrorInfo</td>
</tr>
<tr>
<td style="text-align: left;">db_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>库ID</td>
<td>-</td>
</tr>
<tr>
<td style="text-align: left;">person_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>人物名称</td>
<td>--</td>
</tr>
<tr>
<td style="text-align: left;">person_name</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>人物姓名描述</td>
<td>--</td>
</tr>
<tr>
<td style="text-align: left;">data</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">object</td>
<td>用户数据</td>
<td>用户自定义数据结构</td>
</tr>
</tbody>
</table>
<h5>ErrorInfo</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">error_code</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>错误码</td>
<td>--</td>
</tr>
<tr>
<td style="text-align: left;">error_desc</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>错误描述</td>
</tr>
</tbody>
</table>
<h5>备注</h5>
<ul>
<li>更多返回错误代码请看首页的错误代码描述</li>
</ul>