收藏 分享(赏)

深度神经网络及目标检测学习笔记2.docx

上传人:Wallisgabriel 文档编号:21759113 上传时间:2024-04-22 格式:DOCX 页数:14 大小:387.89KB
下载 相关 举报
深度神经网络及目标检测学习笔记2.docx_第1页
第1页 / 共14页
深度神经网络及目标检测学习笔记2.docx_第2页
第2页 / 共14页
深度神经网络及目标检测学习笔记2.docx_第3页
第3页 / 共14页
深度神经网络及目标检测学习笔记2.docx_第4页
第4页 / 共14页
深度神经网络及目标检测学习笔记2.docx_第5页
第5页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、深度神经网络及目标检测学习笔记https:/youtu.be/MPU2HistivI上面是一段实时目标识别的演示, 计算机在视频流上标注出物体的类别, 包括人、汽车、自行车、狗、背包、领带、椅子等。今天的计算机视觉技术已经可以在图片、 视频中识别出大量类别的物体, 甚至可以初步理解图片或者视频中的内容, 在这方面,人工智能已经达到了 3 岁儿童的智力水平。 这是一个很了不起的成就, 毕竟人工智能用了几十年的时间, 就走完了人类几十万年的进化之路,并且还在加速发展。道路总是曲折的, 也是有迹可循的。 在尝试了其它方法之后, 计算机视觉在仿生学里找到了正确的道路 (至少目前看是正确的) 。通过研究

2、人类的视觉原理,计算机利用深度神经网络 (Deep Neural Network,NN )实现了对图片的识别, 包括文字识别、物体分类、图像理解等。在这个过程中,神经元和神经网络模型、大数据技术的发展, 以及处理器(尤其是 GPU)强大的算力, 给人工智能技术的发展提供了很大的支持。本文是一篇学习笔记,以深度优先的思路,记录了对深度学习(Deep Learning)的简单梳理,主要针对计算机视觉应用领域。一、神经网络1.1 神经元和神经网络神经元是生物学概念, 用数学描述就是: 对多个输入进行加权求和, 并经过激活函数进行非线性输出。由多个神经元作为输入节点,则构成了简单的单层神经网络(感知器

3、) ,可以进行线性分类。两层神经网络则可以完成复杂一些的工作, 比如解决异或问题,而且具有非常好的非线性分类效果。而多层(两层以上)神经网络,就是所谓的深度神经网络。神经网络的工作原理就是神经元的计算, 一层一层的加权求和、 激活,最终输出结果。深度神经网络中的参数太多(可达亿级) ,必须靠大量数据的训练来设置。训练的过程就好像是刚出生的婴儿, 在父母一遍遍的重复中学习 “这是苹果”、“那是汽车”。有人说,人工智能很傻嘛,到现在还不如三岁小孩。其实可以换个角度想: 刚出生婴儿就好像是一个裸机, 这是经过几十万年的进化才形成的,然后经过几年的学习,就会认识图片和文字了;而深度学习这个“裸机”用了

4、几十年就被设计出来, 并且经过几个小时的 “学习”,就可以达到这个水平了。1.2 BP 算法神经网络的训练就是它的参数不断变化收敛的过程。 像父母教婴儿识图认字一样,给神经网络看一张图并告诉它这是苹果, 它就把所有参数做一些调整, 使得它的计算结果比之前更接近“苹果”这个结果。经过上百万张图片的训练,它就可以达到和人差不多的识别能力, 可以认出一定种类的物体。 这个过程是通过反向传播( Back Propagation, BP)算法来实现的。建议仔细看一下 BP 算法的计算原理,以及跟踪一个简单的神经网络来体会训练的过程。1.3 小结人工神经网络就是根据人的神经元模型而构建的一个感知算法, 利

5、用大量的神经元组合对人的认知行为进行拟合。 目前我们仍然无法精确的知道它为什么能工作、如何工作,如同我们仍然无法精确知道人的大脑是如何工作一样。在摸索过程中,我们好像应该更多地思考人类自己是怎么去“看”的,这会更有助于设计更好的算法。 比如本文开头的视频识别算法,它很快,但是不够精确,而有些可以“看清”细节的算法,就会非常慢。就像我们人类自己,走马观花只能看到概貌,驻足观赏才能看清细节。我们越了解自己,就越能做得更好。二、卷积神经网络2.1 简介卷积神经网络( Convocational Neural Network,CNN )是一个特殊的深层神经网络,目前在计算机视觉领域广泛使用, 可以认为

