# sample-objectdetectionbymobilenet **Repository Path**: wqhot/sample-objectdetectionbymobilenet ## Basic Information - **Project Name**: sample-objectdetectionbymobilenet - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: image_detection - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-12-03 - **Last Updated**: 2024-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 中文 **该案例仅仅用于学习,打通流程,不对效果负责,不支持商用。** # Mobilenet目标检测网络应用 本Application支持运行在Atlas200DK环境上,实现了本地图像到图像(读取本地图像数据,将检测出的目标框以及对应的置信度标注在图片上)的mobilenet目标检测网络的推理功能。 当前分支中的应用适配**1.32.0.0及以上**版本的[DDK&RunTime](https://ascend.huawei.com/resources)。 ## 前提条件 部署此Sample前,需要准备好以下环境: - 已完成Mind Studio的安装。 ## 软件准备 运行此Sample前,需要按照此章节获取源码包,并进行相关的环境配置。 1. 获取源码包。 1. 下载压缩包方式获取。 将[https://gitee.com/Atlas200DK/sample-objectdetectionbymobilenet](https://gitee.com/Atlas200DK/sample-objectdetectionbymobilenet)仓中的代码以Mind Studio安装用户下载至Mind Studio所在Ubuntu服务器的任意目录,这两个文件必须存放到同一个目录下。例如代码存放路径为:$HOME/AscendProjects/sample-objectdetectionbymobilenet。 2. 命令行使用git命令方式获取。 在命令行中:$HOME/AscendProjects目录下执行以下命令下载代码 **git clone https://gitee.com/Atlas200DK/sample-objectdetectionbymobilenet.git --branch image_detection** 2. 获取此应用中所需要的原始网络模型。 获取此应用中所用到的原始网络模型及其对应的权重文件,并将其存放到Mind Studio所在Ubuntu服务器的任意目录,这两个文件必须存放到同一个目录下。例如:$HOME/models/mobilenetssd。 1) 获取目标检测模型的网络和权重文件,执行如下命令下载原始caffe模型: wget https://obs-model-ascend.obs.cn-east-2.myhuaweicloud.com/mobilenetssd/mobilenetssd.caffemodel wget https://obs-model-ascend.obs.cn-east-2.myhuaweicloud.com/mobilenetssd/mobilenetssd.prototxt 3. 以Mind Studio安装用户登录Mind Studio所在Ubuntu服务器,确定当前使用的DDK版本号并设置环境变量DDK\_HOME,tools\_version,LD\_LIBRARY\_PATH。 1. 查询当前使用的DDK版本号。 可通过Mind Studio工具查询,也可以通过DDK软件包进行获取。 - 使用Mind Studio工具查询。 在Mind Studio工程界面依次选择“File \> Settings \> System Settings \> Ascend DDK“,弹出如[图 DDK版本号查询](#zh-cn_topic_0203223280_zh-cn_topic_0203223294_fig17553193319118)所示界面。 **图 1** DDK版本号查询 ![](figures/DDK版本号查询.png "DDK版本号查询") 其中显示的**DDK Version**就是当前使用的DDK版本号,如**1.32.0.B080**。 - 通过DDK软件包进行查询。 通过安装的DDK的包名获取DDK的版本号。 DDK包的包名格式为:**Ascend\_DDK-\{software version\}-\{interface version\}-x86\_64.ubuntu16.04.tar.gz** 其中**software version**就是DDK的软件版本号。 例如: DDK包的包名为Ascend\_DDK-1.32.0.B080-1.1.1-x86\_64.ubuntu16.04.tar.gz,则此DDK的版本号为1.32.0.B080。 2. 设置环境变量。 **vim \~/.bashrc** 执行如下命令在最后一行添加DDK\_HOME及LD\_LIBRARY\_PATH的环境变量。 **export tools\_version=_1.32.X.X_** **export DDK\_HOME=$HOME/.mindstudio/huawei/ddk/_1.32.X.X_/ddk** **export LD\_LIBRARY\_PATH=$DDK\_HOME/lib/x86\_64-linux-gcc5.4** >![](public_sys-resources/icon-note.gif) **说明:** >- **_1.32.X.X_**是[a](#zh-cn_topic_0203223280_zh-cn_topic_0203223294_li61417158198)中查询到的DDK版本号,需要根据查询结果对应填写,如**1.32.0.B080** >- 如果此环境变量已经添加,则此步骤可跳过。 输入:wq!保存退出。 执行如下命令使环境变量生效。 **source \~/.bashrc** 4. 将原始网络模型转换为适配昇腾AI处理器的模型。 1. 在Mind Studio操作界面的顶部菜单栏中选择**Tools \> Model Convert**,进入模型转换界面。 2. 在弹出的**Model Conversion**操作界面中,进行模型转换配置。 - Model File选择[步骤2](#zh-cn_topic_0203223280_li2074865610364)中下载的模型文件,此时会自动匹配到权重文件并填写在Weight File中。 - Model Name填写为[表1](#zh-cn_topic_0203223280_table19942111763710)对应的**模型名称**:mobilenetssd。 ![](figures/model_basic_info.png) - Nodes配置,**Input Node:data**配置保持默认 ![](figures/model_nodes.png) - AIPP是昇腾AI处理器提供的模型预处理模块,包括色域转换,图像归一化(减均值/乘系数)等功能。经过DVPP图像预处理模块(DVPP的使用方法会在接下来开发过程的预处理阶段详细描述)输出的图像多为YUV420SP类型,不支持输出BGR格式。因此,业务流需要使用AIPP模块转换YUV420SP类型的图像为模型要求的输入图像格式,如下图所示: **Input Image Forma**t 指的是输入om模型的图像格式; **Input Image Size [W|H]** 指的是输入图像的宽高; **Model Image Format** 指的是模型处理图片格式; **Mean Less [B] [G] [R]**指的是为三个颜色通道**[B] [G] [R]**减均值,减均值为127.5; **Multiplying Factor [B] [G] [R]** 指的是归一化要乘的系数,归一化系数为 0.007843。 - 关于AIPP参数的详细解释可以参考链接: https://www.huaweicloud.com/ascend/doc/mindstudio/2.1.0(beta)/zh/zh-cn_topic_0200347895.html ![](figures/model_aipp.png) 单击Finish,转换模型时出现报错信息,此时在DetectionOutput层的Suggestion中选择SSDDetectionOutput,并点击Retry,如下图所示: ![](figures/model_retry.png) - ![](figures/model_aipp.png) 3. 单击Retry重新转换模型 模型转换成功后,后缀为.om的离线模型存放地址为:$HOME/modelzoo/mobilenetssd/device。 5. 将转换好的模型文件(.om文件)上传到[步骤1](#zh-cn_topic_0203223280_li953280133816)中源码所在路径下的“**sample\-objectdetectionbymobilenet/script**”目录下。 ## 编译 1. 打开对应的工程。 以Mind Studio安装用户在命令行中进入安装包解压后的“MindStudio-ubuntu/bin”目录,如:$HOME/MindStudio-ubuntu/bin。执行如下命令启动Mind Studio。 **./MindStudio.sh** 启动成功后,打开**sample\-objectdetectionbymobilenet**工程,如[图 打开objectdetectionbymobilenet工程](#zh-cn_topic_0203223280_fig05481157171918)所示。 **图 2** 打开objectdetectionbymobilenet工程 ![](figures/open_projects.png) 4. 开始编译,打开Mindstudio工具,在工具栏中点击**Build \> Build \> Build-Configuration**。如[图 编译操作及生成文件](#zh-cn_topic_0203223280_fig19291111318376)所示,会在目录下生成build和run文件夹。 **图 5** 编译操作及生成文件 ![](figures/build_projects.png) 注意: 首次编译工程时,**Build \> Build**为灰色不可点击状态。需要点击**Build \> Edit Build Configuration**,配置编译参数后再进行编译。 ![](figures/build_configuration.png) ## 运行 1. 在Mind Studio工具栏单击Run-> Edit Configurations按钮,打开运行配置选项,选择sample-objectdetection默认参数即可,点击OK。 如下图所示: ![](figures/运行配置.png) 2. 在Mindstudio工具的工具栏中找到Run按钮,点击 **Run \> Run 'sample-objectdetection'**,如[图 程序已执行示意图](#zh-cn_topic_0203223280_fig18918132273612)所示,可执行程序已经在开发板执行。 **图 6** 程序已执行示意图 ![](figures/程序已执行示意图.png "程序已执行示意图") Mind Studio中查看推理的结果: ![](figures/查看结果.png) ![查看结果1](figures/查看结果1.png) ![查看结果2](figures/查看结果2.png) ![](figures/查看结果3.png)