# sample-objectdetectionbyyolov3
**Repository Path**: Terry/sample-objectdetectionbyyolov3
## Basic Information
- **Project Name**: sample-objectdetectionbyyolov3
- **Description**: 本Application支持运行在Atlas 200 DK或者AI加速云服务器上,实现了对目标检测网络的推理功能。注意:本工程目前只支撑1.30版本,如果要在1.31版本上使用,需要做适配开发!
- **Primary Language**: C++
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 6
- **Created**: 2020-03-25
- **Last Updated**: 2024-05-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
中文|[英文](README.md)
# Yolov3检测网络应用
本Application支持运行在Atlas 200 DK或者AI加速云服务器上,实现了对目标检测网络的推理功能。
## 前提条件
部署此Sample前,需要准备好以下环境:
- 已完成Mind Studio的安装。
- 已完成Atlas 200 DK开发者板与Mind Studio的连接,交叉编译器的安装,SD卡的制作及基本信息的配置等。
## 软件准备
运行此Sample前,需要按照此章节获取源码包,并进行相关的环境配置。
1. 获取源码包。
将[https://gitee.com/Atlas200DK/sample-objectdetctionbyyolov3](https://gitee.com/Atlas200DK/sample-objectdetectionbyyolov3)仓中的代码以Mind Studio安装用户下载至Mind Studio所在Ubuntu服务器的任意目录,例如代码存放路径为:$HOME/sample-objectdetection。
2. 获取此应用中所需要的原始网络模型。
参考[表1](#zh-cn_topic_0182554604_table19942111763710)获取此应用中所用到的原始网络模型及其对应的权重文件,并将其存放到Mind Studio所在Ubuntu服务器的任意目录,例如:$HOME/ascend/models/yolov3。
**表 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)对应的**模型名称**:yolov3。
- 其他保持默认值。
**图 1** yolov3模型转换配置


3. 单击OK开始转换模型。
模型转换成功后,后缀为.om的Davinci模型存放地址为:\\$HOME/tools/che/model-zoo/my-model/yolov3。
将模型复制放到代码 script文件夹下,如:\\$HOME/sample-objectdetection/script/
4. 以Mind Studio安装用户登录Mind Studio所在Ubuntu服务器,并设置环境变量DDK\_HOME。
**vim \~/.bashrc**
执行如下命令在最后一行添加DDK\_HOME及LD\_LIBRARY\_PATH的环境变量。
**export DDK\_HOME=$HOME/tools/che/ddk/ddk**
**export LD\_LIBRARY\_PATH=$DDK\_HOME/uihost/lib**
> **说明:**
>- 如果此环境变量已经添加,则此步骤可跳过。
输入:wq!保存退出。
执行如下命令使环境变量生效。
**source \~/.bashrc**
## 部署
1. 以Mind Studio安装用户进入目标检测网络应用代码所在根目录,如:$HOME/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**
图片要求如下:
- 格式: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. 进入Yolov3检测网络应用的可执行文件所在路径。
**cd \~/HIAI\_PROJECTS/ascend\_workspace/objectdetection/out**
3. 执行应用程序。
执行**run\_object\_detection\_yolov3.py**脚本会将推理生成的图片保存至指定路径。
命令示例如下所示:
**python3 run\_object\_detection\_yolov3.py -m _yolov3.om_ -w _416_ -h _416_ -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:输出图片的目录,默认为当前目录。
4. 其他详细参数请执行**python3 run\_object\_detection\_yolov3.py --help**命令参见帮助信息。
## 公共代码库下载
将依赖的软件库下载到“sample-objectdetection/script“目录下。
**表 2** 依赖代码库下载