# Atlast200DK-objectdetection-yolov3
**Repository Path**: futureflsl/Atlast200DK-objectdetection-yolov3
## Basic Information
- **Project Name**: Atlast200DK-objectdetection-yolov3
- **Description**: Atlast200DK-objectdetection-yolov3
- **Primary Language**: C++
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2020-02-06
- **Last Updated**: 2024-05-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
中文|[英文](README.md)
# yolov3检测网络应用
本Application支持运行在Atlas 200 DK或者AI加速云服务器上,实现了对faster-rcnn目标检测网络的推理功能。
## 前提条件
部署此Sample前,需要准备好以下环境:
- 已完成Mind Studio的安装。
- 已完成Atlas 200 DK开发者板与Mind Studio的连接,交叉编译器的安装,SD卡的制作及基本信息的配置等。
## 软件准备
运行此Sample前,需要按照此章节获取源码包,并进行相关的环境配置。
1. 获取源码包。
将代码以Mind Studio安装用户下载至Mind Studio所在Ubuntu服务器的任意目录,例如代码存放路径为:_/home/ascend/sample-objectdetection_。
2. 获取此应用中所需要的原始网络模型。
参考[表1](#zh-cn_topic_0182554604_table19942111763710)获取此应用中所用到的原始网络模型及其对应的权重文件,并将其存放到Mind Studio所在Ubuntu服务器的任意目录,例如$HOME/ascend/models/faster\_rcnn。
**表 1** 检测网络应用使用模型
3. 将原始网络模型转换为Davinci模型。
1. 在Mind Studio操作界面的顶部菜单栏中选择“Tool \> Convert Model”,进入模型转换界面。
2. 在弹出的**Convert Model**操作界面中,Model File与Weight File分别选择[2](#zh-cn_topic_0182554604_li2074865610364)中下载的模型文件和权重文件。
- **Model Name**填写为[表1](#zh-cn_topic_0182554604_table19942111763710)对应的**模型名称**:faster\_rcnn。
- 其他保持默认值。
**图 1** faster\_rcnn模型转换配置

3. 单击OK开始转换模型。
模型转换成功后,后缀为.om的Davinci模型存放地址为$HOME/tools/che/model-zoo/my-model/fast\_rcnn。
4. 以Mind Studio安装用户登录Mind Studio所在Ubuntu服务器,并设置环境变量DDK\_HOME。
**vim \~/.bashrc**
执行如下命令在最后一行添加DDK\_HOME及LD\_LIBRARY\_PATH的环境变量。
**export DDK\_HOME=/home/XXX/tools/che/ddk/ddk**
**export LD\_LIBRARY\_PATH=$DDK\_HOME/uihost/lib**
> **说明:**
>- XXX为Mind Studio安装用户,/home/XXX/tools为DDK默认安装路径。
>- 如果此环境变量已经添加,则此步骤可跳过。
输入:wq!保存退出。
执行如下命令使环境变量生效。
**source \~/.bashrc**
## 部署
1. 以Mind Studio安装用户进入目标检测网络应用代码所在根目录,如_/home/ascend/sample-objectdetection_。
2. 执行部署脚本,进行工程环境准备,包括公共库的编译与部署、应用的编译与部署等操作。
bash deploy.sh _host\_ip_ _model\_mode_
- _host\_ip_:对于Atlas 200 DK开发者板,即为开发者板的IP地址。对于AI加速云服务器,即为Host的IP地址。
- local:若Mind Studio所在Ubuntu系统未连接网络,请使用local模式,执行此命令前,需要参考[公共代码库下载](#zh-cn_topic_0182554604_section92241245122511)将依赖的公共代码库ezdvpp下载到“sample-objectdetection/script“目录下。
- internet:若Mind Studio所在Ubuntu系统已连接网络,请使用internet模式,在线下载依赖代码库ezdvpp。
命令示例:
**bash deploy.sh 192.168.1.2 internet**
3. 参考[2](#zh-cn_topic_0182554604_li2074865610364)将需要使用的已经转换好的Davinci离线模型文件与需要推理的图片上传至Host侧任一属组为HwHiAiUser用户的目录。
例如将模型文件**faster\_rcnn.om**上传到Host侧的“/home/HwHiAiUser/models“目录下。
图片要求如下:
- 格式:jpg、png、bmp。
- 输入图片宽度:16px\~4096px之间的整数。
- 输入图片高度:16px\~4096px之间的整数。
## 运行
1. 在Mind Studio所在Ubuntu服务器中,以HwHiAiUser用户SSH登录到Host侧。
**ssh HwHiAiUser@**_host\_ip_
对于Atlas 200 DK,host\_ip默认为192.168.1.2(USB连接)或者192.168.0.2(NIC连接)。
对于AI加速云服务器,host\_ip即为当前Mind Studio所在服务器的IP地址。
2. 进入faster-rcnn检测网络应用的可执行文件所在路径。
**cd \~/HIAI\_PROJECTS/ascend\_workspace/objectdetection/out**
3. 执行应用程序。
执行**run\_object\_detection\_faster\_rcnn.py**脚本会将推理生成的图片保存至指定路径。
命令示例如下所示:
**python3 run\_object\_detection\_faster\_rcnn.py -m _\~/models/faster\_rcnn.om_ -w _800_ -h _600_ -i**
**_./example.jpg_ -o _./out_ -c** _21_
- -m/--model\_path:离线模型路径。
- -w/model\_width:模型的输入图片宽度,为16\~4096之间的整数。
- -h/model\_height:模型的输入图片高度,为16\~4096之间的整数。
- -i/input\_path:输入图片的目录/路径,可以有多个输入。
- -o/output\_path:输出图片的目录,默认为当前目录。
- -c/output\_categories:faster\_rcnn检测的类别数\(包含背景\),为2\~32之间的整数,默认为值为21。
4. 其他详细参数请执行**python3 run\_object\_detection\_faster\_rcnn.py --help**命令参见帮助信息。
## 公共代码库下载
将依赖的软件库下载到“sample-objectdetection/script“目录下。
**表 2** 依赖代码库下载