6、它是一个二维向量 (图片就是一个二维向量)的感知器。CNN 算法的核心是对图像(二维向量)进行矩阵卷积运算,这就相当于是对图像进行加权求和。为了减小计算量,CNN 采用了局部感知和权值共享的方法。局部感知,就是用一个N N(如 N=3)的矩阵(称为卷积核)去滑动扫描图像,进行卷积运算。权值共享,就是扫描图片的滑动矩阵的权值是共享的(相同的)。在实际运算中,这个卷积核相当于一个特征提取的过滤器(filter )。举例来说,假设一个10 10 的图像,用一个3 3 的卷积核以步长1 做一次卷积运算,那么会得到一个88 的特征图( feature map)。为了使得到的 feature map和原图

7、等大小,一般给原图进行扩充为1212,这样卷积一次以后, 得到的仍然是1010 大小的图像。在这个例子中,如果不采用权值共享,则一共需要100 个权值参数,权值共享后,只需要33=9 个权值参数。在实际中,一个 RGB 图像是三个通道,而卷积核也可能有多个。这样计算起来会比上面的例子复杂些,但基本原理是一样的。2.2 CNN 计算流程一个典型的 CNN 算法的流程大概是这样的:首先是输入,然后是n 个卷积和池化的组合,最后全连接层感知分类。在这个流程里, 卷积运算主要是用来提取特征。一个典型的卷积计算如下图所示。图中 input 是同一个图像的三个通道, 周边有填充 0;有两个卷积核 Filt

8、er W0和 Filter W1,一个 filter 滑动到一个位置后计算三个通道的卷积, 求和,加 bias,得到这个 filter 在该位置的最终结果; 每个 filter 的输出是各个通道的汇总; 输出的个数与 filter 个数相同。在这里还要加上激活函数,对计算结果进行非线性变换。常用的激活函数有 tanh、ReLU、sigmoid 等。激活函数的作用好像可以解释为:过滤掉一些可以忽略的不重要因素,以避免其对决策产生过度影响。池化是为了降维,有最大池化(Max Pooling)和平均池化(Average Pooling)。一个 22 最大池化的示例如下图。最后是全连接层, 它将前面卷

9、积层提取的特征映射到样本标记空间, 它输出一个分类的概率,也就是最终的结果。2.3 典型的 CNN 模型LeNet,最早用于数字识别的 CNN,用 55 卷积核, 22 最大池化,识别输入为 28 28 的灰度点阵,网络结构是( CONV POOL CONV POOL CONV FC)。AlexNet ,2012 ImageNet比赛第一名,准确度超过第二名10%。网络结构如下图。 5 个 CONV 、3 个 POOL、2 个 LRN 、3 个 FC,卷积核分别是1111、5 5、 3 3,采用 ReLU 作为激活函数。VGG,有跟多的卷积层( 1619),使用 3 3 卷积核。GoogLeN

10、et,采用 Inception 来减少参数(用 11 卷积核降维)。ResNet,很多很多层的网络,从152 层到据说上千层。采用残差网络来解决多层网络难以训练的问题。以上网络的对比如下表。2.4 训练集应该可以感受到,人工智能也好,深度学习也好,算法的优劣是一方面,而训练数据集的好坏, 对最终的效果影响更大。 而训练集又非常难做, 需要大量的数据,且标记这些数据需要巨大的工作量(过去的8 年 ImageNet 就在做这个工作)。逐渐,一些数据集就慢慢出了名。很多算法的性能数据都会指明是在哪个数据集上训练的。一些有名的数据集如下。MNIST :深度学习领域的“ Hello World! ”,一

11、个手写数字数据库,有 60000 个训练样本集和 10000 个测试样本集,每个样本图像的宽高为 28*28。数据集以二进制存储,不能直接查看。数据集大小为 12M。ImageNet:MIT 李飞飞团队过去几年的成果,目前有1400 多万幅图片,涵盖 2 万多个类别。数据集大小为 1T。ImageNet 根据 WordNet 层次(目前只有名词)组织的一个图像数据库, 其中每个节点的层次结构是由成千上万的图像描绘。目前,有平均每个节点超过五百的图像。COCO:Common Objects in Context,是一个新的图像识别、分割、和字幕数据集,由微软赞助,具有上下文识别、语义描述等特点。

12、数据集大小为40G。PASCAL VOC :图片集包括 20 个目录,数据集图像质量好,标注完备,非常适合用来测试算法性能。数据集大小为2G。由于数据集生成有一定难度且工作量巨大,两年来GAN ( GenerativeAdversarial Nets,生成对抗网络)快速发展,并在很多应用场景的训练集生成产生了巨大作用,比如车牌识别。三、物体检测3.1 检测流程在实际场景中, 我们需要在一副图像中找出有哪些物体,这是一个多对多的映射(所谓的回归)。按照已有的 CNN 方法,常规的检测流程就是: 先找到哪些区域有物体,然后再用CNN 来对其分类。区域选择最原始的办法就是用不同大小的滑动窗口对整幅图

