3.1. 前言

3.1.1. Demo 摘要

我们准备了一系列示例程序以便让你更加快速地熟悉并使用 Sophon Inference。 每个示例程序都提供了 c++ 和 python 的版本以供参考。 示例程序分为4个类别,分别对应4种应用:

cls_resnet(基于resnet50的图像分类)

det_ssd(基于ssd300-vgg16的目标检测)

det_yolov3(基于yolov3的目标检测,多路视频)

det_mtcnn(基于mtcnn的人脸检测)

在每类示例程序中,我们也会使用不同的实现方案以应对各种具体的需求,见后续表格。 表中各示例程序的属性含义如下:

Binary: 可执行程序(c++)或脚本(python)的名称。

Input: 输入的数据类型,图像或者视频。

Decoder: 解码图像或者视频使用的依赖库,除 opencv 外,其余模块均调用 TPU 上的硬件单元进行计算。

Preprocessor: 图像预处理或张量计算的依赖库,除 opencv 外,其余模块均调用 TPU 上的硬件单元进行计算。

Data Type: bmodel 的数据类型,fp32 或 int8.

Model: 示例程序中使用的深度学习模型名称。

Mode: 动态或者静态模式,静态代表 bmodel 的输入张量尺寸不可变,动态代表可变。

Model Number: 示例程序同时加载的模型数量。

TPU Number: 示例程序同时使用的 TPU 数量。

Batch Size: 模型输入张量的 batch 大小。即,N 维度。

Multi Thread:: 示例程序使用的线程数量。

Binary

Input

Decoder

Preprocessor

Data Type

Model

cls-resnet-0

image

opencv

opencv

fp32 int8

resnet-50

cls-resnet-1

image

opencv

opencv

fp32 int8

resnet-50

cls-resnet-2

image

opencv

opencv

fp32 int8

resnet-50

cls-resnet-3

image

opencv

opencv

fp32 int8

resnet-50

det-ssd-0

video image

opencv

opencv

fp32 int8

ssd300-vgg16

det-ssd_1

video image

bm-ffmpeg

bmcv

fp32 int8

ssd300-vgg16

det-ssd-2

video image

bm-ffmpeg

bmcv

fp32 int8

ssd300-vgg16

det-ssd-3

video image

bm-opencv

bm-opencv

fp32 int8

ssd300-vgg16

det-ssd-4

video image

bm-opencv

bmcv

fp32 int8

ssd300-vgg16

det-yolov3-0

multi-video

opencv

opencv

fp32 int8

yolov3

det-yolov3-1

multi-video

bm-ffmpeg

bmcv

fp32 int8

yolov3

det-mtcnn

image

opencv

opencv

fp32

MTCNN

Binary

Mode

Model Number

TPU Number

Batch Size

Multi-Thread

cls-resnet-0

static

1

1

1

N

cls-resnet-1

static

1

1

1

Y

cls-resnet-2

static

2

1

1

Y

cls-resnet-3

static

1

2

1

Y

det-ssd-0

static

1

1

1

N

det-ssd_1

static

1

1

1

N

det-ssd-2

static

1

1

4

N

det-ssd-3

static

1

1

1

N

det-ssd-4

static

1

1

1

N

det-yolov3-0

static

1

1

1

Y

det-yolov3-1

static

1

1

1

Y

det-mtcnn

dynamic

1

1

1

N

3.1.2. 返回值

我们也定义了一个返回值列表,供调试参考。

ret

meaning

0

normal

1

comparing failed

2

invalid tpu id

3.1.3. 测试验证

我们提供了自动化的测试脚本,以通过编译运行examples/sail下的示例程序来验证SAIL模块的开发运行环境已被正确配置。

For PCIe in x86_docker:

cd  /workspace/examples/sail/sc5_tests
./auto_test.sh

For SE5:

# 需要先将${BMNNSDK}/examples/sail/se5_tests目录拷贝至SE5盒子中的/data/examples/sail目录下
cd  /data/examples/sail/se5_tests
./scripts/auto_test.sh

本节后续测试均以PCIe模式下的SC5为例,应当在开发docker容器中执行。

切换工作目录:

cd /workspace/examples/sail/sc5_tests