# WordDoc 人脸部门嵌入式软件交接文档, 主要涵盖野生动物管理系统、华为软件定义摄像头、车载客流密度分析、车站管理系统(研发中). ## 1.项目涵盖的知识点 项目研发主要涉及不同的深度学习开发框架, 这个因不同硬件而异, 算法部署流程也有区别, 项目多数采用**docker容器+docker-compose**的部署方式, 请参考一下资料进行研究。 ### 1.1 野生动物管理系统 项目详细请参考gsd目录, 部署硬件大多数采用**工控机(x86) + 寒武纪mlu220(加速卡)**的形式, 部署框架采用[CNStream](https://github.com/Cambricon/CNStream), 后期因为**mlu220**性能低下等原因确定更换为**英伟达Jetson系列的TX-2 NX**, 算法部署框架则为[Deepstream](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvvideoconvert.html). **应用层**: > 应用层, 寒武纪、Jetson系列差别不大 工具库 | 资料 ---|--- httplib | http工具库 rapidjson | 处理json数据的工具库 [zltoolkit](https://gitee.com/xia-chu/ZLToolKit.git) | 工具库, 包含定时器、线程池管理等. **寒武纪算法层**: 资料 | 作用 | 链接 ---|---|---| cnstream | 算法的部署框架, 真正落地还需自行修改和增加模块 | https://github.com/Cambricon/CNStream 寒武纪文档中心 | 包含[mlu220的驱动安装](https://www.cambricon.com/docs/sdk_1.7.0/driver_4.20.16/user_guide_4.20.16/index.html) | https://developer.cambricon.com/index/document/index/classid/3.html 寒武纪开发者社区 | 咨询问题, 但更推荐通过销售找研发 | https://developer.cambricon.com/ live555(流媒体服务器框架) | mlu220中算法展示流的部署框架 | http://www.live555.com/ | **Jetson算法层** 资料 | 作用 | 链接 ---|---|---| deepstream | 算法的部署框架, 建设于gstreamer, 自行学习 | https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_docker_containers.html deepstream容器库 | deepstream容器库 |https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream-l4t/tags | ### 1.2 华为软件定义摄像头 项目具体参考HuaWeiSDC目录, 华为软件定义摄像头, 产品形态为一个摄像头, 可自行部署自己训练的算法, 实现摄像头与算法一体化。 资料 | 链接 ---|--- 产品形态 | https://e.huawei.com/cn/products/intelligent-vision/cameras/software-defined-camera/ 算法部署平台 | https://hdps.holosens.huaweicloud.com/shdps 社区 | https://forum.huawei.com/enterprise/zh/index ### 1.3 车载客流密度分析 项目详细参考miva目录, 项目应用场景为地铁列车上,考虑到硬件统合性能和功耗限制等因素, 选择的是**Jetson Xavire NX**, 软件则基于Deepstream进行开发. 资料 | 作用 | 链接 ---|---|---| deepstream | 算法的部署框架, 建设于gstreamer, 自行学习 | https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_docker_containers.html | ### 1.4 车站管理系统(研发中) 项目详细参考ins目录, 项目应场景为地铁车站, 算法所需的处理资源较大, 所以方案采用**硬件服务器 + GPU的形式**, 因为考虑到后续自动化维护、部署、资源动态伸缩问题, 决定采用[K8s(Kubernetes)](https://www.kubernetes.org.cn/doc-11)这种分布式部署方案, 同时为了更好实现的多用户权限管理, 采用国内青云开源的[Kubesphere](https://kubesphere.io/api/kubesphere/#tag/DevOps-Credential)来管理和部署K8s. - 算法部署部分也采用Deepstream进行部署 ### 1.5 gsd_check 项目详细参考gsd_check, 项目应用场景为对野生动物管理系统的识别结果进行二次筛查, 降低误识别, 硬件平台为**Jetson Xavire NX**, 软件则是居于tensorttx进行开发. 资料 | 作用 | 链接 ---|---|---| tensorrtx | 算法的部署框架, 建设于tensorrtx, 自行学习 | https://github.com/wang-xinyu/tensorrtx drogon | http服务框架 | https://gitee.com/an-tao/drogon?utm_source=alading&utm_campaign=repo ### 1.6 gsd_var 项目应用场景为对野生动物管理系统的识别结果进行二次识别, 识别鸟种, 内部架构跟gsd_check一样, 不做过多的描述。 ## 2.软件仓库与镜像仓库 软件仓库、镜像仓库地址均为自己搭建gitlab服务、harbor服务, 物理机为工控机, 该做法的原因为能够将两者服务纳入到VPN内网中, 从而实现真正意义上的自动化部署。 **服务:** | 服务 | 地址 | 作用 | 账号 | 密码 | | --- | --- | --- | --- | --- | | gitlab | http://192.168.31.174 | 私有git服务 | root | sunwin2021 | | harbor | http://192.168.31.174:8080 | 私有DockerHub服务 | admin | SZsunwin2022 | ## 3.摄像头参数说明 摄像头参数主要分辨率为1080P, 不能使用2K, 这样会影响到算法的识别效果, 在部署时一定要检查是否为1080P, 而相机账号密码多数**admin sunwin2021**。 ## 4.软件更新说明 因为有些机场目前处于流量卡欠费的情况, 并且结合软件迭代问题、各个机场的网络环境不同, 各个机场更新方法不同, 根据以下表格选择对应不同的方法, 方法具体参考**update**目录下文件. | 机场 | 更新方法 | | --- | --- | | 白云、大兴、深圳机场、兰州南端、合肥机场 | 正常更新.md | | 首都、乌鲁木齐、成都、兰州北端、中端 | 旧版转新版更新.md | **注意: 将旧版程序转换为新版后, 统一使用正常更新方法**