图像分类模型
概要
功能:使用googlenet模型对输入图片进行分类推理。
样例输入:待推理的jpg图片。
样例输出:推理后的jpg图片
整体架构流程
一.样例准备
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=1684309948&Signature=jgslBgIl2nlHmXnP%2F0lx4jWnUqYsCD4%2Bwhz88Z%2FArAc%3D
2.获取此应用中所需要的原始网络模型。
# 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。也可以参照上表在modelzoo中下载并手工转换,以了解更多细节。
cd $HOME/samples/python/level2_simple_inference/1_classification/googlenet_imagenet_dynamic_batch/model
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/classification/googlenet.caffemodel --no-check-certificate
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/classification/googlenet.prototxt --no-check-certificate
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/googlenet_imagenet_dynamic_batch-python/insert_op.cfg --no-check-certificate
atc --input_shape="data:-1,3,224,224" --weight="./googlenet.caffemodel" --input_format=NCHW --output="./googlenet_dynamic_batch" --soc_version=Ascend310 --insert_op_conf=./insert_op.cfg --framework=0 --model="./googlenet.prototxt" --dynamic_batch_size="1,2,4,8"
3.获取样例需要的测试图片。
执行以下命令,进入样例的data文件夹中,下载对应的测试图片。
cd $HOME/samples/python/level2_simple_inference/1_classification/googlenet_imagenet_dynamic_batch/data
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/googlenet_imagenet_dynamic_batch-python/test_image/test1.jpg --no-check-certificate
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/googlenet_imagenet_dynamic_batch-python/test_image/test2.jpg --no-check-certificate
cd ../src
二.样例运行
注:开发环境与运行环境合一部署,请跳过步骤1,直接执行步骤2即可。
1.执行以下命令,将开发环境的 googlenet_imagenet_dynamic_batch 目录上传到运行环境中,例如 /home/HwHiAiUser,并以HwHiAiUser(运行用户)登录运行环境(Host)。
# 【xxx.xxx.xxx.xxx】为运行环境ip,200DK在USB连接时一般为192.168.1.2,300(ai1s)为对应的公网ip。
scp -r $HOME/samples/python/level2_simple_inference/1_classification/googlenet_imagenet_dynamic_batch HwHiAiUser@xxx.xxx.xxx.xxx:/home/HwHiAiUser
ssh HwHiAiUser@xxx.xxx.xxx.xxx
cd ${HOME}/googlenet_imagenet_dynamic_batch/src
2.运行样例
python3.6 classify.py ../data/
三.查看结果
运行完成后,会在样例工程的out目录下生成带推理结果的jpg图片,显示对比结果如下所示。
名词解释
原始权重:原始权重是机器学习算法中的一个重要概念。在机器学习过程中,数据通常都会被转换成向量或矩阵的形式来进行处理。而这些向量或矩阵中的每一个数值都会被赋予一个权重,用来表示它在模型中的重要性和影响力。
原始权重就是指在模型训练过程中,初始化时赋予每个参数的初始值。这些初始权重可能是随机生成的,也有可能是根据特定的规则生成的。在机器学习中,使用正确的初始权重能够加速模型的收敛,并提高模型的表现。
原始模型网络:原始模型网络,也称为初始模型网络,是机器学习中一种最初的网络结构模型。这个网络模型最初的目的是为了解决特定的问题,其网络结构通常较为简单。
在Deep Learning领域中,神经网络是通常采用深度(depth)结构,由多个层(layer)共同组成。deep learning之所以称为“深度学习”,就是因为神经网络的深度相对较深,至少包含两个或以上“隐层”。而初始模型网络相对于后来的网络结构来说,则层数更少,神经元也更少。
在模型设计中,通常需要选取一个初始模型来进行训练。这里的初始模型可以是一个随机的神经网络模型,也可以是采用特定规则生成的预先训练好的模型。
在实际应用中,初始模型用于指导整个机器学习过程,它不仅影响学习效率,同时也能够影响模型的最终效果。因此,选择合适的初始模型是非常关键的。
通过对初始模型网络进行反向传播(back propagation)算法训练后,可以获得更优的模型参数以及更优的模型输出。因此,初始模型网络在机器学习中扮演着非常重要的角色,能够带领整个机器学习系统完成从最初的数据预处理到最后的模型训练和预测的完整流程。
AIPP:模型量化中的自适应感性品质估计(Adaptive Input Parameter Precision),其作用主要是优化模型的计算性能和模型的精度。
在机器学习中,神经网络计算通常需要较高的计算资源和较长的计算时间。而且,随着神经网络的结构变得更复杂,这种计算问题会变得更加严重。为了解决这个问题,研究人员引入了模型量化技术,该技术的思路是减少神经网络模型中参数的精度,从而降低计算负担。
而AIPP是一种较为先进的模型量化技术,它能够自适应地调节模型参数的精度,从而保证模型的精度和性能之间的一个平衡。在具体实现中,AIPP会对神经网络的权重和客户端数据的精度进行自适应调整,从而提升计算效率和模型精度。
通过AIPP的自适应调整,可以使得神经网络的计算过程中更加高效,从而能够节省大量的计算资源和计算时间。同时,AIPP还能够通过优化模型的精度,提高模型在特定任务上的表现。
总之,AIPP作为一种先进的模型量化技术,能够优化神经网络模型的计算性能和精度,帮助研究人员实现高效的深度学习模型。
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/python/level2_simple_inference/1_classification/googlenet_imagenet_dynamic_batch/model
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/classification/googlenet.caffemodel --no-check-certificate
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/classification/googlenet.prototxt --no-check-certificate
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/googlenet_imagenet_dynamic_batch-python/insert_op.cfg --no-check-certificate
atc --input_shape="data:-1,3,224,224" --weight="./googlenet.caffemodel" --input_format=NCHW --output="./googlenet_dynamic_batch" --soc_version=Ascend310 --insert_op_conf=./insert_op.cfg --framework=0 --model="./googlenet.prototxt" --dynamic_batch_size="1,2,4,8"
该命令是使用ATC模型转化工具将基于Caffe框架的GoogLeNet模型转换为适用于华为Ascend AI处理器的动态批量大小模型。下面是对该命令的详细解释:
- atc:ATC模型转化工具的命令行工具。
- –input_shape=“data:-1,3,224,224”:指定神经网络的输入形状,其中data表示输入数据的层名称,-1表示维度不确定,3表示输入数据的通道数,224表示输入数据的高度和宽度。
- –weight=“./googlenet.caffemodel”:指定 Caffe 框架所训练的 GoogLeNet 模型的权重文件路径。
- –input_format=NCHW:指定输入数据的格式,这里采用 NCHW 格式。
- –output=“./googlenet_dynamic_batch”:指定转换后的模型文件所保存的路径。
- –soc_version=Ascend310:指定推理使用的芯片型号,这里设置为Ascend310。
- –insert_op_conf=./insert_op.cfg:指定ATC模型转化工具中使用的算子配置文件。
- –framework=0:指定神经网络模型训练时所采用的框架类型,这里设为0,即Caffe框架。
- –model=“./googlenet.prototxt”:指定 Caffe 框架所训练的 GoogLeNet 模型的结构文件路径。
- –dynamic_batch_size=“1,2,4,8”:指定模型支持的动态批量大小,即输入数据的样本数量,这里支持1, 2, 4, 8个样本输入。
综上所述,该命令实现了将基于Caffe框架的GoogLeNet模型转换为适用于华为Ascend AI处理器的支持动态批量大小的模型,其中指定了模型的输入形状、权重文件路径、模型输出路径、芯片型号等信息,同时指定了模型支持的动态批量大小。
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次模型推理。
小结
该模型用于对图像进行分类并进行标注,可应用于医学检测、电表ocr、人脸识别等多种领域。