> For the complete documentation index, see [llms.txt](https://1684.gitbook.io/bmnnsdk2-1684-2-0-1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://1684.gitbook.io/bmnnsdk2-1684-2-0-1/shi-li-yan-shi.md).

# 实例演示

​用例介绍，目前为用户提供了c/c++/python三种编程语言覆盖预处理推理接口用例。 示例目录命名规则：编程语言+解码模块+预处理模块+推理接口模块

| ssd300示例目录              | 软件流程                                                            | 编程接口语言  | 运行环境            |
| ----------------------- | --------------------------------------------------------------- | ------- | --------------- |
| cpp\_cv\_cv\_bmrt       | opencv解码 （BGR输出）+ opencv预处理 + inference + 后处理                   | C / C++ | soc/pcie/cmodel |
| cpp\_cv\_bmcv\_bmrt     | opencv解码（yuv i420输出）+ bmcv预处理 +   inference + 后处理               | C / C++ | soc             |
| cpp\_cv\_cv+bmcv\_bmrt  | opencv解码（yuv i420输出）+   cv::bmcv预处理 + bmcv预处理 + inference + 后处理 | C / C++ | soc             |
| cpp\_ffmpeg\_bmcv\_bmrt | ffmpeg解码 （yuv压缩输出）+   bmcv预处理 + inference + 后处理                 | C / C++ | soc/pcie        |
| cpp\_multi\_bmcv\_bmrt  | 多线程性能测试用例   ffmpeg/opencv解码+cv+bmcv+inference+后处理+jpg编码         | C / C++ | soc             |
| cpp\_cv\_cv+bmcv\_sail  | opencv解码（yuv i420输出）+ cv::bmcv预处理 +   bmcv预处理 + inference + 后处理 | C++     | soc             |
| cpp\_cv\_bmcv\_sail     | opencv解码（yuv i420输出）+   bmcv预处理 + inference + 后处理               | C++     | soc             |
| cpp\_ffmpeg\_bmcv\_sail | ffmpeg解码 （yuv压缩输出）+   bmcv预处理 + inference + 后处理                 | C++     | soc/pcie        |
| py\_ffmpeg\_bmcv\_sail  | ffmpeg解码 （yuv压缩输出）+   bmcv预处理 + inference + 后处理                 | python  | soc/pcie        |

本章主要用cpp\_cv\_bmcv\_bmrt和cpp\_ffmpeg\_bmcv\_bmrt，和cpp\_cv\_cv\_bmrt三个用例来做以下三种模式下的编译运行演示。以下示例演示默认用户已经按照第三章内容进行了bmodel的转换。

* soc模式用例演示
* pcie模式用例演示
* cmodel模式用例演示

## SOC模式用例演示

1. **解压sdk开发包并运行docker开发环境，本实例都基于此docker环境**

   ```
   $ tar –zxf  bmnnsdk2d-bm1684_v2.0.1.tar.gz
   $ cd bmnnsdk2-bm1684_v2.0.1
   $ ./docker_run_bmnnsdk.sh
   # cd scritps
   # ./install_lib.sh nntc
   ```
2. **实例代码编译：**

   ```
   # cd ../examples/SSD_object/cpp_cv_bmcv_bmrt/
   # make -f Makefile.arm clean && make -f Makefile.arm
   # make -f Makefile.arm install
   ```
3. **将install目录拷贝到soc单板进行测试：**

   ```
   **根据第三章转换的bmodel进行测试**
   **"SOC_BOARD_IP"字符串替换为实际的soc单板ip地址**
   # scp -r /workspace/install linaro@SOC_BOARD_IP:/data/
   # exit
   $ ssh linaro@SOC_BOARD_IP
   $ cd /data/install
   **float32模型测试**
   $ sudo ./bin/ssd300_cv_bmcv_bmrt.arm image res/ssd300/vehicle_1.jpg model/ssd300/fp32_ssd300.bmodel 1
   **int8模型测试** 
   $ sudo ./bin/ssd300_bmcv_object.arm image res/ssd300/vehicle_1.jpg model/ssd300/int8_ssd300.bmodel 1
   ```

## **PCIE模式用例演示**

1. **解压sdk开发包并运行docker开发环境，本示例都基于此docker环境**

   ```
   $ tar –zxf  bmnnsdk2d-bm1684_v2.0.1.tar.gz
   $ cd bmnnsdk2-bm1684_v2.0.1/scripts
   $ sudo ./install_driver_pcie.sh && cd ..
   $ ./docker_run_bmnnsdk.sh
   # cd scritps
   # ./install_lib.sh nntc
   # source envsetup_pcie.sh && cd ..
   # cd lib/ffmpeg/x86 && export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH && cd ../../../
   # cd lib/decode/x86 && export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH && cd ../../../
   # cd examples/sail/python3/x86 && pip3 install sophon-2.0.*-py3-none-any.whl
   ```
2. **实例代码编译及运行**

   ```
   # cd ../examples/SSD_object/cpp_ffmpeg_bmcv_bmrt/
   # make -f Makefile.pcie clean && make -f Makefile.pcie
   # make -f Makefile.pcie install
   # cd ../../../install
   **float32模型测试**
   # ./bin/ssd300_cv_cv_bmrt.pcie image res/ssd300/vehicle_1.jpg model/ssd300/fp32_ssd300.bmodel 1
   **int8模型测试**
   # ./bin/ssd300_cv_cv_bmrt.pcie image res/ssd300/vehicle_1.jpg model/ssd300/int8_ssd300.bmodel 1
   ```
3. **pcie状态监控**

   ```
   $ bm-smi   此命令用于检测pcie工作状态，tpu，mem使用率, 板卡温度等
   ```

## CMODEL模式用例演示

1. **解压sdk开发包并运行docker开发环境，本示例都基于此docker环境**   $ tar –zxf  bmnnsdk2d-bm1684\_v2.0.1.tar.gz

   ```
   $ tar –zxf  bmnnsdk2d-bm1684_v2.0.1.tar.gz
   $ cd bmnnsdk2-bm1684_v2.0.1
   $ ./docker_run_bmnnsdk.sh
   # cd scritps
   # ./install_lib.sh nntc && cd ..
   ```
2. **实例代码编译及运行**

   ```
   # cd examples/SSD_object/cpp_cv_cv_bmrt/
   # make -f Makefile.x86 clean && make -f Makefile.x86
   # make -f Makefile.arm f32
   此用例测试了float 32模型示例，运行成功会保存如下图片检测结果：
   out-0_vehicle_1.jpg
   ```

## 打包和发布

​ 待补充

## FAQ

​ 待补充

## 附录

​ BMNNSDK2-bm1684用户手册

Copyright © 2018 Bitmain Technologies. All Rights Reserved. 北京比特大陆科技有限公司
