模型推理: SSD 目标检测

模型推理: SSD 目标检测

本实验主要介绍基于寒武纪MagicMind平台的Caffe-SSD目标检测推理应用的开发方法和性能优化。
难易程度: 中级|实验人次:1793

一、内容和目标

 

1. 实验内容

  1. 本实验主要介绍基于寒武纪 MLU370 MagicMind平台的Caffe-SSD目标检测推理应用的开发方法和性能优化,其中性能优化操作包括Int8量化,本实验中Caffe-SSD采用的backbone为VGG,输入尺寸为300x300。

  2. 基于Caffe-SSD检测网络和寒武纪MLU370 MagicMind平台,您可以读取本地图像数据作为输入,对图像数据中的目标物体进行时识别,得到物体的在图像中的坐标、置信度以及类别。

 

2. 实验目标

  1. 掌握使用寒武纪MLU370 MagicMind平台进行AI模型推理的基本方法。

  2. 理解SSD模型的整体网络结构及其开发调试细节。

 

二、前置知识

 

1. 寒武纪软硬件平台介绍

  • 硬件:寒武纪MLU370系列AI加速卡

  • 框架:Caffe、MagicMind 0.14.0

 

2. MagicMind 介绍

MagicMind 是⾯向寒武纪 MLU370 (寒武纪处理器,简称MLU) 的推理加速引擎。 MagicMind 能将人工智能框架(TensorFlow, PyTorch,Caffe 等)训练好的算法模型转换成 MagicMind 统⼀计算图表示,并提供端到端的模型优化、代码生成以及推理业务部署能力。用户无需过多关注底层硬件细节,只需专注于推理业务开发。

获取更多有关 MagicMind 资料,请参考寒武纪官网文档MagicMind相关内容。

 

三、网络结构

SSD算法的全名是Single Shot MultiBox Detector,Single shot指明了SSD算法属于one-stage方法,MultiBox指明了SSD是多框预测。对于Faster R-CNN,先通过CNN得到候选框,然后进行分类和回归,而YOLO和SSD可以一步完成检测,SSD的特点是:

SSD提取了不同尺度的特征图来做检测,大尺度特征图可以用来检测小物体,而小特征图用来检测大物体;

SSD采用了不同尺度和长宽比的先验框Anchors,原理图如下:

 

 其中:

  • Conv代表卷积操作;

  • ReLU代表ReLU激活函数;

  • Pool代表池化操作;

  • Norm代表Normalize操作;

  • FC代表全连接层;

  • Concat表示Concat操作;

  • Priorbox、Location、Classes表示三个预测头数据;

  • Reshape表示Reshape操作。

 

四、模型推理

模型推理整体流程如下图所示,主要包含模型工程准备,模型生成和模型推理三部分。

 

STEP 1:  工程准备

  1. 下载SSD预训练权重,并将其解压后放置于Caffe_model目录下,可执行bash prepare.sh来自动下载并解压。

  2. 准备好待测试的数据集放入images目录下。

 

STEP 2: 模型生成

  1. MagicMind Parser目前已支持Caffe模型,准备好下载的 .caffemodel.prototxt文件。

  2. MagicMind 支持直接导入框架训练好的模型,并表示成 Network对象。模型导入⼯作由Parser来完成,Network可以表示⼀个神经⽹络,它由Node和Tensor组成,Node表示具体的运算,如Convolution或是while循环等控制,Tensor表示Node的输入输出。Tensor中记录了输入输出的属性,包括数据类型、形状、名字等,MagicMind 提供了BuilderConfig来配置Builder的行为,通过BuilderConfig,用户可配置硬件平台,输入摆数,归一化参数等信息。

  3. MagicMind 提供了量化校准器(Calibrator),它支持 post-training 量化功能,能够基于浮点模型和样本数据计算并设置数据的分布范围,并且可以根据权重数据的分布特点,选择不同的量化粒度。

  4. 调用MagicMind的build_model接口生成模型,build_model生成的模型中包含MLU指令、权值、图结构等静态数据,生成的模型可以序列化到文件或内存,或从文件或内存反序列化,从而满足跨平台部署需求。

 

STEP 3: 模型推理

  1. 前处理:SSD模型的前处理主要是模型的减均值和BGR2RGB操作。

  2. 利用 MagicMind 进行推理:

    3. 后处理:MagicMind处理完后,还需要在CPU上坐标映射回原图操作,NMS操作已经在MLU上完成。

 

五、相关链接

实验代码仓库:https://gitee.com/cambricon/practices

Modelzoo仓库:https://gitee.com/cambricon/modelzoo

申 请 试 用