13、像进行扫描。这样不但计算量大,也容易造成误判。一个改进的方法是所谓Region Proposal,即预先找出物体可能在的位置。这里需要提到以下几个概念。IoU:Intersection over Union,Region Proposal与 Ground Truth 的窗口的交集比并集的比值,如果 IoU 低于 0.5,那么相当于目标还是没有检测到。 Ground Truth 就是实际物体真实的区域。mAP,mean Average Precision,平均精度均值。是对多个验证集求 PR 曲线的均值。 PR 曲线是 Precision 和 Recall 作为横纵坐标轴的曲线, Precisi

14、on 是准确率,即检测出的样本有多少是正确的, Recall 是召回率,即应该被检测出的样本有多少被检测出来。 PR 曲线越高,说明算法越好,即又多又准。3.2 典型的算法从 2014 年的 R-CNN( Region proposal+CNN)开始,出现了一系列目标检测算法,从 R-CNN 到 fast R-CNN 和 faster R-CNN,以及 SPP-NET,R-FCN,还有YOLOv1v3 和 SSD、DSSD。R-CNN :采用 selective search方法(一种 Region Proposal方法,Region Proposal 的方法有 selective searc

15、h、edge box)进行区域选择,选出 2000 个左右。将每个区域缩放至 227 227,再送入 CNN 计算特征,最后由 SVM (支持向量机)分类。很明显, R-CNN 很慢。SPP-NET:为了加快 R-CNN 的速度,采取对一副图像的多个Region Proposal一次提取特征。 这就要求网络必须适应不同尺寸的图像。方法是在全连接层之前加入一个网络层,让它对任意尺寸的输入产生固定的输出(将图像分成16、4、1 个块)。SPP-NET 训练步骤繁琐,并且仍然不够快。fast R-CNN:与 R-CNN 相比,fast R-CNN 在最后一个卷积层后加了一个 ROI pooling

16、layer,同时损失函数使用了多任务损失函数 (multi-task loss),将边框回归直接加入到 CNN 网络中训练,最后用 softmax 替代 SVM 进行分类。 fast R-CNN不是真正的端到端训练测试,还是需要selective search来进行 Region Proposal,所以还是不够快,不能做实时的检测。Faster R-CNN:采用 RPN(Region Proposal Networks)用 Anchor 机制和边框回归直接得到多尺度多长宽比的 Region Proposal。 Fast R-CNN 做到了真正的端到端,但可惜的是仍然不能达到实时检测。 RPN

17、需要详细了解一下。R-FCN: Object Detection via Region-based Fully Convolutional Networks,基于区域的全卷积网络物体检测。嫁接ResNet的卷积层,采用 RPN 获取 ROI,针对每个 ROI,在 POOL 之前加入位置信息(通过score map)。R-FCN 的 score map计算有点绕,需要慢慢理解。YOLO :虽然精度不是最好,但确是目前实时性最好的算法,可以在视频中实时检测出很多物体。 倒也符合人类视觉的特点,一眼望去先看个大概, 要想看细节,那就定格仔细看吧。YOLO 系列的算法后面详细总结。SSD: SSD 结

18、合了 YOLO 中的回归思想和Faster R-CNN 中的 anchor 机制,使用全图各个位置的多尺度区域特征进行回归,既保持了 YOLO 速度快的特性,也保证了窗口预测的跟Faster R-CNN 一样比较精准。一般后续出现的算法都会与之前的算法做性能对比,SSD 和 YOLOv1 比,YOLOv2 、 v3 又和 SSD 比,在不同的训练集上也有不同的 mAP,看起来真是眼花缭乱。因为机缘巧合,我先接触到 YOLO 系列算法,在自己的电脑上运行 DEMO ,也仔细看了 YOLO 的发展,于是给一个稍微详细的总结。3.3 YOLO 系列算法YOLO 算法主要是针对以往物体检测算法速度较慢

19、的弊端,利用一个单独的端到端网络, 将原始图像输入, 直接输出物体位置和类别。YOLO 没有显式的求取 Region Proposal 的过程( R-CNN 和 Fast R-CNN 采用 selective search获取,Faster R-CNN 和 R-FCN 则采用了 RPN)。 YOLO 的名字也来自于其核心特征:You Only Look Once,只看一次。从 2015 年到 2018 年 3 月,YOLO 一共出了三个版本v1、v2(YOLO9000 )、v3,性能逐渐提高,mAP 与其它算法持平或略胜一筹。3.3.1 YOLOv1YOLO 将对象检测框架化为空间分离边界框和

