-
为了能够很好地支持传统的计算机视觉和新兴的深度学习算法,文中首先详细分析了它们的运算特点,总结了实现这两类算法所需要的运算模式[5, 11]。
如图1(a)所示,传统的计算机视觉算法可以分解为三个运算层次。
(1)低层次处理—对图像进行滤波、边缘、纹理、角点检测等处理。典型的滤波计算如下:
$${{y}}(i,j) = \sum\limits_n^{} {\sum\limits_m^{} {I(i+m,j+n)*w(m,n)} } {{ +b}}$$ (1) 式中:I是输入图像;w,b分别是是滤波核的系数和偏置;m,n为对应的下标。每个像素和它周围3×3或者5×5邻域内的像素进行算术或者逻辑运算,每个点都可以独立计算,具有计算量大并行度高的特点。
(2) 中层次处理—对图像某一块区域进行信息统计,比如直方图、积分图统计。通常是把低层次处理后的图像分成若干区域进行,以8×8或者16×16大小的图像块为单位分别统计直方图之后得到特征向量。中层次处理的所需的运算较低层次处理更为复杂,但是并行度次之。
(3) 高层次处理—对特征向量进行分类,涉及到图像或者目标的整体信息,使用分类器判决图像是否属于要检测的目标类别。高层次处理运算最复杂但是并行度最低。一个典型的对输入向量
$x$ 进行二分类的支持向量机运算如下:$${{y}} = \sum\limits_{{i}} {{a_i}{y_i}K({x_i},x)} {{+b}}$$ (2) 式中:
${x_i}$ 是分类器的支持向量;${a_i}$ 和${y_i}$ 是支持向量的系数和标签,都由训练得到。对于最常用的线性核函数$K({x_{{i}}},x){\rm{ = }}x_i^{\rm{T}}x$ ,公式(2)可以写成:$${{y = }}{{{w}}^{\rm{T}}}{{x+b}}$$ (3) 式中:
${{w}} = \sum {{a_i}{y_i}{x_i}} $ ,主要的运算是向量内积。如果是多分类任务则会有多个分类器联合使用。图1(b)给出了卷积神经网络算法的运算模式。卷积神经网络(CNN)主要由卷积层(Convolution Layer, Conv)、激活层(Activation Layer, Act)、池化层(Pooling Layer)和全连接层(Fully Connected Layer, FC)构成。通过反复使用卷积、激活、池化层来逐层进行信息的提取和抽象,最后用全连接层来进行分类。卷积层运算公式为:
$${{y}}(i,j) = \sum\limits_c^{} {\sum\limits_n^{} {\sum\limits_m^{} {I(i+m,j+n,c)*w(m,n,c)} } } {{ +b}}$$ (4) 式中:c为图像通道(channel),除了在通道方向上进行累加外,卷积的运算模式和传统算法中的低层次处理滤波是一样的,可以逐个通道进行二维卷积公式(1)再相加即可得到公式(4)。
激活层一般用在卷积层后面,主要是对卷积结果进行非线性处理,最常见的ReLU函数,只需要判断卷积结果的正负,更复杂的Sigmoid或者tanh函数可以使用分段线性函数来逼近模拟。池化层是把图像划分为若干区域,计算每个区域中的平均值或者最大值,与中层次处理类似,都是以图像块为单位进行信息统计。
全连接层是实现向量和矩阵相乘,它的输入x是一个n维向量,输出是一个m维向量,那么全连接层的系数w是一个m*n的矩阵,偏置b是一个m维向量:
$${{y}} = w{{x+b}}$$ (5) 其运算模式和传统算法中的分类器类似,可以分解成若干个向量内积:
$${{{y}}_i} = w_i^{\rm{T}}{{x+}}{{{b}}_i} \;\;\;\; i = 0,1 \cdots m - 1$$ (6) 通过对公式(1)~(6)的分析,可以看到深度神经网络与传统的计算机视觉算法存在很多相似的运算模式,文中提出的新型视觉芯片架构充分利用这一特点,通过编程实现运算功能的重构,使得视觉芯片不仅能够兼容传统的基于人工选取特征和分类器的计算机视觉算法,而且能够高效地支持卷积神经网络等深度学习算法。
-
文中提出了一种新型的基于多层次并行的可编程视觉处理芯片架构。图2是视觉芯片的整体架构图,整个芯片主要由图像计算阵列、数据传输通路和总体控制系统三大部分构成。图像计算阵列由多层次的并行处理单元和相应的存储器以及片上互联网络(Network on Chip, NoC)组成,主要负责完成各种算法的运算。数据传输通路主要由高速IO接口、片上IO数据缓存(Input/Output Buffer)和高速直接存储器存取(Direct Memory Access,DMA)构成,能够完成高速的片上/片下数据传输。RISC32微处理器和系统总线以及其他相关模块是整个芯片的控制系统,指挥数据通路和计算阵列协同工作。整个视觉芯片是一个功能完整的视觉处理系统,具有高速低功耗、灵活可编程的特点,适合应用于对功耗、尺寸、实时性有较高要求的边缘计算等场合。
视觉处理系统的数据带宽要求非常高,由于很多应用场景都对图像传感器有特殊的要求,视觉芯片设计了高速的图像数据传输接口。芯片一共有64个数据输入和64个数据输出管脚,管脚的工作频率为50 MHz。芯片其他部分的设计工作频率为200 MHz,利用两块IO数据缓存作为异步FIFO进行数据跨时钟域传递。图像数据输入芯片之后先存放在Input Buffer中,然后用高速DMA模块把图像搬运到计算阵列中,开始进行图像数据的处理。计算阵列完成对图像的处理之后,DMA模块再把处理结果从计算阵列搬到Output Buffer,输出到片外。
计算阵列是视觉芯片进行图像数据运算的主要模块。如图2所示,整个计算阵列被分成了16组,每组被称为一个计算簇(Computation Cluster)。每一个计算簇主要包含:一个块处理单元(Patch Processing Unit, PPU)、32个互相连接的PE(Processing Element)单元以及它们共享的本地存储器(Local Memory)。图像数据进入处理阵列后会均匀分成32×32的小块分发到每个计算簇的本地存储器中,然后处理单元从本地存储器中读取数据进行运算。
计算簇的具体运算功能均由指令控制,视觉芯片的指令集采用了精简指令集的设计模式,并针对图像常用的运算进行了优化和改进。指令主要包含数据加载存储、数据运算和分支跳转三种功能,从处理并行度上分为标量和向量指令两种类型。块处理单元(PPU)是标量处理单元,功能比较灵活,能够获取32×32图像块中任意数据并进行计算。32个PE构成向量处理单元,与一行图像32个像素一一对应,因此PE又被称为像素级处理器。32个PE工作在单指令多数据(Single Instruction Multiple Data, SIMD)模式下,可以进行并行计算。
不同的计算簇也是工作在SIMD模式下,其中一个计算簇读取指令后分发给其他的计算簇。每个计算簇处理的是图像的不同部分或者卷积神经网络中不同的特征图映射(feature map),各个计算簇之间由NoC模块连接,可以广播或者交换数据,进行协同计算。
-
(1)多层次并行的处理模式
计算阵列中的处理单元按照算法的需求来设计,计算簇中的向量处理器适合进行像素级并行处理,不同计算簇中的标量处理器在处理不同的图像块,构成了另一个多个层次的并行。整个视觉芯片上一共有16个块级处理器和512个像素级处理器。RISC32微处理器除了控制系统之外还具有获取全局数据和进行复杂运算的能力,和计算簇中的块级处理器(PPU)、像素级处理器(PE)一起构成了多层次并行的处理阵列。不同层次的处理单元具有的计算能力和并行度是不同的,可以根据算法中不同层次的并行度需求进行调度。
(2)动态可编程的运算功能
不管是传统的计算机视觉还是深度学习,算法都在不断地发展和变化,而在实际应用中也经常需要根据使用场景对准确率、速度的要求来选择使用的算法。整个计算阵列中的处理单元都是可编程的处理器核,其运算功能和连接状态都可以根据指令改变。通过基础指令的不同组合来实现不同的算法,可编程设计灵活地进行运算资源的动态配置,在不明显增加资源的情况下实现了对多种算法的支持。
(3)高速灵活的数据传输
受限于片上存储的容量,通常输入图像的尺寸为128×128像素。如果要处理尺寸较大的图像或者参数较多的神经网络,需要把图像或者网络进行切分。比如在大图上使用滑动窗口逐块地处理或者是在计算卷积神经网络时逐层把参数传输进来计算。在处理第一帧数据的同时,芯片可以接收第二帧数据的输入。这样数据的传输和数据处理可以流水进行,隐藏了计算阵列等待数据的时间,图像处理结果的输出同理,整个传输和计算的调度由RISC32微处理器和系统总线进行控制。
-
可编程视觉芯片采用1P9M 65 nm CMOS工艺制成,芯片大小为4 mm×6 mm,其显微照片如图7所示。芯片周围是电源/地线、数据传输和控制信号管脚,16个计算簇对称地排放,中间则是数据通路以及控制系统。
经测试,芯片在1 V标准供电电压下运行频率达到200 MHz,在进行乘法器利用率最高的卷积神经网络计算时功耗仅1.07 W。表1列出了该芯片的重要性能参数。当进行16 bit精度运算时,芯片峰值运算性能达到208GOPS。采用8 bit精度运算时,芯片峰值运算性能则可到达413GOPS。
表 1 视觉芯片参数
Table 1. Vision chip parameters
Technology 65 nm 1P9M Size 4 mm×6 mm Core frequency 200 MHz Processing unit 1+16+512 Operand bit-width 2×8-bit fixed / 16-bit fixed Peak performance 413GOPS@8b / 208GOPS@16b Peak power 1.07 W I/O bandwidth 3.2 Gbps (duplex) -
基于前面对算法模式的分析,该节采用一些应用算法对视觉芯片进行系统级的性能测试。为了体现视觉芯片的可编程性,分别选取了使用传统识别算法、深度学习算法和两者联合使用的应用对视觉芯片进行算法测试。
-
图8给出了基于LBP(Local Binary Pattern)特征和Adaboost分类器的人脸检测流程和测试结果。图8(a)展现了一个典型的包含特征生成、特征提取以及特征分类三个步骤的传统目标检测算法。首先在3×3的窗口内,每个中心像素与周围八个像素比较大小,生成8 bit的LBP值;然后按16×16的图像块统计LBP直方图,形成特征向量;最后使用Adaboost分类器判别是否为人脸。计算LBP值、统计直方图和分类器分别对应低、中、高层次的处理,在视觉芯片上均可以高效支持。目标搜索框的大小为64×64,以步长为16像素在128×128的图像中移动进行检测,在判别过程中如果有多个重叠度大于0.5的搜索框都判定为人脸,则选取分类器响应最大的候选框作为检测结果。在检测的过程中LBP值和分块直方图都只需要计算一次,选择搜索框中的直方图作为特征向量进行分类即可。计算整张图LBP值和直方图分别需要大约2 400和1 600个周期。逐个搜索组合特征向量进行分类一共需要6 000个周期,再加上最后筛选结果并输出,计算一幅图像大约12 000个时钟周期,检测速度超过16 000 fps。
-
图9给出了基于cifar10数据集的CNN分类网络。网络采用16 bit定点参数,预先线下训练好参数并进行定点化,为了适应硬件实现的特点,激活函数采用简单的ReLU函数,只需要判断卷积结果的正负,池化层都采用两倍下采样,这样卷积神经网络中的每一种操作视觉芯片都能高效支持。在计算卷积的过程中,输入的图像尺寸是32×32,对于不同的卷积核,每个计算簇可以计算一个feature map,随着池化层的加入,尺寸缩小,每个计算簇可以同时计算两个或四个feature map。经测试对于32×32的RGB图像,计算四层卷积和两层全连接的网络需要大约26 000个时钟周期,处理速度达到7 000 fps。
-
在海洋遥感图像中视野非常宽广,大部分是海面和云层,目标的占比很小。采用传统的方法准确率比较低,如果全部采用卷积神经网络检测效率太低,速度太慢。文中设计了一种两级级联检测的方法,如图10所示,首先用传统的梯度和角点检测,设置合适的阈值筛掉大部分没有什么亮度变化的平静海面和大片云层,提取出可能存在船只的感兴趣区域(region of interest,ROI),然后对留下来的部分使用CNN进行精细分类,辨别是否是为船只。这样的混合算法速度比全图使用CNN搜索检测更快而准确率基本保持不变。图10展示了在遥感图像中进行船只检测的算法流程和测试结果。
-
测试结果表明,文中提出的视觉芯片确实能实现从图像预处理到特征提取再到特征分类的完整视觉处理流程,而且可以通过编程灵活实现不同的算法应用,达到实时检测的系统性能。表2列出了一些相关的视觉芯片和神经网络加速器芯片的参数对比。
表 2 与其他相关工作的对比
Table 2. Comparison with related work
References This work Ref [5] Ref [12] Ref [13] Ref [14] Technology/nm 65 180 130 65 65 Core area/mm2 4×6 9.8×8.4(include sensor) 187 4×4 4×4 Frequency/MHz 200 50 80 200 250 On-chip SRAM 320 kB 32 kB 236 kB 192 kB 282 kB Bit-width(fixed) 1/8/16 1~16 8 16 16 Traditional computer vision Filter, corner detection
Histogram
SVM/AdaboostFilter, corner detection Histogram Filter(enhance, morphology) N/A N/A Convolution neural network Conv
Pooling
FCSOM neural(FC) Conv Conv Conv
Pooling
FCPeak performance 413GOPS@8b 208GOPS@16b 14GOPS@8b 61GOPS@8b 67GOPS@16b 32GOPS@16b Energy-efficiency (GOPS/W) 194 @16b 44 @8b(processor array) 85 @8b 166 @16b 208 @16b 通过表2可以看出,与近年来所报道的其他视觉芯片相比,文中所提出的视觉芯片架构在片上存储容量、算法支持和峰值运算能力上有明显优势。特别是在对算法多样性的支持方面,除了能够很好地保留以往视觉芯片支持的传统计算机视觉算法之外,还能高效地支持卷积神经网络等深度学习算法,即使与一些专用的神经网络加速器相比,能耗效率依然不落后。文中提出的视觉芯片在可编程性、运算性能以及功耗效率等方面都超过了其他视觉芯片。
A high speed programmable vision chip for real-time object detection
-
摘要: 视觉芯片是一种高速、低功耗的智能视觉处理系统芯片,在生产生活中有广阔的应用前景。文中提出了一种新型的可编程视觉芯片架构,该架构的设计考虑了传统计算机视觉算法和卷积神经网络的运算特点,使其能够同时高效地支持这两类算法。该视觉芯片集成了可编程的多层次并行处理阵列、高速数据传输通路和系统控制模块,并采用65 nm标准CMOS工艺制程流片。测试结果表明:视觉芯片在200 MHz系统时钟下达到413GOPS的峰值运算性能,能够高效地完成包括完成人脸识别、目标检测等多种计算机视觉和人工智能算法。该视觉芯片在可编程度、运算性能以及能耗效率等方面都大大超越了其他视觉芯片。Abstract: Vision chip is a high-speed, low-power intelligent vision processing system on a chip (SoC), it can be applied to many different fields of production and daily life. A new programmable vision chip architecture was proposed which took into account the computational features of traditional computer vision algorithms and convolutional neural networks, it enabled the architecture to support the two types of algorithms simultaneously. The vision chip integrated multi-level parallel programmable processing array, high-speed data transmission path and system control module, it was fabricated in a 65 nm standard CMOS process. The experimental results show that the vision chip achieves 413GOPS peak performance at 200 MHz system clock and can perform various computer vision and artificial intelligence algorithms including face recognition and target detection efficiently. The proposed work shows higher system performance in terms of programmability, performance and energy efficiency when compared with other state-of-the-art vision chips.
-
表 1 视觉芯片参数
Table 1. Vision chip parameters
Technology 65 nm 1P9M Size 4 mm×6 mm Core frequency 200 MHz Processing unit 1+16+512 Operand bit-width 2×8-bit fixed / 16-bit fixed Peak performance 413GOPS@8b / 208GOPS@16b Peak power 1.07 W I/O bandwidth 3.2 Gbps (duplex) 表 2 与其他相关工作的对比
Table 2. Comparison with related work
References This work Ref [5] Ref [12] Ref [13] Ref [14] Technology/nm 65 180 130 65 65 Core area/mm2 4×6 9.8×8.4(include sensor) 187 4×4 4×4 Frequency/MHz 200 50 80 200 250 On-chip SRAM 320 kB 32 kB 236 kB 192 kB 282 kB Bit-width(fixed) 1/8/16 1~16 8 16 16 Traditional computer vision Filter, corner detection
Histogram
SVM/AdaboostFilter, corner detection Histogram Filter(enhance, morphology) N/A N/A Convolution neural network Conv
Pooling
FCSOM neural(FC) Conv Conv Conv
Pooling
FCPeak performance 413GOPS@8b 208GOPS@16b 14GOPS@8b 61GOPS@8b 67GOPS@16b 32GOPS@16b Energy-efficiency (GOPS/W) 194 @16b 44 @8b(processor array) 85 @8b 166 @16b 208 @16b -
[1] Sonka M, Václav Hlavác, Boyle R. Image Processing, Analysis and Machine Vision[M]. New York: Cengage Learning, 2014. [2] Ishikawa M, Ogawa K, Komuro T, et al. A CMOS vision chip with SIMD processing element array for 1 ms image processing[C]//IEEE Int Solid-State Circuits Conf, 1999: 206-207. [3] Miao W, Lin Q, Zhang W, et al. A programmable SIMD vision chip for real-time vision applications [J]. IEEE Journal of Solid-State Circuits, 2008, 43(6): 1470−1479. doi: 10.1109/JSSC.2008.923621 [4] Zhang W, Fu Q, Wu N. A programmable vision chip based on multiple levels of parallel processors [J]. IEEE Journal of Solid-State Circuits, 2011, 46(9): 2132−2147. doi: 10.1109/JSSC.2011.2158024 [5] Shi C, Yang J, Han Y, et al. A 1000 fps vision chip based on a dynamically reconfigurable hybrid architecture comprising a PE array and self-organizing map neural network[C]//2014 IEEE International Solid-State Circuits Conference Digest of Technical Papers (ISSCC), 2014: 128-129. [6] Yamazaki T, Katayama H, Uehara S, et al. 4.9 A 1 ms high-speed vision chip with 3D-stacked 140GOPS column-parallel PEs for spatio-temporal image processing[C]//2017 IEEE International Solid- State Circuits Conference (ISSCC), 2017: 82-83. [7] Yang J, Yang Y, Chen Z, et al. A heterogeneous parallel processor for high-speed vision chip [J]. IEEE Transactions on Circuits and Systems for Video Technology, 2018, 28(3): 746−758. doi: 10.1109/TCSVT.2016.2618753 [8] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in Neural Information Processing Systems. 2012: 1097-1105. [9] Sze V, Chen Y, Yang T, et al. Efficient processing of deep neural networks: A tutorial and survey [J]. Proceedings of the IEEE, 2017, 105(12): 2295−2329. doi: 10.1109/JPROC.2017.2761740 [10] Chen T, Du Z, Sun N, et al. Diannao: A small-footprint high-throughput accelerator for ubiquitous machine-learning [J]. ACM Sigplan Notices, 2014, 49(4): 269−284. [11] Liu D, Chen T, Liu S, et al. Pudiannao: A polyvalent machine learning accelerator[C]//ACM SIGARCH Computer Architecture News. ACM, 2015, 43(1): 369-381. [12] Millet L, Chevobbe S, Andriamisaina C, et al. A 5500FPS 85GOPS/W 3D stacked BSI vision chip based on parallel in-focal-plane acquisition and processing[C]//2018 IEEE Symposium on VLSI Circuits. IEEE, 2018: 245-246. [13] Chen Y, Krishna T, Emer J, et al. 14.5 Eyeriss: An energy-efficient reconfigurable accelerator for deep convolutional neural networks[C]//2016 IEEE International Solid-State Circuits Conference (ISSCC). IEEE, 2016: 262-263. [14] Jo J, Cha S, Rho D, et al. DSIP: A scalable inference accelerator for convolutional neural networks [J]. IEEE Journal of Solid-State Circuits, 2017, 53(2): 605−618.