千变万化

芯算未来

陈巍谈芯:目标检测网络SSD —《AI芯片设计:原理与实践》节选

存算一体芯片    原创技术文章    陈巍谈芯:目标检测网络SSD —《AI芯片设计:原理与实践》节选

《AI芯片设计:原理与实践》系列,适合AI芯片设计人员入门与芯片赛道投资人了解技术内涵。

■ 陈巍,资深芯片专家,人工智能算法-芯片协同设计专家,擅长芯片架构与存算一体

■ 耿云川,资深SoC设计专家,软硬件协同设计专家,擅长人工智能加速芯片设计

 

往期文章简选

■ Nature首发的三星存内计算芯片原理和不足是什么?

■ 存算一体技术及其最新发展趋势

 

    SSD(Single Shot multiBox Detector)算法是一种经典的直接检测目标类别和边界框(Bounding Box)的多目标检测算法。很多商用的目标检测/人脸识别算法借鉴了SSD的算法思路或部分计算结构。

目标检测(分类与边框检测)

 

3.5.1 SSD特点

    SSD具有如下结构特点和优缺点:

 

    结构特点1:与 SSD之前的Faster-RCNN等两阶段方法(2 Stage方法,即先生成预选框,再根据预选框进行分类)相比,SSD没有单独生成预选框(Proposal)的过程,这就极大提高了检测速度,使得SSD及其精简网络可以更好地在芯片上运行。

    通过公开数据集测试对比,相对于R-CNN、Fast-RCNN、YOLO(指第一代YOLO)这类常见的目标检测算法,SSD在精确度和检测速度上都有明显提升。与Faster-RCNN相比,在精确度损失不大情况下,SSD检测速度大大提高,体现出单阶段目标检测算法的速度优势。

 

    结构特点2:SSD算法直接在输出层进行回归计算,并结合了Faster-RCNN中的锚机制(Anchor机制),在网络的各个卷积层生成多尺度特征图,并在特征图的每个位置上生成了不同尺度和长宽比的Prior Box(先验框)进行预测。

    由于SSD没有残差结构,故SSD及其衍生结构在AI芯片资源较少的时候实现或部署相对方便。

 

    优点:SSD通过在不同网络层级选用不同尺度、不同比例的Anchor,能够找到与Ground Truth匹配最好的Anchor来进行训练,从而使整个结构的精确度更高。

 

    不足:SSD的不足是对小尺寸的目标识别仍不理想(大部分目标识别网络都有这一缺点),达不到Faster R-CNN的水准。这是因为小目标需用较低层级的Anchor来训练,而较低层级的特征非线性程度不够,无法满足训练精度的要求。

 

3.5.2 SSD网络结构

SSD300网络总体结构

 

    SSD原作者给了两种SSD结构,SSD300和SSD512,用于不同输入尺寸的图像识别。本文以SSD300为例介绍。

   SSD网络由三部分组成,包括VGG Backbone, Extra Layers和Multi-box Layers

 

    1)VGG Backbone(Backbone意为主干网络):在前端通过卷积神经网络提取图像特征。SSD的输入为300x300x3(输入特征图的长宽分别是300和300像素,3代表RGB三色)的图像,通过VGG Backbone(5层网络)处理为38x38x512(特征图的长宽分别是38和38像素,512个通道)的特征图。512通道可以理解为512种特征。

    与VGG-16相比,SSD的VGG Backbone去掉了VGG-16中的全连接层FC6、FC7,加入3×3卷积层Conv6和1×1卷积层Conv7,同时将池化层Pool5由原来的2×2且步长为2变成3×3且步长为1。

 

    2)Extra Layers:VGG Backbone后面是具有多尺度提取能力的卷积网络。通过逐步放大视野,来识别不同尺度的目标。

  SSD在Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2生成多尺度的特征图,特别是Conv4_3层后面增加了一个L2归一层,对每个像素点做归一化,尽量使这一层和后面卷积层生成的特征图在数值幅度上差异不大。

Extra Layer多尺度特征提取

 

    3)Multi-box Layers:生成卷积层的特征图后,需要对特征图进行卷积得到预测结果(6组多尺度提取网络),进行置信度(Conf)预测和边界框(Loc)定位预测,生成相应的分类信息(不同分类的置信度)和坐标信息(cx,cy,w,h)。

 

3.5.3 SSD算法细节

    Anchor机制(锚机制)是目标检测领域非常常见的一种技巧,在SSD原论文中,作者称之为默认框(Default Bounding Boxes)或先验框(Prior Box),即一些中心点和长宽固定的方形框的集合。每个Anchor中存储着位置信息(cx,cy,w,h)和分类信息。

    在SSD中不同尺度的特征图上的内置的Anchor尺度是不同的,浅的特征图负责检测小物体,较浅特征图的Anchor尺寸较小,而深的特征图负责检测较大物体,Anchor尺寸较大。

    SSD从Conv4_3开始,一共提取了6个特征图,其大小分别为 (38,38),(19,19),(10,10),(5,5),(3,3),(1,1),但是每个特征图上设置的先验框数量不同。

