LV人脸服务


安装部署说明

<h1>人脸服务安装部署</h1> <p>该部署文档基于基础docker容器服务环境,本文档不涉及容器环境的安装流程; 其他容器平台(如K8S)的安装部署,后续补充;</p> <h2>1.所需服务模块</h2> <p>&lt;b&gt;当前罗列为开发测试阶段对接模块,项目上如果有特殊需要,需要进行具体的测试&lt;/b&gt;</p> <table> <thead> <tr> <th>服务</th> <th>版本</th> <th>镜像包</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>ElesticSearch</td> <td>8.7.0</td> <td>10.0.104.10/dayang/elasticsearch:patch_8.7.0</td> <td>支持其他版本,最好8.x之后的版本</td> </tr> <tr> <td>Redis</td> <td>5.x\6.x</td> <td>10.0.104.10/dayang/redis:20210126</td> <td>服务内部集成了redis服务,也可以使用项目上其他的redis</td> </tr> <tr> <td>dyfaceid</td> <td>20240903</td> <td>10.0.104.4/dayang/dy_faceid:20240903</td> <td>人脸向量提取服务,研究院更新维护</td> </tr> <tr> <td>lvfaceservice</td> <td>0.7.0</td> <td>10.0.104.4/lv/lv-face-service:0.7.0_20241018</td> <td>人脸服务-随时更新</td> </tr> </tbody> </table> <h3>1.1 ES部署</h3> <h4>1.1.1单机部署</h4> <pre><code>1.创建专有网络 docker network create lvesnet 2.创建数据持久化目录(重要:可以尝试SSD) //数据目录(根目录不是必须为/mnt) mkdir /mnt/es-data chown -R dayang:dayang /mnt/es-data //日志目录(根目录不是必须为/mnt) mkdir /mnt/es-log chown -R dayang:dayang /mnt/es-log 3.运行服务 docker run -itd --name lv-es --privileged --net lvesnet -e &amp;quot;ES_JAVA_OPTS=-Xms512m -Xmx512m&amp;quot; -v /mnt/es-data:/usr/share/elasticsearch/data -v /mnt/es-logs:/usr/share/elasticsearch/logs -p 9200:9200 -p 9300:9300 -e &amp;quot;discovery.type=single-node&amp;quot; -e &amp;quot;xpack.security.enabled=false&amp;quot; 10.0.104.10/dayang/elasticsearch:patch_8.7.0 4.验证服务 在浏览器中访问: http://ip:9200 ; 能够正常返回服务信息(如版本号)即可</code></pre> <h4>1.1.2集群部署(待补充)</h4> <h3>1.2 Redis部署</h3> <h4>1.2.1 使用服务自带服务(建议)</h4> <pre><code>无需安装</code></pre> <h4>1.2.1 使用外设服务</h4> <pre><code>待补充</code></pre> <h3>1.3 dyfaceid服务部署</h3> <h4>1.3.1 单点部署</h4> <pre><code>1. 准备CUDA环境 * cuda版本&amp;gt;=12.1,对主机操作系统没有特别要求,建议使用较新版本的主机操作系统 * 如RTX 6000显卡, GPU显存占用约3.0GB 2. 单点部署: * GPU环境: docker run -d --gpus all  --name dy_faceid  --restart unless-stopped -p 8080:8080 -e Face_DownloadPath=/data_face/download -e Face_RltPath=/data_face/rlt -e WORKER_TASK_CONCURRENCY=1 10.0.104.4/dayang/dy_faceid:20240903 * 非GPU环境(去掉—gpus相关选项): docker run -d  --name dy_faceid  --restart unless-stopped -p 8080:8080 -e Face_DownloadPath=/data_face/download -e Face_RltPath=/data_face/rlt -e WORKER_TASK_CONCURRENCY=1 10.0.104.4/dayang/dy_faceid:20240903 3. 注意事项 * http下载和结果json文件路径: 默认使用容器内部的/data_face/download目录作为http文件的下载路径,使用/data_face/rlt作为结果json文件保存路径,可以通过环境变量修改。如果多机部署,需要进行路径映射,设置上面/data_face路径为共享路径 * WORKER_TASK_CONCURRENCY环境变量控制执行asr worker的并发数量,显存占用与并发数量成正比。 * --gpus all: 设置使用全部gpu;要制定使用某个或某些gpu,参考下面例子: --gpus &amp;#039;&amp;quot;device=0&amp;quot;&amp;#039; --gpus &amp;#039;&amp;quot;device=1&amp;quot;&amp;#039; --gpus &amp;#039;&amp;quot;device=1,2&amp;quot;&amp;#039; --gpus all 细节参考: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration   * 其他: 镜像中的os版本比较新(Ubuntu 22),如果主机OS比较老(如主机系统是Ubuntu 16),创建容器时可能报创建线程相关错误,此时在docker run中加上下面选项: --security-opt seccomp=unconfined</code></pre> <h4>1.3.2 多节点部署</h4> <pre><code>1. 多节点部署时,需要共享存储保存结果文件 2. 并且需要有一个节点中的redis作为共享redis,或者使用外部共享redis: 3. 假设主机中的共享存储为/host/face_data 4. 主节点创建: docker run -d --gpus all  --name dy_faceid_01  --restart unless-stopped -p 8080:8080 -p 6379:6379 -v /host/face_data/:/data_face/  -e Face_DownloadPath=/data_face/download -e Face_RltPath=/data_face/rlt -e WORKER_TASK_CONCURRENCY=1 10.0.104.4/dayang/dy_faceid:20240903 注意: *     增加了redis端口映射,容器内部redis端口固定是6379,前面的主机映射端口可以是其他值。 *     增加了/data_face路径映射,保存结果文件 5. 其他节点创建,假设主节点ip为 ip_01: docker run -d --gpus all  --name dy_faceid_02 --restart unless-stopped -p 8080:8080 -v /host/face_data/:/data_face/ -e Face_DownloadPath=/data_face/download -e Face_RltPath=/data_face/rlt -e WORKER_TASK_CONCURRENCY=1 -e  REDIS_HOST= ip_01 -e  REDIS_PORT=6379 -e  REDIS_PSD=dyprog_sim -e START_REDIS=false 10.0.104.4/dayang/dy_faceid:20240903 注意: *     增加了/data_face路径映射,保存结果文件 *     增加了redis相关环境变量,使用dy_faceid_01节点中的redis。 * -e START_REDIS=false: 设置其他节点不启动redis</code></pre> <h3>1.4 lvfaceservice服务部署</h3> <pre><code>1. 服务部署 docker run -itd --name lvface -p 20060:20060 -v /mnt/lvface/config:/LVFaceService/config 10.0.104.10/lv/lv-face-service:0.7.0_20241018 2. 参数说明 { //服务对外发布结果地址 //可以是IP:服务自动冰洁该IP和端口对外发布 //可以是URL: 代表发布结果的跟url &amp;quot;serviceAddr&amp;quot;: &amp;quot;127.0.0.1&amp;quot;, //服务监听端口 &amp;quot;servicePort&amp;quot;: 20060, //人脸向量提取引擎 &amp;quot;faceIDServiceURL&amp;quot;: &amp;quot;http://10.0.131.58:8007&amp;quot;, //ES服务访问地址 &amp;quot;esURL&amp;quot;: &amp;quot;http://10.0.5.149:9200&amp;quot;, //redis服务访问地址 &amp;quot;redisURL&amp;quot;: &amp;quot;redis://localhost:6379/0&amp;quot;, //结果保存目录 &amp;quot;resultFileSavePath&amp;quot;: &amp;quot;D:\\Code\\DayangCode\\PythonProject\\LVFaceService\\results&amp;quot;, //测试参数:是否标记人脸,标记人脸会导致分析非常慢 &amp;quot;isMarkFace&amp;quot;: false, //测试参数:是否提取源视频帧 &amp;quot;isReExtractSRCFrame&amp;quot;: false, //测试参数:是否添加人脸向量提取任务 &amp;quot;isAddFaceIDTask&amp;quot;: true, //测试参数:是否使用引擎聚合结果 &amp;quot;isEngineAggregate&amp;quot;: false, //测试参数:标记人脸的原视频抽真图片保存目录 &amp;quot;markFaceSrcImagePath&amp;quot;: &amp;quot;D:\\Code\\DayangCode\\test\\FaceVctorTestData\\src&amp;quot;, //测试参数:标记人脸后图片保存目录 &amp;quot;markFaceTarImagePath&amp;quot;: &amp;quot;D:\\Code\\DayangCode\\test\\FaceVctorTestData\\tar&amp;quot;, //聚合相似度:人脸聚合阶段默认聚合相似度(可接口指定,不指定使用该值) &amp;quot;aggregateSimi&amp;quot;: 0.71, //二次聚合相似度,经过第一次聚合后再一次聚合的最小相似度 &amp;quot;secondTimesAggregateSimi&amp;quot;: 0.71, //人脸识别相似度:人脸识别阶段默认聚合相似度(可接口指定,不指定使用该值) &amp;quot;recognitionSimi&amp;quot;: 0.71, //人脸搜资源及翻库相似度:人脸搜视频和翻库阶段默认聚合相似度(可接口指定,不指定使用该值) &amp;quot;searchResourceSimi&amp;quot;: 0.71, //默认人脸分析间隔:单位ms &amp;quot;analyzeIntervalMs&amp;quot;: 1000, //默认聚合最大时间间隔:单位ms &amp;quot;mergeMaxIntervalMs&amp;quot;: 1000, //人脸重叠判断阈值 &amp;quot;nms_threshold&amp;quot;: 0.4, //人脸过滤规则:可按照不同画幅配置不同规则 &amp;quot;faceFilters&amp;quot;: [ { //最大画幅 &amp;quot;maxSize&amp;quot;: 720, //最小画幅 &amp;quot;minSize&amp;quot;: 0, //过滤规则:[人脸尺寸,人脸角度] //如:[21,0]:代表人脸长边小于21且角度大于0度的,就会被过滤掉;[45,70]:代表人脸长边小于45像素且人脸角度大于70的,就会被过滤掉 &amp;quot;condition&amp;quot;: [[21, 0], [45, 70], [9999, 80]], //参与人脸融合的人脸过滤条件 //如:[40,10]:代表人脸短边大于40,且人脸角度小于10的人脸将参与融合;[9999,30]:代表人脸短边小于9999且角度小于30的,将参与融合 &amp;quot;mixCondition&amp;quot;: [[40,10],[9999,30]] }, { &amp;quot;maxSize&amp;quot;: 1280, &amp;quot;minSize&amp;quot;: 720, &amp;quot;condition&amp;quot;: [[21, 0], [45, 70], [9999, 80]], &amp;quot;mixCondition&amp;quot;: [[70,10],[9999,30]] }, { &amp;quot;maxSize&amp;quot;: 1920, &amp;quot;minSize&amp;quot;: 1280, &amp;quot;condition&amp;quot;: [[21, 0], [45, 70], [9999, 80]], &amp;quot;mixCondition&amp;quot;: [[100,10],[9999,30]] }, { &amp;quot;maxSize&amp;quot;: 999999, &amp;quot;minSize&amp;quot;: 1920, &amp;quot;condition&amp;quot;: [[21, 0], [45, 70], [9999, 80]], &amp;quot;mixCondition&amp;quot;: [[100,10],[9999,30]] } ], //系统参数(不能修改) &amp;quot;personDBESIndexSetting&amp;quot;: { ## }, //系统参数(不能修改) &amp;quot;personESIndexSetting&amp;quot;: { ## }, //系统参数(不能修改) &amp;quot;personFaceImageEsIndexSetting&amp;quot;: { ## }, //系统参数(不能修改) &amp;quot;searchDBESIndexSetting&amp;quot;: { ## }, //系统参数(不能修改) &amp;quot;resourceFaceESIndexSetting&amp;quot;: { ## } } 3. 服务启动验证 在游览其中输入服务地址:http://IP:Port/LVFaceService/docs 3. 可视化测试说明</code></pre> <h5>启动环境变量</h5> <table> <thead> <tr> <th>变量名</th> <th>对应配置名</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>SERVER_ADDR</td> <td>serviceAddr</td> <td>str</td> <td>服务对外发布结果地址;可以是IP:服务自动冰洁该IP和端口对外发布;可以是URL: 代表发布结果的跟url</td> </tr> <tr> <td>SERVER_PORT</td> <td>servicePort</td> <td>int</td> <td>服务监听端口</td> </tr> <tr> <td>REDIS_URL</td> <td>redisURL</td> <td>str</td> <td>redis服务访问地址</td> </tr> <tr> <td>ES_URLS</td> <td>esURL</td> <td>str</td> <td>多个用英文逗号隔开</td> </tr> <tr> <td>FACE_ID_URL</td> <td>faceIDServiceURL</td> <td>str</td> <td>人脸向量提取引擎服务地址</td> </tr> </tbody> </table>

页面列表

ITEM_HTML