20、相关类别概率的回归问题。 单个神经网络在一次评估中直接从完整图像预测边界框和类概率。 由于整个检测流水线是单个网络, 因此可以直接针对检测性能端到端地进行优化, 使得统一架构非常快。基础 YOLO 模型以 45 帧/秒的速度实时处理图像。较小版本的网络 Fast YOLO 每秒处理可达 155 帧,同时实现其他实时检测器的 mAP 的两倍。与最先进的检测系统相比, YOLO 产生更多的定位误差, 但不太可能预测背景上的误报。最后, YOLO 表现出对目标识别很好的通用性。YOLO 检测网络有 24 个卷积层,其次是 2 个完全连接的层。 交替的 11卷积层减少了来自前面层的特征空间。 在分辨率

21、的一半 (224 * 224 输入图像)上预分割 ImageNet 分类任务上的卷积图层,然后将分辨率加倍以进行检测。YOLO 将输入图像分成S S 个格子,若某个物体Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体。每个边界框由 5 个预测组成: x,y,w,h 和置信度。(x, y)坐标表示相对于网格单元边界的框的中心。 宽度和高度是相对于整个图像预测的。 最后,置信度预测表示预测框与任何 ground truth 框之间的 IOU 。每个网格单元还预测 C 条件类概率 Pr(Classi|Object)。这些概率取决于包含对象的网格单元。 仅预测

22、每个网格单元的一组类概率, 而不管箱 B 的数量。在测试时间,将条件类概率和单个盒子置信度预测相乘,这给出了每个盒子的类别特定置信度评分。 这些分数编码该类出现在盒子中的概率以及预测盒子如何适合该对象。 YOLO 的输出维度为 SS(B 5+C)。检测中采用了 S=7,B=2,C=20。YOLO 对占比较小的目标检测效果一般。虽然每个格子可以预测 B 个 bounding box,但是最终只选择 IOU 最高的 bounding box 作为物体检测输出,即每个格子最多只能预测出一个物体。 当物体占画面比例较小, 如图像中包含鸟群时,每个格子包含多个物体,但却只能检测出其中一个。YOLO 训练

23、时的 Loss 函数如下其中 coord=5,noobj=0.5,是权重系数。 公式包括三部分, 分别是坐标误差、 IOU 误差和分类误差。3.3.2 YOLO9000YOLOv2 对之前的版本做了改进。 取消了 dropout,在卷积层全部使用BatchNormalization ;采用 448448 的分辨率训练检测网络;借鉴Faster R-CNN 的思想预测 bbox 的偏移,移除了全连接层,并且删掉了一个率更大。网络结构图如下:POOL 层使特征的分辨YOLOv2 的性能比 v1 有了提升,具体数据在v3 部分进行对比。3.3.3 YOLOv3YOLOv3 是 2018 年 3 月

24、25 号发布的,里面对当前各种物体检测算法做了性能对比。在 320 * 320 分辨率下, YOLOv3 达到 28.2 mAP、22 ms,与 SSD 一样精确,但速度提高了三倍。对旧的 0.5 IOU mAP 检测指标 YOLOv3 表现不俗。在 Titan X 上,它达到了 51 ms、57.9 AP50,而 RetinaNet 则是 198 ms、57.5 AP50,性能相似,但是快了 3.8 倍。YOLOv3 主要在多尺度预测、基础分类网络及分类器上做了改进。采用多尺度预测,每种尺度预测 3 个 box(类似 FPN)。anchor 的设计方式仍然使用聚类,得到 9 个聚类中心,将其

25、按照大小均分给 3 中尺度。尺度 1:在基础网络之后添加一些卷积层再输出 box 信息。尺度 2:从尺度 1 中的倒数第二层的卷积层上采样 ( 2)再与最后一个 16 16 大小的特征图相加, 再次通过多个卷积后输出 box 信息。相比尺度 1 变大两倍。尺度 3:与尺度 2 类似,使用了3232 大小的特征图。基础网络采用了Darknet-53,这个新网络比v2 的 Darknet-19 强大得多,但仍比 ResNet-101或 ResNet-152更高效。边框预测采用之前的logistic 。YOLO 的优点很明显,就是速度快、简单,背景误检率低,通用性强。对于非自然图像物体的检测率远远高于DPM 和 RCNN 系列检测方法。但相比 RCNN 系列物体检测方法, YOLO 的缺点是物体位置精准性较差,且召回率低。YOLO 系列算法可以在Ubuntu 上运行,我自己在Windows 10 上也跑起来了,硬件:Nvidia Geforce MX150,软件:Visual Studio 2015+CUDA9.1+OpenCV3.0。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高中资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报