SSD中的先验框(Anchor)

 

    先验框的设置,包括尺度(或者说大小)和长宽比两个方面。对于先验框的尺度,其遵守一个线性递增规则:随着特征图大小降低,先验框尺度线性增加

    m指特征图个数,sk表示先验框大小相对于图片的比例;

    Smin和 Smax表示比例的最小值与最大值,一般取 0.2 和 0.9。

    先验框的长宽比一般设置为:

    在AI芯片中,先验框坐标可以在编译时以常量存储,减少AI芯片的浮点计算要求。

 

Reference:
D. A. Wei Liu, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg, "SSD:Single Shot MultiBox Detector," presented at the European Conference on Computer Vision, 2016.

 

《AI芯片设计:原理与实践》目录

(含设计实战)

 

1 概述 

    1.1 AI芯片的应用场景

    1.2 AI芯片的分类

    1.3 AI芯片设计基本流程

    Reference

2 AI芯片常用机器学习模型

    2.1 线性模型 

    2.2 分类算法SVM 

        2.2.1 线性分类器及其求解 

        2.2.2 核函数 

        2.2.3 松弛变量 

    2.3 分类算法贝叶斯网络 

        2.3.1 贝叶斯定理 

        2.3.2 贝叶斯网络结构 

    Reference 

3 AI芯片常用深度学习模型 

    3.1 基础知识 

        3.1.1 全连接 

        3.1.2 卷积 

        3.1.3 激活函数 

    3.2 图像分类网络AlexNet 

        3.2.1 AlexNet特点 

        3.2.2 AlexNet网络结构 

    3.3 图像分类网络ResNet 

        3.3.1 ResNet特点 

        3.3.2 ResNet网络结构 

        3.3.3 ResNet算法细节 

    3.4 目标检测网络Faster-RCNN 

        3.4.1 RCNN与Fast-RCNN 

        3.4.2 Faster-RCNN特点 

        3.4.3 Faster-RCNN算法结构 

    3.5 目标检测网络SSD 

        3.5.1 SSD特点 

        3.5.2 SSD网络结构 

        3.5.3 SSD算法细节 

    3.6 目标检测网络YOLOv5 

        3.6.1 YOLOv5特点 

        3.6.2 YOLOv5网络结构 

        3.6.3 YOLOv5算法细节 

    3.7 自然语言处理网络BERT 

        3.7.1 BERT特点 

        3.7.2 Attention机制 

        3.7.3 Transformer 

        3.7.4 Bert网络结构 

        3.7.5 Bert算法细节 

    3.8 图像分类网络SqueezeNet 

        3.8.1 SqueezeNet特点 

        3.8.2 SqueezeNet网络结构 

    3.9 图像分类网络MobileNet 

        3.9.1 MobileNet特点 

        3.9.2 MobileNet网络结构 

    3.10 蛋白质求解网络AlphaFold2 

        3.10.1 AlphaFold2特点 

        3.10.2 AlphaFold2网络结构 

        3.10.3 AlphaFold2算法细节 

    Reference 

4 AI加速电路设计 

    4.1 卷积计算加速 

        4.1.1 传统MAC阵列设计 

        4.1.2 基于存算一体技术的MAC阵列设计 

        4.1.3 数据-电路映射结构 

    4.2 池化加速 

    4.3 激活函数加速 

    4.4 Softmax加速 

    4.5 BatchNormal加速 

5 GPU架构 

    5.1 基本架构 

    5.2 NVDLA解读 

        5.2.1 两种实现模型的比较 

        5.2.2 NVDLA结构 

        5.2.3 NVDLA主要模块 

    Reference 

6 DSA架构 

    6.1 基本架构 

    6.2 谷歌TPU 

    6.3 海思达文西 

    6.4 Wave Computing 

    Reference 

7 可重构架构 

    7.1 传统可重构 

    7.2 软件定义的可重构 

    7.3 DSP电路结构 

    Reference 

8 存算一体架构 

    8.1 存算一体架构的分类 

    8.2 近存计算 

    8.3 基于SRAM/DRAM的存内计算 

    8.4 基于FLASH的存内计算 

    8.5 基于新型NVM的存内计算 

    8.6 内存逻辑 

    8.7 可重构存算 

    Reference 

9 适用AI芯片的量化与稀疏化技术 

    9.1 量化技术 

    9.2 稀疏化技术 

    Reference 

10 AI芯片编译器设计  

    10.1 主流AI编译器概况  

    10.2 专用编译器设计流程  

    10.3 通用AI编译器设计流程  

    10.4 泛AI编译器设计流程  

    Reference  

11 AI芯片的未来  

    11.1 AI芯片应用与落地趋势  

    11.2 AI芯片架构发展趋势  

    11.3 AI芯片市场发展现状与趋势  

    Reference  

12 基于FPGA的图像分类AI加速器设计实战

    12.1 架构设计实战

    12.2 MAC阵列设计实战  

    12.3 Softmax加速设计实战  

    12.4 数据流-存储-计算协同优化实战

 

END

 

 

 

2022年2月26日 00:02
收藏