racnn的实现源码(RAN开发)
本文目录一览:
论文解读:细粒度分类---SCDA、RA-CNN
我们在路边看到萌犬可爱至极,然后却不知道这个是哪种狗;看见路边的一个野花却不知道叫什么名字,吃着一种瓜,却不知道是甜瓜还是香瓜傻傻分不清……
细粒度图像分析任务相对通用图像任务的区别和难点在于其图像所属类别的粒度更为精细。
细粒度分类目前的应用场景很广泛,现在的网络大多分为有监督的和半监督的。
有监督的做法基于强监督信息的细粒度图像分类模型,是在模型训练时,为了获得更好的分类精度,除了图像的类别标签外,还使用了物体标注框(bounding box)和部位标注点(part annotation)等额外的人工标注信息。
基于弱监督信息的细粒度图像分类模型,基于强监督信息的分类模型虽然取得了较满意的分类精度,但由于标注信息的获取代价十分昂贵,在一定程度上也局限了这类算法的实际应用。因此,目前细粒度图像分类的一个明显趋势是,希望在模型训练时仅使用图像级别标注信息,而不再使用额外的part annotation信息时,也能取得与强监督分类模型可比的分类精度。
了解了大体的做法,我将从一些paper入手,讲解目前细粒度图像分析的具体实现。
是基于深度学习的细粒度图像检索方法。在SCDA中,细粒度图像作为输入送入Pre-Trained CNN模型得到卷积特征/全连接特征,如下图所示。
区别于传统图像检索的深度学习方法,针对细粒度图像检索问题,作者发现卷积特征优于全连接层特征,同时创新性的提出要对卷积描述子进行选择。
不过SCDA与之前提到的Mask-CNN的不同点在于,在图像检索问题中,不仅没有精细的Part Annotation,就连图像级别标记都无从获取。这就要求算法在无监督条件下依然可以完成物体的定位,根据定位结果进行卷积特征描述子的选择。对保留下来的深度特征,分别做以平均和最大池化操作,之后级联组成最终的图像表示。
很明显,在SCDA中,最重要的就是如何在无监督条件下对物体进行定位。
通过观察得到的卷积层特征,如下图所示,可以发现明显的"分布式表示"特性。
对两种不同鸟类/狗,同一层卷积层的最强响应也差异很大。如此一来,单独选择一层卷积层特征来指导无监督物体定位并不现实,同时全部卷积层特征都拿来帮助定位也不合理。例如,对于第二张鸟的图像来说,第108层卷积层较强响应竟然是一些背景的噪声。
基于这样的观察,作者提出将卷积特征(HxWxD)在深度方向做加和,之后可以获得Aggregation Map(HxWx1)。
在这张二维图中,可以计算出所有HxW个元素的均值,而此均值m便是该图物体定位的关键:Aggregation Map中大于m的元素位置的卷积特征需保留;小于的则丢弃。
这一做法的一个直观解释是,细粒度物体出现的位置在卷积特征张量的多数通道都有响应,而将卷积特征在深度方向加和后,可以将这些物体位置的响应累积--有点"众人拾柴火焰高"的意味。
而均值则作为一把"尺子",将"不达标"的响应处标记为噪声,将"达标"的位置标为物体所在。而这些被保留下来的位置,也就对应了应保留卷积特征描述子的位置。
实验中,在细粒度图像检索中,SCDA同样获得了最好结果;同时SCDA在传统图像检索任务中,也可取得同目前传统图像检索任务最好方法相差无几(甚至优于)的结果,如下图所示。
RA-CNN算法不需要对数据做类似bounding box的标注就能取得和采用类似bounding box标注的算法效果。在网络结构设计上主要包含3个scale子网络,每个scale子网络的网络结构都是一样的,只是网络参数不一样,在每个scale子网络中包含两种类型的网络:分类网络和APN网络。
数据流是这样的:输入图像通过分类网络提取特征并进行分类,然后attention proposal network(APN)网络基于提取到的特征进行训练得到attention区域信息,再将attention区域crop出来并放大,再作为第二个scale网络的输入,这样重复进行3次就能得到3个scale网络的输出结果,通过融合不同scale网络的结果能达到更好的效果。
针对分类网络和APN网络设计两个loss,通过固定一个网络的参数训练另一个网络的参数来达到交替训练的目的.
如下图所示,网络能够逐渐定位attention area,然后再将此区域放大,继续作为第二个scale网络的输入。
一种基于FPGA的感知量化卷积神经网络加速系统设计
姓名:姬怡希
学号:19020100037
学院:电子工程学院
嵌牛导读:对卷积神经网络的加速的研究。
嵌牛鼻子:计算机软件及计算机应用; 自动化技术。
嵌牛提问:如何设计卷积神经网络的加速系统?
嵌牛内容:
近年来,卷积神经网络(CNN)在机器视觉等方面取得了巨大成功。为提升嵌入式设备上运行CNN的速度和能效,本文针对LeNet-5网络模型,先对该网络模型进行感知量化训练,特征图和权重量化为8位整型数据。然后设计一种卷积神经网络加速器系统,该片上系统(SoC)采用Cortex-M3为处理器,所提出的系统处理一张MNIST图像所需时间5.3ms,精度达到98.2%。
近年来,卷积神经网络(CNN)在机器视觉等方面取得了巨大成功。为提升嵌入式设备上运行CNN的速度和能效,本文针对LeNet-5网络模型,先对该网络模型进行感知量化训练,特征图和权重量化为8位整型数据。然后设计一种卷积神经网络加速器系统,该片上系统(SoC)采用Cortex-M3为处理器,所提出的系统处理一张MNIST图像所需时间5.3ms,精度达到98.2%。CNN已成功应用于图像识别等应用,随着CNN解决更复杂的问题,计算和存储的需求急剧增加。然而,在一些低功耗的边缘计算设备中,功耗是重要指标。目前的研究主要针对CNN推理阶段模型的压缩和量化。大多数设计都用定点计算单元代替浮点单元。ESE采用12位定点权重和16位定点神经元设计,Guo等在嵌入式FPGA上使用8位单元进行设计。但之前的设计主要采用Zynq或者HLS开发,功耗较大。本文设计了一种基于FPGA的卷积神经网络加速系统。首先,通过感知量化训练的方法,实现了将浮点CNN模型的各层权重和特征图量化成8比特整型;其次,通过采用单层时分复用的方式,设计流水线架构提高数据吞吐率;再次,设计基于Cortex-M3的SoC;最后,采用MNIST手写数字进行方案和功能验证。
1 卷积神经网络
1.1 基本概念
LeNet-5是一个典型的卷积神经网络模型,不包含输入一共有7层。分别为3层卷积层,2层池化层,以及2层全连接层。
1.2 量化原理
针对目前CNN模型较大,参数多且不适合在移动设备上使用,Google团队提出了一种量化方案。该方案在推理过程中使用纯整。量化方案是量化整数q到实数r的映射,如公式(1)所示:
其中常数S和Z是量化参数。S表示比例系数,是一个任意的正实数。Z表示零点。CNN中主要的操作,比如卷积层的卷积,以及全连接层的乘累加,都可以看成是矩阵乘法。考虑实数两个N×N的矩阵r1和r2的乘积r3 =r1r2。将每个矩阵ra的项表示为ra(r,j),其中1≤ i, j ≤N,用qa(r,j)表示量化项,根据矩阵乘法的定义,得到:
乘以浮点数M,可以转化成先乘以定点数M1,再进行右移n+31。将公式(2)中所有零点Z1,Z2,Z3都设为0,可以大大简化推理阶段的运算。另外将偏置加法和激活函数合并到其中。比例系数Sbias=S1S2,零点Zbias= 0。由于选用的激活函数是ReLU,所以只需要将结果钳位到[0,255]。
2 加速系统硬件设计
2.1 整体结构
本系统采用CPU+FPGA的架构,包括AHB互联矩阵、Cortex-M3处理器、DMA、紧耦合存储器、双端口缓存、AHB2APB桥和CNN加速器,如图1所示。存储器部分包含ITCM,DTCM和双端口RAM。ITCM存放程序镜像文件;DTCM作为堆栈区;DualRAM作为权重数据,输入特征图,以及中间、最终结果缓存区,一端连接L1级总线,CPU和DMA均可以访问,另一端连接CNN加速器。
2.2 CNN加速器设计
CNN加速器设计的整体结构如图2所示,并行方案采用输出通道和权重卷积核内部并行,同时计算6个输出通道,以及卷积核25个乘法器同时计算。特征图行缓冲的窗口尺寸为5x5,可以通过数据选择器选择输入特征图的宽度。权重特征图的行缓冲设计同理,由于卷积核均为5x5,所以不需要数据选择器。乘累加阵列输入为25个8位特征图和25个8位权重,对应相乘后采用加法树方式累加,最后得到1个位宽为21的有符号数。偏置加法器用于累加偏置或者中间结果。选择哪一个是由数据选择器控制,输出一个32位结果。量化激活模块包含一个32x32位的乘法器,用于将累加结果和乘法系数相乘,再经过右移,钳位到[0,255],经过四舍五入得到量化的结果。
3.2 实验结果
本文的SoC工作的频率为100MHz,识别一张MNIST图片的时间为5.3ms,FPGA的功耗由Vivado的Report Power工具获得,仅为0.448W。本文处理单帧的时间比较长,但是功耗是其他文献的四分之一。由于采用感知量化,识别正确率FPGA实现和软件实现一致,达到98.2%。实验结果对比如表1所示。结论:为了解决嵌入式设备上实现卷积神经网络速度慢和功耗大的问题,本文提出了一种卷积神经网络加速系统。首先对卷积神经网络进行感知量化,得到8比特的权重、特征值图1 系统框图 和量化参数。采用Cortex-M3作为处池化模块设计思路同卷积模块,采用最大池化。包含3个比较器和一个行缓冲,针对不同层可以选择不同长度的特征图,窗口尺寸为2x2。
如何将cnn模型放到服务器上运行
一、模型加载
用已经训练好的模型来检测,rcnn_model_file指模型路径。
二、候选区域提取(Region proposals)
本论文采用selective search[3]方法生成候选区域,代码作者以给出,rcnn代码中的selective_search_boxes.m是根据selective search源代码中的demo.m修改的,参数im是矩阵图,不是图片路径,最后输出格式为N * 4的矩阵,N表示region proposals 的个数,每行表示一个region proposal对角线坐标。
三、特征提取(Feature extraction)
使用rcnn_features为每一个region proposals提取cnn特征,输出结果为N * 4096,每行表示一个region proposal的特征。
四、分类(classification)
调用下面函数为每一个region proposal计算各类的score,结果为N * C 矩阵,C表示物体类别个数,每行表示一个region proposal对应各个类别的score。