(完整版)深度神经网络及目标检测学习笔记(2)
NNDL神经网络与深度学习第2章机器学习概述——学习笔记
一个好的模型,应该有一个比较小的期望错误(期望风险),但是由于不知道真实的数据分布和映射函数,实际上无法计算。我们可以选择合适的损 失函数,计算经验风险,也就是训练集的平均损失,用经验风险来近似期望风险。
选择了合适的风险函数后,我们寻找一个参数 θ∗,使得经验风险最小化,这就是经验风险最小化原则。
机器学习算法类型
一般来说,我们会按照训练样本提供的信息以及反馈方式的不同,将机器学习算法分为以下几类(当然其他标准的也有):
监 督 学 习 ( Supervised Learning)
特点:训练集中每个样本都有标签 根据标签类型的不同,可以分为:
回归问题:标签 y 为连续值(实数或者连续整数) 分类问题:标签 y 为离散值(学习到模型称之为分类器,问题有二分类和多分类的类别) 结构化学习:标签 y 为结构化对象(序列、树等),求解过程称之为解码
其中 ‖ ‖ 是 ℓ2 范数的正则化项,用来减少参数空间,避免过拟合; 用来控制正则化的强度。 (有点疑惑) 欠拟合:这是一个和过拟合相反的概念,即模型不能很好的拟合训练数据,在训练集的错误率较高。欠拟合一般是模型能力不足导致的。
优化算法
通过选择合适的损失函数,使用风险最小化原则,我们将机器学习变成了一个最优化问题(Optimization),机器学习就成了一个最优化问题的求解 过程,接下来我们要介绍几个优化求解算法。
基于神经卷积网络的目标检测算法总结PPT教案课件
R--CNN SPP--NET
区域推荐算法 Region Proposal
R--FCN
Fast--R--CNN
Faster--R--CNN
R--CNN
4个步骤
1.候选区域生成: 一张图像生成1K~2K个候选区域 (采用Selective Search 方法) 2.特征提取: 对每个候选区域,使用深度卷积网络提取特征 (CNN) 3.类别判断: 特征送入每一类的SVM 分类器,判别是否属于该类 4.位置精修: 使用回归器精细修正候选框位置
完全实现了端到端的训练实时检fasterrcnn改进点将全连接层看作是整个特征图的卷积卷积层替代了全连接层rfcn基于回归算法的深度卷积神经网络的物体检测算法回归算法yolofastyolossdendend改进点仅用一个神经网络相对于基于候选区域的2个卷积网络检测速度大大提高yolo改进点以vgg16为基础在最后一个卷积层后额外加入卷积层大小逐层递减在每个卷积层上做滑动窗口在丌同尺度的特征图下找锚定框ssd小结1
SPP--NET
改进点
在最后一个卷积层后,设计一个金字塔池化层, 然后,将特征图像固定到要求的尺寸。
Fast--R--CNN
改进点
1.很大程度上实现了end to end(除了region proposals的产生还是用的selective search)。
2.不再是将region proposals依次通过CNN,而是直接输入原图,来提取特 征(这样一张图只会CNN一次)。
深度学习知识点总结
深度学习知识点总结
深度学习是一种人工智能(AI)的子领域,它的目标是让计算机系统像人类一样具有分析、理解和解释数据的能力。通过模拟人脑中神经元的工作原理,深度学习算法可以学习和理
解数据中的复杂模式,并进行非常准确的分类和预测。本文将系统地总结深度学习的基本
概念和常见技术,帮助读者全面了解深度学习的核心知识点。
一、基本概念
1. 神经网络
神经网络是深度学习的基础,它模拟了人脑中神经元之间的连接关系。一个神经网络由许
多神经元组成,并通过神经元之间的连接来传递信息。通常,神经网络被组织成多个层次,包括输入层、隐藏层和输出层。每个神经元接收来自上一层神经元的输入,通过加权求和
和激活函数的处理后产生输出。神经网络可以通过训练来学习适应不同的数据模式和特征。
2. 深度学习
深度学习是一种使用多层神经网络进行学习的机器学习技术。与传统的浅层神经网络相比,深度学习能够更好地处理大规模高维度的数据,并学习到更加复杂的特征和模式。深度学
习已经广泛应用在图像识别、语音识别、自然语言处理等领域,取得了显著的成果。
3. 监督学习
监督学习是一种常见的机器学习方法,它通过使用有标签的数据样本来训练模型。在监督
学习中,模型通过学习输入和输出之间的关系来进行预测。常见的监督学习算法包括:神
经网络、决策树、支持向量机等。
4. 无监督学习
无监督学习是一种不使用标签数据的机器学习方法,它通过学习数据之间的内在结构和模
式来进行数据分析和分类。无监督学习常用的算法包括聚类、关联规则、降维等。
5. 强化学习
强化学习是一种通过与环境交互来学习最优决策策略的机器学习方法。在强化学习中,智
人工神经网络学习总结笔记
人工神经网络学习总结笔记
主要侧重点:
1.概念清晰
2.进行必要的查询时能从书本上找到答案
第一章:绪论
1.1人工神经网络的概述
“认识脑”和“仿脑”:人工智能科学家在了解人脑的工作机理和思维的本质的基础上,探索具有人类智慧的人工智能系统,以模拟延伸和扩展脑功能。我认为这是人工神经网络研究的前身。
形象思维:不易被模拟
人脑思维抽象推理
逻辑思维:过程:信息概念最终结果
特点:按串行模式
人脑与计算机信息处理能力的不同点:
方面类型人脑计算机
记忆与联想能力可存储大量信息,对信息有
筛选、回忆、巩固的联想记
忆能力无回忆与联想能力,只可存取信息
学习与认知能力具备该能力无该能力
信息加工能力具有信息加工能力可认识
事物的本质与规律仅限于二值逻辑,有形式逻辑能力,缺乏辩证逻辑能力
信息综合能力可以对知识进行归纳类比
和概括,是一种对信息进行
逻辑加工和非逻辑加工相
结合的过程
缺乏该能力
信息处理速度数值处理等只需串行算法就能解决的应用问题方便,计算
机比人脑快,但计算机在处理文字图像、声音等类信息的
能力远不如人脑
1.1.2人脑与计算机信息处理机制的比较
人脑与计算机处理能力的差异最根本的原因就是信息处理机制的不同,主要有四个方面
方面类型人脑计算机
系统结构有数百亿神经元组成的神经
网络由二值逻辑门电路构成的按串行方式工作的逻辑机器
信号形式模拟量(特点:具有模糊性。离散的二进制数和二值逻辑容易被机器模拟的思维方式
难以被机器模拟)和脉冲两种
形式
形式
信息储存人脑中的信息分布存储于整个系统,所存储的信息是联想式
的
有限集中的串行处理机制信息处理机制高度并行的非线性信息处理系统
神经网络与深度学习知识点整理
神经网络与深度学习知识点整理
●神经网络基础
●MP神经元模型
●可以完成任何数学和逻辑函数的计算
●没有找到训练方法,必须提前设计出神经网络的参数以实现特定的功能
●Hebb规则
●两个神经元同时处于激发状态时,神经元之间的连接强度将得到加强
●Hebb学习规则是一种无监督学习方法,算法根据神经元连接的激活水平改变权
值,因此又称为相关学习或并联学习。
●
●感知机模型
●有监督的学习规则
●神经元期望输出与实际输出的误差e作为学习信号,调整网络权值
●
●LMS学习规则是在激活函数为f(x)=x下的感知器学习规则
●由于激活函数f的作用,感知器实际是一种二分类器
●感知器调整权值步骤
●单层感知器不能解决异或问题
●BP网络
●特点:
●同层神经网络无连接
●不允许跨层连接
●无反馈连接
●BP学习算法由正向传播和反向传播组成
●BP网络的激活函数必须处处可导——BP权值的调整采用 Gradient Descent 公式
ΔW=-η(偏E/偏w),这个公式要求网络期望输出和单次训练差值(误差E)求导。所以要求输出值处处可导。。。。s函数正好满足处处可导。
●运算实例(ppt)
●Delta( δ )学习规则
●误差纠正式学习——神经元的有监督δ学习规则,用于解决输入输出已知情
况下神经元权值学习问题
●δ学习规则又称误差修正规则,根据E/w负梯度方向调整神经元间的连接权
值,能够使误差函数E达到最小值。
●δ学习规则通过输出与期望值的平方误差最小化,实现权值调整
●
●1
●自动微分
●BP神经网络原理:看书
●超参数的确定,并没有理论方法指导,根据经验来选择
阅读笔记-Testing Deep Neural Networks
Testing Deep Neural Networks
Youcheng Sun1, Xiaowei Huang2, and Daniel Kroening1
1Department of Computer Science, University of Oxford, UK
2Department of Computer Science, University of Liverpool, UK
0x00 一句话说清本文工作
深度学习越来越应用于安全攸关领域,其可靠性要求日益提高。传统的基于代码分支覆盖的软件测试方法[3][4][5]不能适用于深度学习程序,而现有的深度学习程序测试方法或过于粗略[1][2]或难以在有限时间内完成[6],因此兼顾效率和效果的测试方法急需被提出—也就是本文的工作。
1x00 MOTIVATION
经验告诉我们,把故事讲清楚、将漂亮是发文章的第一步。
1x01 研究背景
随着人工智能的发展,我们生活中的各个领域都开始有了人工智能的影子,比如语音助手、身份识别、智能驾驶等等。为我带来了方便的同时,人们对他们的可靠性也更加关注。在智能驾驶领域,出现了不少安全问题,比如Uber 智能车撞人、百度智能车在北京五环上行驶出现问题等等。其智能软件背后多由深度学习网络实现,那么对深度学习网络的可靠性研究就十分重要,当前人们的主要研究从验证和测试两个角度开展。本文就是测试的角度。1x02 问题定义&前人不足
既然是测试,那么肯定是为了找bug,一般程序的bug我们已经十分熟悉,深度学习领域的bug是否相同呢,我认为不是的。例如下图,智能驾驶软件在左图软件做出了正确的决定,但是在右图的情况中,看似与左图只有光线的变化,但是却做出了危险的决策。而这样的bug属于模型设计、训练层面的bug,无法用传统的基于程序覆盖的方法检测出来。这种bug,一句话说就是“输入相似,输出相反”。这个是一个很好的test oracle,使得神经网络的测试工作得以开展。
人工神经网络基础_ANN课程笔记 2、深度神经网络
第二章深度神经网络
一、概述
1、基本概念
深度学习(Deep Learning)是一种没有人为参与的特征选取方法,又被称为是无监督的特征学习(Unsupervised Feature Learning)。
深度学习思想的神经网络利用隐含层从低到高依次学习数据的从底层到高层、从简单到复杂、从具体到抽象的特征,而这一特性决定了深度学习模型可以学习到目标的自适应特征,具有很强的鲁棒性。
深度学习的另外一个思想是贪婪算法(greedy algorithm)的思想,其在训练的时候打破了几十年传统神经网络训练方法的“桎梏”,采用逐层训练(greedy layer-wise)的贪婪思想,并经过最后的微调(fine-tuning),这一训练算法的成功也使得深度学习获得了巨大成功。
传统的模式识别方法:
机器学习过程
从最初的传感器得到原始的数据,到经过预处理,都是为了第三步和第四步的特征提取和特征选择,而这个耗时耗力的工作一般要靠人工完成。
这种靠人工的,需要大量的专业知识的启发式的特征提取方法注定要限制机器学习的发展,而深度学习的非监督学习阶段的“盲学习”的特性能够解决该问题,即:深度学习在特征提取和选择时是完全自主的,不需要任何的人工干预。
2、神经网络发展受限之处
多隐含层的网络容易收敛到参数空间的局部最优解,即偏导数为0 的点,尤其在目标识别中,由于图像的信噪比很低,神经网络很容易陷入局部极小点; 训练算法与网络的初始参数有很大关系,比较容易过拟合;
训练速度慢;
在误差反向传播的训练算法中,层数越深,误差越小,甚至接近于0,造成训练失败。
深度学习 神经网络
需要新的学习方式: •生长周期:无法自然选择试错 • 大脑模拟:预测未来事件 • 神经网络:寻找过去事件到未来事件的关联f (任意两个空间)
▪2.1、神经元
▪2、神经网络
▪
每层神经网络的数学理解:用线性变换跟随着非线性变化,将输入空间投向另一个 空间。
▪
每层神经网络的物理理解:通过现有的不同物质的组合形成新物质。
线性可分视角:神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非 线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。
增加节点数:增加维度,即增加线性转换能力。 增加层数:增加激活函数的次数,即增加非线性转换次数。
2.2.2、物理视角:“物质组成”
回想上文由碳氧原子通过不同组合形成若干分子的例子。从分子层面继续迭代这种 组合思想,可以形成DNA,细胞,组织,器官,最终可以形成一个完整的人。不同层级之 间都是以类似的几种规则再不断形成新物质。
常用方法有: 高斯分布初始权重(Gaussian distribution) 均匀分布初始权重(Uniform distribution) Glorot 初始权重、 He初始权重 稀疏矩阵初始权重(sparse matrix)
3.2.4、具体流程
① 收集训练集:也就是同时有输入数据以及对应标签的数据。
四、卷积神经网络
▪4.1、视觉感知 4.1.1、画面识别是什么任务?
dnn的参数
dnn的参数
一、DNN的基本概念
深度神经网络(Deep Neural Network,简称DNN)是一种模拟人脑神经元连接的计算模型,用于实现端到端的数值计算和预测。它由多个神经元组成的层级结构构成,每一层都由若干个神经元组成,神经元之间通过权重进行连接。DNN在众多领域取得了显著的成果,如计算机视觉、自然语言处理、语音识别等。
二、DNN的主要参数
1.网络结构:包括层数、每层的神经元数量等。
2.激活函数:用于引入非线性变换,增强模型的表达能力。常见的激活函数有Sigmoid、ReLU等。
3.损失函数:衡量模型预测值与实际值之间的差距,常见的损失函数有均方误差(MSE)、交叉熵损失等。
4.优化器:用于更新模型参数,常见的优化器有梯度下降、Adam、RMSProp等。
5.正则化:用于防止过拟合,常见的正则化方法有L1、L2正则化等。
三、参数调整方法
1.学习率调整:通过改变优化器的更新幅度,影响模型训练速度。
2.批量大小调整:控制每次迭代使用的样本数量,影响模型泛化能力。
3.神经元数量调整:根据任务复杂度,适当增加或减少神经元数量。
4.网络结构调整:尝试不同层数和神经元数量的组合,找到最佳网络结
构。
5.激活函数和损失函数调整:根据任务特点,选择合适的激活函数和损失函数。
四、参数优化策略
1.网格搜索:穷举所有参数组合,找到最佳组合。
2.随机搜索:在参数空间中随机选取组合,减少计算量。
3.贝叶斯优化:利用概率论方法,高效地搜索优质参数组合。
4.遗传算法:模拟自然进化过程,寻找优秀参数组合。
五、总结与展望
第2、3章 神经网络与深度学习课后题参考答案
2-1 分析为什么平方损失函数不适用于分类问题?
损失函数是一个非负实数,用来量化模型预测和真实标签之间的差异。我们一般会用损失函数来进行参数的优化,当构建了不连续离散导数为0的函数时,这对模型不能很好地评估。直观上,对特定的分类问题,平方差的损失有上限(所有标签都错,损失值是一个有效值),但交叉熵则可以用整个非负域来反映优化程度的程度。从本质上看,平方差的意义和交叉熵的意义不一样。概率理解上,平方损失函数意味着模型的输出是以预测值为均值的高斯分布,损失函数是在这个预测分布下真实值的似然度,softmax 损失意味着真实标签的似然度。
在二分类问题中y = { + 1 , − 1 }在C 分类问题中y = { 1 , 2 , 3 , ⋅ ⋅ ⋅ , C }。可以看出分类问题输出的结果为离散的值。分类问题中的标签,是没有连续的概念的。每个标签之间的距离也是没有实际意义的,所以预测值和标签两个向量之间的平方差这个值不能反应分类这个问题的优化程度。比如分类 1,2,3, 真实分类是1, 而被分类到2和3错误程度应该是一样的,但是明显当我们预测到2的时候是损失函数的值为1/2而预测到3的时候损失函数为2,这里再相同的结果下却给出了不同的值,这对我们优化参数产生了误导。至于分类问题我们一般采取交叉熵损失函数(Cross-Entropy Loss Function )来进行评估。
2-2 在线性回归中,如果我们给每个样本()()(,)n n x y 赋予一个权重()n r ,
经验风险函数为()()
()21
深度学习与卷积神经网络基础理论与实例分析ppt课件
2.1 人脑视觉机理---大脑神经元的信号传输
神经元
人工神经网络
树突
输入
神经元 接收信号
隐含层输入
神经元激活 轴突发出信号
隐含层输出
大脑神经元信号传输的模拟
5
2.人脑视觉机理与特征表示
2.1 人脑视觉机理---大脑识别物体过程
从原始信号摄入开始(瞳孔 摄入像素 Pixels);
接着做初步处理(大脑皮层 某些细胞发现边缘和方向);
training
10
2.3浅层学习和深度学习
2.人脑视觉机理与特征表示
深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而 最终提升分类或预测的准确性。因此,“深度模型”是手段,“特征学习”是目的。区别于传统的浅层学习, 深度学习的不同在于: 1)强调了模型结构的深度,通常有5层、6层,甚至几十层的隐层节点; 2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个 新特征空间,从而使分类或预测更加容易。这种分层结构,是比较接近人类大脑的结构的。 与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。
特征表示也可以分层
结构性特征 抽象层面越高,存在的可 能猜测就越少,就越利于 分类
初级(浅层)特征表示
8
深度学习 目标检测
深度学习目标检测
深度学习是一种通过模拟人脑神经网络原理来进行模式识别和学习的机器学习方法。目标检测是深度学习在计算机视觉领域中的重要应用之一,旨在从图像或视频中准确地定位和识别出感兴趣的目标物体。
在传统的计算机视觉方法中,目标检测通常是通过手工设计特征和使用分类器来实现的。但是,这种方法存在着很多局限性,如特征的选择和设计需要专业知识和经验,无法适应不同场景和目标的变化等。而深度学习通过自动学习特征和目标的表示,可以克服传统方法的这些限制,并在目标检测任务中取得了巨大的成功。
深度学习目标检测主要分为两个阶段:候选区域生成和目标分类。首先,通过使用深度神经网络模型,如卷积神经网络(CNN),在图像中生成一系列候选区域。这些候选区域通
常是由滑动窗口或选择性搜索等方法生成的,其中每个区域都被认为可能包含目标物体。然后,通过再次使用深度神经网络对这些候选区域进行目标分类和定位。
对于目标分类,常用的方法是使用卷积神经网络中的全连接层,将候选区域的特征与不同的目标类别进行匹配,并输出一个概率分布。一般来说,分类器会利用softmax函数对这些概率进
行标准化,最终确定每个候选区域所属的目标类别。
在目标定位方面,常用的方法是使用回归模型来预测目标的位置和大小。具体来说,回归模型会输出一个包含目标边界框的
四个坐标值的向量,用来精确定位目标的位置。
目标检测的深度学习模型通常需要大量的标注数据进行训练,以及大量的计算资源进行模型优化和推理。近年来,随着深度学习的快速发展,许多重要的目标检测算法被提出,如R-CNN、Fast R-CNN、Faster R-CNN、YOLO和SSD等。
yolo系列知识笔记
yolo系列知识笔记
YOLO(YouOnlyLookOnce)是一种基于深度学习的目标检测算法,由Joseph Redmon等人于2015年提出。相较于传统的目标检测算法,YOLO能够实现实时目标检测,且准确率较高。在此笔记中,我们将介绍YOLO系列算法的基本原理及其变种。
一、YOLO v1
YOLO v1是YOLO系列的第一代算法,其主要思想是将目标检测问题转化为一个回归问题。具体而言,YOLO将图像分成S×S个网格(grid),每个网格负责检测该网格中是否存在目标,并预测目标的位置和类别。每个网格中预测B个边界框(bounding box),每个边界框预测5个参数:中心坐标x、y、宽度w、高度h以及目标得分。目标得分代表该边界框中存在目标的概率,是一个0到1之间的值。类别预测则是一个C维向量,表示目标属于C个类别中的哪一类。因此,每个网格的预测结果可以表示为:
$P_i$($object$) × $confidence$ × $P_j$($class$) ×
$B_{i,j}$
其中,$P_i$($object$)是一个二值变量,表示该网格中是否存在目标;$confidence$是该边界框的目标得分;$P_j$($class$)是一个C维向量,表示目标属于C个类别中的哪一类;$B_{i,j}$是一个长度为4的向量,表示该边界框的中心坐标和宽度、高度。
YOLO v1的损失函数包括两部分:定位误差和分类误差。定位误差是指预测框与实际框之间的误差,可以用均方差(MSE)来度量。
分类误差是指目标类别的误差,可以用交叉熵(Cross-Entropy)来度量。YOLO v1的总损失函数为:
目标检测——深度学习下的小目标检测(检测难的原因和Tricks)
⽬标检测——深度学习下的⼩⽬标检测(检测难的原因和
Tricks)
⼩⽬标难检测原因
主要原因
(1)⼩⽬标在原图中尺⼨⽐较⼩,通⽤⽬标检测模型中,⼀般的基础⾻⼲神经⽹络(VGG系列和Resnet系列)都有⼏次下采样处理,导致⼩⽬标在特征图的尺⼨基本上只有个位数的像素⼤⼩,导致设计的⽬标检测分类器对⼩⽬标的分类效果差。
(2)⼩⽬标在原图中尺⼨⽐较⼩,通⽤⽬标检测模型中,⼀般的基础⾻⼲神经⽹络(VGG系列和Resnet系列)都有⼏次下采样处理,如果分类和回归操作在经过⼏层下采样处理的特征层进⾏,⼩⽬标特征的感受野映射回原图将可能⼤于⼩⽬标在原图的尺⼨,造成检测效果差。
其他原因
(1)⼩⽬标在原图中的数量较少,检测器提取的特征较少,导致⼩⽬标的检测效果差。
(2)神经⽹络在学习中被⼤⽬标主导,⼩⽬标在整个学习过程被忽视,导致导致⼩⽬标的检测效果差。
Tricks
(1) data-augmentation.简单粗暴,⽐如将图像放⼤,利⽤ image pyramid多尺度检测,最后将检测结果融合.缺点是操作复杂,计算量⼤,实际情况中不实⽤;
(2)特征融合⽅法:FPN这些,多尺度feature map预测,feature stride可以从更⼩的开始;
(3)合适的训练⽅法:CVPR2018的SNIP以及SNIPER;
(4)设置更⼩更稠密的anchor,设计anchor match strategy等,参考S3FD;
(5)利⽤GAN将⼩物体放⼤再检测,CVPR2018有这样的论⽂;
(6)利⽤context信息,简历object和context的联系,⽐如relation network;
深度学习笔记(3)神经网络,学习率,激活函数,损失函数
深度学习笔记(3)神经⽹络,学习率,激活函数,损失函数神经⽹络(NN)的复杂度
空间复杂度:
计算神经⽹络的层数时只统计有运算能⼒的层,输⼊层仅仅起到将数据传输进来的作⽤,没有涉及到运算,所以统计神经⽹络层数时不算输⼊层
输⼊层和输出层之间所有层都叫做隐藏层
层数 = 隐藏层的层数 + 1个输出层
总参数个数 = 总w个数 + 总b个数
时间复杂度:
乘加运算次数
学习率以及参数的更新:
w t+1=w t−lr∗∂loss ∂w t
指数衰减学习率的选择及设置
可以先⽤较⼤的学习率,快速得到较优解,然后逐步减⼩学习率,使模型在训练后期稳定。指数衰减学习率 = 初始学习率 * 学习率衰减率(当前轮数 / 多少轮衰减⼀次)
指数衰减学习率=初始学习率∗学习率衰减率
当前轮数
多少轮衰减⼀次
#学习率衰减
import tensorflow as tf
w = tf.Variable(tf.constant(5, dtype=tf.float32))
epoch = 40
LR_BASE = 0.2
LR_DECAY = 0.99
LR_STEP = 1
for epoch in range(epoch):
lr = LR_BASE * LR_DECAY**(epoch / LR_STEP)
with tf.GradientTape() as tape:
loss = tf.square(w + 1)
grads = tape.gradient(loss, w)
w.assign_sub(lr * grads)
print("After %2s epoch,\tw is %f,\tloss is %f\tlr is %f" % (epoch, w.numpy(), loss,lr)) After 0 epoch, w is 2.600000, loss is 36.000000 lr is 0.200000
目标检测详解
目标检测详解
目标检测是计算机视觉中的重要研究领域,它旨在识别图片或视频中的物体与目标。它是智能视觉系统自动检测并定位可能存在的复杂物体的前提。通过深度神经网络的应用,目标检测发展迅速,技术和应用也变得日趋成熟。本文将详细阐述目标检测的概念、基本原理和最新应用,以便让读者能够更全面地理解这一技术。
首先,说明一下目标检测的概念。它是智能视觉系统自动检测并定位可能存在的复杂物体的前提。它利用机器学习和深度学习等新技术来区分待检测物体和其他非物体特征,并可以精准地从图像或视频中检测、识别物体,输出待检测物体的边界框。其次,要了解目标检测的基本原理。
目标检测的基本原理是利用深度神经网络(Deep Neural Network,DNN)处理大量样本图像,应用卷积神经网络(Convolutional Neural Network,CNN)建立模型,分析该模型中各个层次特征,获得待检测物体的边界框,进一步获取检测边界框概念,以预测物体的位置、大小、类别等信息。最后,介绍一下对目标检测的最新应用。
由于目标检测技术的精准度逐步提高,该技术已在各个领域的应用都得到发展,尤其是新兴领域。比如,在安防和多媒体行业,可以精准跟踪特定人员和危险物体,从而提升安全水平;在计算机辅助诊断(CAD)领域,可以方便医生对图像学检
查结果进行准确定位和诊断;在无人驾驶领域,可以识别并处理道路上行人、车辆和其他障碍物,指引车辆更安全地行驶;在智慧城市领域,可以设计智能家居自动识别家庭成员,根据他们的年龄和性别调整家庭温度、光照强度等,开启智慧家庭的新篇章。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深度神经网络及目标检测学习笔记
https://youtu.be/MPU2HistivI
上面是一段实时目标识别的演示,计算机在视频流上标注出物体的类别,包括人、汽车、自行车、狗、背包、领带、椅子等。
今天的计算机视觉技术已经可以在图片、视频中识别出大量类别的物体,甚至可以初步理解图片或者视频中的内容,在这方面,人工智能已经达到了3岁儿童的智力水平。这是一个很了不起的成就,毕竟人工智能用了几十年的时间,就走完了人类几十万年的进化之路,并且还在加速发展。
道路总是曲折的,也是有迹可循的。在尝试了其它方法之后,计算机视觉在仿生学里找到了正确的道路(至少目前看是正确的)。通过研究人类的视觉原理,计算机利用深度神经网络(Deep Neural Network,NN)实现了对图片的识别,包
括文字识别、物体分类、图像理解等。在这个过程中,神经元和神经网络模型、大数据技术的发展,以及处理器(尤其是GPU)强大的算力,给人工智能技术
的发展提供了很大的支持。
本文是一篇学习笔记,以深度优先的思路,记录了对深度学习(Deep Learning)的简单梳理,主要针对计算机视觉应用领域。
一、神经网络
1.1 神经元和神经网络
神经元是生物学概念,用数学描述就是:对多个输入进行加权求和,并经过激活函数进行非线性输出。
由多个神经元作为输入节点,则构成了简单的单层神经网络(感知器),可以进行线性分类。两层神经网络则可以完成复杂一些的工作,比如解决异或问题,而且具有非常好的非线性分类效果。而多层(两层以上)神经网络,就是所谓的深度神经网络。
神经网络的工作原理就是神经元的计算,一层一层的加权求和、激活,最终输出结果。深度神经网络中的参数太多(可达亿级),必须靠大量数据的训练来“这是苹在父母一遍遍的重复中学习训练的过程就好像是刚出生的婴儿,设置。.果”、“那是汽车”。有人说,人工智能很傻嘛,到现在还不如三岁小孩。其实可以换个角度想:刚出生婴儿就好像是一个裸机,这是经过几十万年的进化才形成的,然后经过几年的学习,就会认识图片和文字了;而深度学习这个“裸机”用了几十年就被设计出来,并且经过几个小时的“学习”,就可以达到这个水平了。
1.2 BP算法
神经网络的训练就是它的参数不断变化收敛的过程。像父母教婴儿识图认字一样,给神经网络看一张图并告诉它这是苹果,它就把所有参数做一些调整,使得它的计算结果比之前更接近“苹果”这个结果。经过上百万张图片的训练,它就可以达到和人差不多的识别能力,可以认出一定种类的物体。这个过程是通过反向传播(Back Propagation,BP)算法来实现的。
建议仔细看一下BP算法的计算原理,以及跟踪一个简单的神经网络来体会训练的过程。
1.3 小结
人工神经网络就是根据人的神经元模型而构建的一个感知算法,利用大量的神经元组合对人的认知行为进行拟合。目前我们仍然无法精确的知道它为什么能工作、如何工作,如同我们仍然无法精确知道人的大脑是如何工作一样。
在摸索过程中,我们好像应该更多地思考人类自己是怎么去“看”的,这会更有助于设计更好的算法。比如本文开头的视频识别算法,它很快,但是不够精确,而有些可以“看清”细节的算法,就会非常慢。就像我们人类自己,走马观花只能看到概貌,驻足观赏才能看清细节。
我们越了解自己,就越能做得更好。
二、卷积神经网络
2.1 简介
卷积神经网络(Convocational Neural Network,CNN)是一个特殊的深层神经网络,目前在计算机视觉领域广泛使用,可以认为它是一个二维向量(图片就是一个二维向量)的感知器。.
CNN算法的核心是对图像(二维向量)进行矩阵卷积运算,这就相当于是对图
像进行加权求和。为了减小计算量,CNN采用了局部感知和权值共享的方法。
局部感知,就是用一个N×N(如N=3)的矩阵(称为卷积核)去滑动扫描图像,进行卷积运算。权值共享,就是扫描图片的滑动矩阵的权值是共享的(相同的)。在实际运算中,这个卷积核相当于一个特征提取的过滤器(filter)。举例来说,
假设一个10×10的图像,用一个3×3的卷积核以步长1做一次卷积运算,那么会得到一个8×8的特征图(feature map)。为了使得到的feature map和原图等大小,一般给原图进行扩充为12×12,这样卷积一次以后,得到的仍然是10×10大小的图像。在这个例子中,如果不采用权值共享,则一共需要100个权值参数,权值共享后,只需要3×3=9个权值参数。
在实际中,一个RGB图像是三个通道,而卷积核也可能有多个。这样计算起来会比上面的例子复杂些,但基本原理是一样的。
2.2 CNN计算流程
一个典型的CNN算法的流程大概是这样的:首先是输入,然后是n个卷积和池化的组合,最后全连接层感知分类。
在这个流程里,卷积运算主要是用来提取特征。一个典型的卷积计算如下图所示。<卷积计算示意图>
图中input是同一个图像的三个通道,周边有填充0;有两个卷积核Filter W0和Filter W1,一个filter滑动到一个位置后计算三个通道的卷积,求和,加bias,
得到这个filter在该位置的最终结果;每个filter的输出是各个通道的汇总;输出的个数与filter个数相同。在这里还要加上激活函数,对计算结果进行非线性变换。常用的激活函数有tanh、ReLU、sigmoid等。激活函数的作用好像可以解释为:过滤掉一些可以忽略的不重要因素,以避免其对决策产生过度影响。
池化是为了降维,有最大池化(Max Pooling)和平均池化(Average Pooling)。最大池化的示例如下图。2×2一个
它输出它将前面卷积层提取的特征映射到样本标记空间,最后是全连接层,一个分类的概率,也就是最终的结果。模型典型的CNN2.3
最大池化,识别×2×55卷积核,2LeNet,最早用于数字识别的CNN,用—POOLCONVPOOL——28输入为×28的灰度点阵,网络结构是(CONV—。—FC)CONV。网络结构如10%2012 ImageNet比赛第一名,准确度超过第二名AlexNet,511、,卷积核分别是3个FC11×、个、个、个下图。5CONV3POOL2LRN 作为激活函数。ReLU,采用3×3、5×.
卷积核。3×3,使用VGG,有跟多的卷积层(16~19)。1来减少参数(用1×卷积核降维)InceptionGoogLeNet,采用层到据说上千层。采用残差网络来解决,很多很多层的网络,从152ResNet 多层网络难以训练的问题。以上网络的对比如下表。.
2.4 训练集应该可以感受到,人工智能也好,深度学习也好,算法的优劣是一
方面,而需要大量的对最终的效果影响更大。而训练集又非常难做,训练数据集的好坏,就在做这个工年ImageNet数据,且标记这些数据需要巨大的工作量(过去的8。逐渐,一些数据集就慢慢出了名。很多算法的性能数据都会指明是在哪个作)数据集上训练的。一些有名的数据集如下。60000,一个手写数字数据库,有:深度学习领域的“Hello World!”MNIST。数据集以28*2810000个测试样本集,每个样本图像的宽高为个训练样本集和12M。二进制存储,不能直接查看。数据集大小为多万幅图片,涵李飞飞团队过去几年的成果,目前有1400ImageNet:MIT层次(目前只有名根据ImageNetWordNet万多个类别。数据集大小为盖21T。其中每个节点的层次结构是由成千上万的图像描绘。词)组织的一个图像数据库,目前,有平均每个节点超过五百的图像。,是一个新的图像识别、分割、和字幕数:Common Objects in ContextCOCO 。40G据集,由微软赞助,具有上下文识别、语义描述等特点。数据集大小为
PASCAL VOC:图片集包括20个目录,数据集图像质量好,标注完备,非常适合用来测试算法性能。数据集大小为2G。
由于数据集生成有一定难度且工作量巨大,两年来GAN(Generative Adversarial Nets,生成对抗网络)快速发展,并在很多应用场景的训练集生成产生了巨大作用,比如车牌识别。
三、物体检测
3.1 检测流程
在实际场景中,我们需要在一副图像中找出有哪些物体,这是一个多对多的映射(所谓的回归)。按照已有的CNN方法,常规的检测流程就是:先找到哪些区域有物体,然后再用CNN来对其分类。
区域选择最原始的办法就是用不同大小的滑动窗口对整幅图像进行扫描。这样不但计算量大,也容易造成误判。一个改进的方法是所谓Region Proposal,即预先找出物体可能在的位置。这里需要提到以下几个概念。
IoU:Intersection over Union,Region Proposal与Ground Truth的窗口的交集比并