# 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版本号查询

其中显示的**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**
> **说明:**
>- **_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。

- Nodes配置,**Input Node:data**配置保持默认

- 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

单击Finish,转换模型时出现报错信息,此时在DetectionOutput层的Suggestion中选择SSDDetectionOutput,并点击Retry,如下图所示:

- 
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工程

4. 开始编译,打开Mindstudio工具,在工具栏中点击**Build \> Build \> Build-Configuration**。如[图 编译操作及生成文件](#zh-cn_topic_0203223280_fig19291111318376)所示,会在目录下生成build和run文件夹。
**图 5** 编译操作及生成文件

注意:
首次编译工程时,**Build \> Build**为灰色不可点击状态。需要点击**Build \> Edit Build Configuration**,配置编译参数后再进行编译。

## 运行
1. 在Mind Studio工具栏单击Run-> Edit Configurations按钮,打开运行配置选项,选择sample-objectdetection默认参数即可,点击OK。
如下图所示:

2. 在Mindstudio工具的工具栏中找到Run按钮,点击 **Run \> Run 'sample-objectdetection'**,如[图 程序已执行示意图](#zh-cn_topic_0203223280_fig18918132273612)所示,可执行程序已经在开发板执行。
**图 6** 程序已执行示意图

Mind Studio中查看推理的结果:



