视频流检测模型总结
概要
功能:使用物体检测模型对树莓摄像头中的即时视频进行物体检测。
样例输入:摄像头视频。
样例输出:presenter server web页面展示检测结果。
前置条件
条件 要求 备注
CANN版本 >=5.0.4 请参考CANN样例仓介绍中的安装步骤完成CANN安装,如果CANN低于要求版本请根据版本说明切换samples仓到对应CANN版本
硬件要求 Atlas200DK 摄像头样例仅在Atlas200D测试及运行,产品说明请参考硬件平台
第三方依赖 presentagent,ffmpeg+acllite 请参考第三方依赖安装指导(C++样例)完成对应安装
整体架构流程
样例准备
1.获取源码包
可以使用以下两种方式下载,请选择其中一种进行源码准备。
命令行方式下载(下载时间较长,但步骤简单)。
# 开发环境,非root用户命令行中执行以下命令下载源码仓。
cd ${HOME}
git clone https://gitee.com/ascend/samples.git
注:如果需要切换到其它tag版本,以v0.5.0为例,可执行以下命令。
git checkout v0.5.0
压缩包方式下载(下载时间较短,但步骤稍微复杂)。
注:如果需要下载其它版本代码,请先请根据前置条件说明进行samples仓分支切换。
# 1. 通过以下链接下载压缩包
# 2. 将ZIP包上传到开发环境中的普通用户家目录中,【例如:${HOME}/ascend-samples-master.zip】。
# 3. 开发环境中,执行以下命令,解压zip包。
cd ${HOME}
unzip ascend-samples-master.zip
https://gitee.com/ascend/samples/repository/blazearchive/master.zip?Expires=1684641544&Signature=%2BIbLNjhc3UsMmg7NhEY93fpP0ahXxaU%2F6rrbGBghQQ4%3D
2.模型转化
# 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。也可以参照上表在modelzoo中下载并手工转换,以了解更多细节。
cd ${HOME}/samples/cplusplus/level2_simple_inference/2_object_detection/object_detection_camera/model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/object_detection_camera/yolov3.caffemodel
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/object_detection_camera/yolov3.prototxt
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/object_detection_camera/aipp_yuv.cfg
atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=object_detection --soc_version=Ascend310 --insert_op_conf=aipp_yuv.cfg
样例部署
执行以下命令,执行编译脚本,开始样例编译。
cd ${HOME}/samples/cplusplus/level2_simple_inference/2_object_detection/object_detection_camera/scripts
bash sample_build.sh
样例部署
执行以下命令,执行编译脚本,开始样例编译。
cd ${HOME}/samples/cplusplus/level2_simple_inference/2_object_detection/object_detection_camera/scripts
bash sample_build.sh
样例运行
注:开发环境与运行环境合一部署,请跳过步骤1,直接执行步骤2即可。
1.执行以下命令,将开发环境的 object_detection_camera 目录上传到运行环境中,例如 /home/HwHiAiUser,并以HwHiAiUser(运行用户)登录运行环境(Host)。
# 【xxx.xxx.xxx.xxx】为运行环境ip,200DK在USB连接时一般为192.168.1.2,300(ai1s)为对应的公网ip。
scp -r ${HOME}/samples/cplusplus/level2_simple_inference/2_object_detection/object_detection_camera HwHiAiUser@xxx.xxx.xxx.xxx:/home/HwHiAiUser
ssh HwHiAiUser@xxx.xxx.xxx.xxx
cd ${HOME}/object_detection_camera/scripts
2.执行运行脚本,开始样例运行。
bash sample_run.sh
查看结果
1.打开presentserver网页界面(打开启动Presenter Server服务时提示的URL即可)。
2.等待Presenter Agent传输数据给服务端,单击“Refresh“刷新,当有数据时相应的Channel 的Status变成绿色。
3.单击右侧对应的View Name链接,查看结果。
技术名词解释
原始权重:原始权重是机器学习算法中的一个重要概念。在机器学习过程中,数据通常都会被转换成向量或矩阵的形式来进行处理。而这些向量或矩阵中的每一个数值都会被赋予一个权重,用来表示它在模型中的重要性和影响力。
原始权重就是指在模型训练过程中,初始化时赋予每个参数的初始值。这些初始权重可能是随机生成的,也有可能是根据特定的规则生成的。在机器学习中,使用正确的初始权重能够加速模型的收敛,并提高模型的表现。
原始模型网络:原始模型网络,也称为初始模型网络,是机器学习中一种最初的网络结构模型。这个网络模型最初的目的是为了解决特定的问题,其网络结构通常较为简单。
在Deep Learning领域中,神经网络是通常采用深度(depth)结构,由多个层(layer)共同组成。deep learning之所以称为“深度学习”,就是因为神经网络的深度相对较深,至少包含两个或以上“隐层”。而初始模型网络相对于后来的网络结构来说,则层数更少,神经元也更少。
在模型设计中,通常需要选取一个初始模型来进行训练。这里的初始模型可以是一个随机的神经网络模型,也可以是采用特定规则生成的预先训练好的模型。
在实际应用中,初始模型用于指导整个机器学习过程,它不仅影响学习效率,同时也能够影响模型的最终效果。因此,选择合适的初始模型是非常关键的。
通过对初始模型网络进行反向传播(back propagation)算法训练后,可以获得更优的模型参数以及更优的模型输出。因此,初始模型网络在机器学习中扮演着非常重要的角色,能够带领整个机器学习系统完成从最初的数据预处理到最后的模型训练和预测的完整流程。
AIPP:模型量化中的自适应感性品质估计(Adaptive Input Parameter Precision),其作用主要是优化模型的计算性能和模型的精度。
在机器学习中,神经网络计算通常需要较高的计算资源和较长的计算时间。而且,随着神经网络的结构变得更复杂,这种计算问题会变得更加严重。为了解决这个问题,研究人员引入了模型量化技术,该技术的思路是减少神经网络模型中参数的精度,从而降低计算负担。
CFG文件是计算机中的配置文件,其全称为configuration file。通常情况下,CFG文件是一种文本文件,用于存储软件、应用程序、脚本等的配置参数。在大多数情况下,CFG文件通常是一种简单的键值对或者类似INI配置文件的格式,它通过键值对的方式描述了程序或系统各项参数的设置。
CFG文件通常包含各种各样的配置,例如网络连接、数据库连接、文件路径、端口号、缓存大小、日志文件等。这些配置项在程序运行时被读取并用于设定程序的运行环境,以及指导程序的行为和操作方式。配置文件的作用是在不需要修改代码的情况下,允许用户以文本文件的形式修改系统或程序的行为。
CFG文件的作用在于帮助用户或程序员配置软件和系统参数设置,而不需要直接修改代码或进行其他工具的操作。它的优点在于当软件或系统设定需要调整时,只需要修改CFG文件即可,而不需要执行复杂的代码操作或系统参数修改。因此,CFG文件具有可移植性、可扩展性和可读性等特点。
在实际应用中,CFG文件通常是由操作系统或应用程序来读取和写入。对于应用程序来说,CFG文件通常提供了一个简单的接口,用于读取和修改配置信息。
例如:
- Bert
- GPT 初代
- GPT-2
- GPT-3
- ChatGPT
OM模型是指OpenVX模型,其作用主要是在机器视觉和深度学习领域中帮助开发人员实现高效的图像和视频处理应用程序。
OM模型是由Khronos Group开发的OpenVX图像和视觉处理框架的一部分。该模型涵盖了多种机器视觉和深度学习任务的算法和操作。开发人员可以利用OM模型,快速地实现各种视觉算法和应用程序,例如人脸识别、物体识别、运动估计、3D测量、视觉SLAM等等。
OM模型的设想是提供一种通用性和标准化的接口,使得各种厂商的硬件能够快速地支持以该模型实现的图像和视频处理相关应用,从而在各种平台上提供高效、统一和可靠的视觉处理解决方案。
OM模型的另一个重要作用是在移动端机器学习应用的部署过程中,帮助研发者调用移动端的硬件加速器进行推理,同时也允许开发者对OM模型进行定制化、优化和扩展。
总之,OM模型作为 Khronos Group OpenVX框架的一部分,对于加速机器视觉和深度学习领域的算法和操作非常有帮助。
ATC(Ascend TensorFlow Conversion)模型转化工具是一种能够将TensorFlow模型转化为适用于华为昇腾芯片的模型的开源工具,其作用主要是优化模型的推理性能,提高模型的效率和精度。
在深度学习算法中,TensorFlow是一种常用的深度学习框架,但是其所生成的模型文件不能直接运行在华为昇腾芯片上。而将TensorFlow模型转换为适用于华为昇腾芯片的模型是至关重要的一步,这个转换过程中,ATC模型转化工具具有非常重要的作用。
ATC模型转化工具可以自动将TensorFlow模型中的各种节点、运算符等等转化为适用于华为昇腾芯片上的节点和运算符,并且还可以对模型做一些优化,例如模型量化、通道剪枝等等,从而进一步提高模型的推理性能、减少昇腾芯片的计算流程和计算时间,同时保证模型的精度和稳定性。
通过ATC模型转化工具的使用,研究人员和开发者可以减少转换模型的时间和精力,避免了从头开始架构昇腾芯片上的模型,使得他们可以更快速地实现TensorFlow模型在昇腾芯片上的部署和应用。
总之,ATC模型转化工具作为可以将TensorFlow模型转换为适用于华为昇腾芯片的模型的开源工具,其作用是优化模型的推理性能和精度,同时简化模型转换的过程,为研发者提供更快速和高效的开发体验和应用场景。
MSAME推理工具是一种由微软开发的基于DNN的跨平台推理引擎,可以有效地加速DNN模型的推理过程,提高模型的效率和精度。
在深度学习算法中,神经网络模型是计算密集型的模型,因此在模型的推理过程中,需要大量的计算资源和计算复杂度。MSAME推理工具提供了一种高级优化的技术,可以在多个线程和多个协处理器之间分配负载,从而使得神经网络模型的推理过程可以更加快速和高效。
同时,MSAME推理工具采用了一种轻量级的模型压缩技术,可以将DNN模型的大小减小,从而减少模型在内存和磁盘中的存储成本,同时还可以减少模型在网络中传输的时间。
另外,MSAME推理工具还提供了针对特定硬件的代码优化,可以在CPU和GPU等多种硬件平台上高效地运行。此外,这个引擎还支持多种深度学习框架,包括TensorFlow、Caffe等。
总之,MSAME推理工具作为一种跨平台的DNN推理引擎,可以优化模型的计算性能和模型精度,同时提高模型在不同硬件平台上的效率和实用性,为DNN模型的推理带来了更加高效和优化的计算体验。
技术细节
1.ATC模型转化参数解释
# 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。也可以参照上表在modelzoo中下载并手工转换,以了解更多细节。
cd ${HOME}/samples/cplusplus/level2_simple_inference/2_object_detection/object_detection_camera/model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/object_detection_camera/yolov3.caffemodel
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/object_detection_camera/yolov3.prototxt
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/object_detection_camera/aipp_yuv.cfg
atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=object_detection --soc_version=Ascend310 --insert_op_conf=aipp_yuv.cfg
这行命令使用ATC模型转换工具将 Caffe 框架训练的 YOLOv3 模型转化为适用于 Ascend AI 处理器的模型。下面是该命令的详细解释:
- atc:ATC 模型转换工具的命令行工具。
- –model=yolov3.prototxt:指定 Caffe 框架训练的 YOLOv3 模型的网络结构文件路径。
- –weight=yolov3.caffemodel:指定 Caffe 框架训练的 YOLOv3 模型的权重文件路径。
- –framework=0:指定使用的框架类型,这里使用 Caffe 框架。
- –output=object_detection:指定将转换后的模型文件保存到 object_detection 目录下。
- –soc_version=Ascend310:指定推理使用的芯片型号,这里设置为Ascend310。
- –insert_op_conf=aipp_yuv.cfg:指定ATC模型转化工具中使用的算子配置文件。
综上所述,这条命令的含义是:对 Caffe 框架训练的 YOLOv3 模型进行转换,将其转换为适用于 Ascend AI 处理器的模型。在转换过程中,模型的网络结构文件为 yolov3.prototxt,权重文件为 yolov3.caffemodel。在转换后,最终将将转换后的模型文件保存在 object_detection 目录下。由于终端芯片是Ascend310,因此需要指定 --soc_version=Ascend310
,同时指定了 ATC 模型转化工具中使用的算子配置文件。
2.msame模型性能测试
这条命令的含义是:使用msame这个跨平台DNN推理引擎,加载…/model/googlenet.om这个模型文件,将推理结果输出到output/文件夹中,并且循环运行100次模型推理。
具体的解释如下:
- ./msame:表示执行当前目录下的msame可执行文件,即该命令所在的目录下的msame应用程序。
- –model …/model/googlenet.om:指定需要加载的模型文件路径,该路径为上一级目录的model文件夹下的googlenet.om文件。
- –output output/:指定输出推理结果的路径,将推理结果输出到output文件夹中。
- –loop 100:指定运行模型推理的次数,这里运行100次模型推理。
综上所述,该命令的作用是使用msame推理引擎对加载的googlenet.om模型文件进行推理,并将推理结果输出到output文件夹中,并且运行100次模型推理。
小结
视频流检测应用范围广泛,应用于车辆识别、生物医学识别等多种领域。