{title}{title}
|
文献综述(或调研报告): 首先,根据[4]尝试着从维基百科上爬取到人物姓名(目前有中国以及日本的大部分人名),爬取人物姓名的主要依据则是根据维基百科中的出生年份、姓氏等进行爬取。使用selenium从谷歌上进行爬取相应人物姓名所对应的照片。 而魏秀参的《解析深度学习——卷积神经网络原理与视觉实践》[1]是对卷积神经网络介绍的入门读物。 研究随机梯度算法的原理,搞清了BP算法——反向传播算法的原理所在,对搭建起自己的神经网路架构。 BP算法——随机梯度下降算法 首先是全连接层的介绍:全连接层一般由以下两个部分组成: 线性部分:主要做线性转换,输入用X表示,输出用Z表示 非线性部分:那当然是做非线性变换了,输入用线性部分的输出Z表示,输出用X表示。 线性部分: 线性部分的运算方法就是线性的加权求和,只不过此时不再是单个数字,而是对矩阵进行加权求和,如果对于一个输入向量,线性部分的输出向量是,那么线性部分的参数就可以想象一个m*n的矩阵W,再加上一个偏置项,于是有: 我们可以理解线性部分为对输入数据做不同角度的分析,得出该角度下对整体输入数据的判断,即输提取放大输入数据的主成分,也就是我们所谓的特征部分。 于是可以如此操作: 1)在第一组权重中给第一个像素一个正数,第二个也是正数, 2)在第二组权重中给第一个像素负数,而第二个还是正数hellip;hellip; 这样,相当于从多个角度对输入数据进行分析汇总,得到了多个输出结果,也就是对数据的多种评价,即每次提取不同的主成分进行分析。 非线性部分 非线性部分有一些比较固定的函数,以其中的一个经典函数——sigmoid为例。它的函数形式如下所示: 这个函数的输入正是我们上一步线性部分的输出Z,此时Z取值范围在(-infin;, infin;),经过了这个函数就可以将输出的范围转化到(0,1)。 非线性部分做这个函数转换的其中的一个作用就是作数据的归一化。不管前面的线性部分做了怎样的工作,到了非线性这里,所有的数值将被限制在一个范围内,这样这个数值就相对可控了而且学过概率的人也能了解归一化对于分类或者回归问题的益处。不然如果每一层的数值大小都不一样,有的范围在(0,1),有的在(0,10000),做优化的时候优化步长的设定就会有麻烦。 另外一个作用,就是打破了之前的线性映射关系。如果全连接层没有非线性部分,只有线性部分,我们在模型中叠加多层神经网络是没有意义的,可以理解为非线性使其变得相对来说不同的特征的再变换,这就是使得多层神经网络的存在有了意义。 先介绍一个概念:模型训练目标。神经网络是一个用在监督学习上的模型,监督学习的前提条件是要提前知道输入和输出。所以模型训练目标是希望模型在接收输入后,可以得到和我们提前知道的一样的输出。 为了描述这个“一样”以及为了优化我们的模型,我们引入了损失函数以及随机梯度下降算法的概念,一般来说,我们会采用二次损失函数、交叉熵等损失函数模型。对于模型的输出Y,和我们提前知道的理论输出t,这样我们就可以利用某种函数关系来表示输出与理论输出之间的差别,以及根据这个差别来调整本层的各个参数。 二次函数形式损失函数: 我们选择了损失函数用来优化我们的模型,那么接下来就根据这个损失函数利用随机梯度算法来进行反向传播优化参数。 现在我们所有的参数: 输入数据 第一层的线性部分输出 第一层的非线性部分输出 第二层的线性部分输出 第二层的非线性部分输出y 目标函数:二次损失函数Loss 随机梯度下降算法的精髓在于反向链式求导:
则:
于是根据反向传播算法以及链式求导法则:(举例) 抽象来说可以分成四步: 1.Loss对本层非线性部分的梯度 2.Loss对本层线性部分的梯度 3.Loss对本层线性部分w的梯度 4.Loss对本层线性部分b的梯度 于是最后正向传播与反向传播结合。 这就是BP算法也就是神经网络中反向传播的最主要核心所在。 而在现如今的神经网络架构中,基本都是以CNN网络为依托进行开发与研究的。卷积神经网络是为了简化全连接层的参数,利用一个或几个固定的卷积核(很小的二维矩阵)和一个区域的神经元进行操作。 卷积神经网络也是层级网络,相比于全连接层网络,卷积神经网络加入了卷积层与池化层,特点即为局部连接以及权值共享。 图像的特征:图像本身具有一些像素的特征,经过神经网络层,有一些特征得到了强化,有一些得到了弱化,每经过一层就得到了新的feature maps。 卷积层:卷积核在上一级输入层上通过滑动窗口计算而得,步长可以自定,卷积核中的每一个参数都相当于传统神经网络中的权值参数,与对应的局部像素相连接,将卷积核的各个参数与对应的局部像素值相乘之和,(通常还要再加上一个偏置参数),得到卷积层上的结果。当然同样需要一个非线性的部分进行最后的处理。对卷积核最好的理解即为滤波器,一个卷积核与图像(像素点矩阵)进行操作。 池化层:通过卷积层获得了图像的特征之后我们不可以直接使用这些特征训练分类器,因为这样做将面临巨大的计算量的挑战,而且容易产生过拟合的现象。所以我们对卷积层进行池化/采样(Pooling)处理来降低网络训练后产生的过拟合现象。 通过不同的卷积层,池化层再加上全连接层的配合,以及一些新的卷积网络中的概念可以构建出很多基础而又实用的神经网络:比如YOLO[2][3]、VGG[5]、Deep Residual Learning[6]。 [7]着重点在于atrous convolution以及构建ASPP,其实质其实一直都是卷积,只不过卷积核的权重与其对应的image中的像素点发生了变化,两种理解,一种将卷积核原有值之间填入rate-1个零再和input feature map进行卷积处理,另一种理解将卷积核不动,从feature map中按rate间距的取pixels。而ASPP类似FPN的金字塔,只不过是rate的成比例变化导致的取得的feature map类似金字塔型。 [11]这篇论文的目的是为了能够把不同级别的识别,物体识别,场景识别,部分物体识别,材料识别,文字识别综合到一套神经网络体系中,用一套神经网络体系来实现一次性检测出不同领域的东西,然后对于特征的提取,主要用到了Feature Pyramid Network[8]以及Pyramid Pooling Module最终形成fused feature maps,关于FPN,我它的操作大致两步,第一步先从图像入手,自底向顶,利用卷积先形成不同scale的图像特征,第二步是自顶向下,up-sample and lateral connections,即上层先上采样再与本层原feature map进行1*1的卷积之后的feature map进行相加。 PPM则是PSPNet[9]中的一步,把输入的image先卷积处理一下成feature map然后进行不同scale的池化,论文中给的是1*1*X,2*2*X,3*3*X,6*6*X的四组池化层然后进行了1*1卷积降维,然后将四组进行up-sample之后串接在原来池化前的feature map之后,再根据不同级别的识别需求,把不同侧重的feature map送到Residual Network[7]中去进行判别。 而后面YOLO以及VGG网络也是以卷积神经网络为基础扩展的。所以理解了卷积神经网络的结构对于以后的网络搭建十分有好处。 [2]论文介绍了一种新型的目标检测算法,YOLO算法。在过去,目标检测工作都是重复利用分类器来执行检测。而YOLO恰巧相反,它是将目标检测框架看作回归问题,从空间上分割出Bounding Boxes和符合相关类别的概率。使用单个神经网络在一次评估中直接从完整图像上预测最符合的两个Bounding Boxes和类别概率。由于整个检测流水线是单一网络,因此可以直接对检测性能进行端到端的优化。YOLO将目标区域定位于目标类别预测整合于单个神经网络模型中,实现了在准确率较高的情况下快速目标检测与识别,YOLO达到了45帧每秒,而Fast YOLO达到了155帧每秒,适用于实时的目标检测。使用YOLO,只需要在图像上看一次(You Look Only Once),就可以预测出现的目标和位置。 YOLO相对于目前最好的目标检测系统存在的问题是精确度不够。相对于Fast R-CNN,YOLO在目标定位方面错误率较高。YOLO v2是YOLO的升级版,作者采用了一系列的方法优化了YOLO的模型结构,产生了YOLOv2,在快速检测的同时准确率达到了state of the art,并且增强了定位精确度。对YOLOv1存在的一些不足进行了改进,形成了YOLO v2。 [3]YOLO9000是在YOLOv2的基础上得到的,相比于YOLO v2,YOLO9000 具有更强大(Stronger)的检测功能,可以检测出更多的类别。作者提出了一种在分类数据集和检测数据集上联合训练的机制。使用检测数据集的图片去学习检测相关的信息,例如bounding box 坐标预测,是否包含物体以及属于各个物体的概率。使用仅有类别标签的分类数据集图片去扩展可以检测的种类。训练过程中把监测数据和分类数据混合在一起。当网络遇到一张属于检测数据集的图片就基于YOLOv2的全部损失函数(包含分类部分和检测部分)做反向传播。当网络遇到一张属于分类数据集的图片就仅基于分类部分的损失函数做反向传播。 作者最后采用一种不要求互不包含的多标签模型(multi-label model)来整合数据集。这种方法忽略了数据集的结构(例如 COCO数据集的所有类别之间是互不包含的)。 [10]主要讲述的是通用人脸检测器的搭建与研究,需要仔细深究,然后再结合YOLO框架搭建出自己的人脸检测器,那么关于YOLO以及[5]VGG的神经网络均可以在卷积神经网络的基础上进行搭建,只是层数以及大小包括所用的损失函数以及优化方式会改变,但搭建的架构却是类似的。 [12]研究的S3FD算法可以看作是基于RPN、SSD算法的改进算法,引入Scale-Equitable Face Detection Framework,改进检测网络和anchor设置的方法。改进检测网络是将检测卷积层的最小步长设置为4,提取到更多人脸信息。而设置anchor的尺寸将其与感受野以及步长相关联起来,采用等比例间隔原理设置anchor的数量;引入尺寸补偿锚框匹配策略,降低anchor成为正样本的阈值,从而间接的降低正负样本严重不平衡的比例,进而能够提升人脸的检测召回率;引入max-out background label策略,比起尺寸补偿,该策略更加直接的改善了小尺寸人脸的正负样本数量。 参考文献: [1] 魏秀参《解析深度学习——卷机神经网络原理与视觉实践》2018 [2] Redmon J,Divvala S,Girshick R,et al. You only look once:unified,real-time object detection. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.2016 [3] Redmon J,Farhadi A.YOLO9000:Better,Faster,Stronger. 2016 [4] Shuo Yang Ping Luo Chen Change Loy Xiaoou Tang WIDER FACE: A Face Detection Benchmark arXiv:1511.06523v1 2015 [5] K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. In ICLR, 2015. [6] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016 [7] L. Chen, G. Papandreou, I. Kokkinos, K. Murphy, and A. L. Yuille. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs. arXiv:1606.00915, 2016 [8] Tsung-Yi Lin, Piotr Dollacute;ar, Ross Girshick, Kaiming He, Bharath Hariharan, and Serge Belongie. Feature Pyramid Networks for Object Detection arXiv:1612.03144v2 2017 [9] Hengshuang Zhao Jianping Shi Xiaojuan Qi Xiaogang Wang Jiaya Jia. Pyramid Scene Parsing Network arXiv:1612.01105v2 [cs.CV] 27 Apr 2017 [10] Li Liu Wanli Ouyang XiaogangWang Paul Fieguth Jie Chen Xinwang Liu Matti Pietikuml;ainen Deep Learning for Generic Object Detection: A Survey arXiv:1809.02165v1 2018 [11] Tete Xiao, Yingcheng Liu, Bolei Zhou, Yuning Jiang, Jian Sun. Unified Perceptual Parsing for Scene Understanding. arXiv:1807.10221v1 2018 [12]S. Zhang, X. Zhu, Z. Lei, H. Shi, X. Wang and S. Z. Li. S^3FD: Single Shot Scale-Invariant Face Detector. IEEE International Conference on Computer Vision (ICCV), Venice, 2017, pp. 192-201 |
资料编号:[180946]
