目标检测入门知识以思考(写于2021.11)

本文中的内容,是基于两篇论文以及《机器学习入门好文,强烈推荐》的全文结构,并针对其中不懂的内容进行拓展查阅后写的。因为过多的概念和术语不清晰,所以目前只是简单的对相关知识进行查阅并写下自己对该知识点的理解,目前仅是为了更好的理解论文。因此只了解其中的基础,不对具体内容(例如:多种算法的实现)进行深入了解。由于没有很深入的学习,所以理解不算深刻。与其说是理解,倒不如说是学习笔记。另外,笔记中可能存在不正确的地方,如有时间,还望指正。

理解

遥感图像分类,一种对通过对遥感图像内容的提取分析后,根据其分析结果对遥感图像进行场景分类的工作,是目标检测的前提。而目标检测需要在分类的基础上,从图像中进一步识别到目标的位置信息。个人理解,遥感图像分类类似于在一个很大很乱的数据集中,找出相同类别的图像然后放在同一个类别当中。例如找出哪些属于飞机场,哪些属于车站,哪些属于农田。目标检测则是在已经分好类的机场类的图像中找出图像中的飞机,并定位到图像中飞机的位置。至于计算机如何通过算法进行图像分类,如何在仅有一张图片的情况下,通过卷积操作提取特征识别图中的信息,这些都涉及到具体的功能实现。

不论是遥感图像的分类还是目标检测,似乎在淘汰费时费力的传统人工方法后,都开始采用深度学习的相关技术。在和深度学习挂钩的前提下,读论文和自行查找资料了解相关知识的过程中,可以很直观的发现其中包含很多与数学相关的内容:激活函数、损失函数、支持向量机、卷积核的操作等等,大量的公式、算法包含在其中,感觉整体是偏向数学方面的学习(当然可能是目前还没有深入到利用代码具体实现的层面)。

通过初步了解学习,我是觉得遥感图像的分类和目标检测两个方向上存在部分知识以及技术上的重合。但是目标检测在实际中似乎有更深入的应用,目前目标检测更有吸引力。

一、机器学习

机器学习就是通过分析一些已有的数据,推导出一个模型,并利用此模型来预测的一种方法(简单可以理解为,针对某件事的经验多了,就可以通过当前的情况进行事情的预测)

关键词:训练、模型、预测

机器学习与模式识别,统计学习,数据挖掘,计算机视觉,语音识别,自然语言处理等领域都有很多联系。

1. 回归算法

1.1 回归分析

回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。通常使用曲线/线来拟合数据点,目标是使曲线到数据点的距离差异最小。

1.2 线性回归

线性回归假设目标值与特征之间线性相关,即满足一个多元一次方程。通过构建损失函数,来求解损失函数最小时的相关参数。

1.2.1 损失函数

通过损失函数来量化误差,从而获取拟合最好的结果

例如:最小二乘(误差平方和最小,最优问题转化为函数极值问题)

深度学习的领域中,交叉熵、三元组、均方误差以及平均绝对误差是比较经典的损失函数

1.3 逻辑回归

逻辑回归是一个分类算法,它可以处理二元分类(0、1)以及多元分类(0、1、2、…)。由于是分类算法,所以最终的结果需呈现分类的形式(即二元分类中,结果仅为0或者1。多元分类中结果为0、1、2或者…等离散值)。

以线性回归为基础,最终结果y是一个连续的值,但设定当Y处于一定范围内时,不论y原本是多少,最终结果均划分到0,在另一范围内时结果均划分到1,就可以实现结果的0、1分类。

把在较大范围内变化的输入值挤压到(0,1)的输出范围。即对线性回归的结果进行一次函数的映射,逻辑回归使用一个函数来归一化y值,使y的取值在区间(0,1)内,这个函数称为Logistic函数,也称为Sigmoid函数,将数值结果转化为了0到1之间的概率。

Sigmoid函数的图像一般来说并不直观,你只需要理解对数值越大,函数越逼近1,数值越小,函数越逼近0,接着我们根据这个概率可以做预测,例如概率大于0.5,则这封邮件就是垃圾邮件,或者肿瘤是否是恶性的等等。从直观上来说,逻辑回归是画出了一条分类线。

#参考
https://blog.csdn.net/ritterliu/article/details/54821300
https://blog.csdn.net/alw_123/article/details/82193535
https://www.cnblogs.com/geo-will/p/10468253.html
https://www.cnblogs.com/pinard/p/6029432.html
http://www.uml.org.cn/ai/202009211.asp
https://www.cnblogs.com/BYRans/p/4713624.html

2. 神经网络(人工神经网络,ANN)

一个正方形,分解为四个折线进入视觉处理的下一层中。四个神经元分别处理一个折线。每个折线再继续被分解为两条直线,每条直线再被分解为黑白两个面。于是,一个复杂的图像变成了大量的细节进入神经元,神经元处理以后再进行整合,最后得出了看到的是正方形的结论。这就是大脑视觉识别的机理,也是神经网络工作的机理。

2.1 输入层、隐藏层、输出层

输入层负责接收信号,隐藏层负责对数据的分解与处理,最后的结果被整合到输出层。

经过输入层到隐藏层、隐藏层到输出层的矩阵运算后,得到的结果是线性的。(如果问题比较简单,可直接利用单层神经网络表示线性的分离函数。由于结果本身是线性的,所以不用做更多的处理)。多个隐藏层可以用于拟合非线性函数。

**激励函数添加非线性:**以两层结构为例,最终的结果需要拟合一个非线性函数,这个时候线性结果不能满足需要,因此需要一个激活层(激励函数,也叫传递函数。有阶跃函数、Sigmoid、ReLU等)给之前矩阵运算的结果添加非线性。

Softmax函数,正规化:非线性添加过后,最终对输出结果通过 Softmax函数 进行正规化( Softmax 直白来说就是将原来输出,通过Softmax函数的作用,映射成为(0,1)的值,可以理解为正规化为概率)。

**交叉熵损失量化输出结果的好坏程度:**交叉熵损失(对数的负数),概率约接近100%,该计算结果越接近0,说明结果越准确,训练神经网络的目的就是为了尽可能的减小这个值。

**总结概括:**神经网络的传播都是形如 Y=WX+b 的矩阵运算;为了给矩阵运算加入非线性,需要在隐藏层中加入激活层;输出层结果需要经过Softmax层处理为概率值,并通过交叉熵损失来量化当前网络的优劣

BP算法(反向传播学习算法(B-P算法):BP算法中,权值的修正是通过一个误差反向传播过程完成的,属于反馈型网络

梯度下降法:对矩阵运算中的W和b进行一定的调整,调整过后对结果产生了正向的或者逆向的影响,就对W和b进行对应的修改(例如:如果适当增大b1后,准确率增加,那就继续增大b1),直到交叉熵损失达到理想的最小结果。

#参考
https://zhuanlan.zhihu.com/p/65472471
https://zhuanlan.zhihu.com/p/100419971

3. SVM(支持向量机)

支持向量机是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 “最好地” 区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。SVM 适合中小型数据样本、非线性、高维的分类问题。

每条线都可以叫做一个划分超平面,找到的这条效果最好的线就是具有 “最大间隔的划分超平面”(之所以为超平面,是因为在实际样本中,样本的特征可能是高维的,这样样本的划分就不单是一条直线了)。

SVM 将会寻找可以区分两个类别并且能使间隔(margin)最大的划分超平面。

比较好的划分超平面,样本局部扰动时对它的影响最小、产生的分类结果最鲁棒、对未见示例的泛化能力最强。

鲁棒性(Robust):用来描述系统或算法能够适应应用环境、可以面对复杂适应系统的能力(系统在一定参数变化下,维持自身某些性能的能力)。

泛化能力:是指机器学习算法对新鲜样本的适应能力,算法模型对未知数据的预测能力。

#参考
https://blog.csdn.net/qq_31347869/article/details/88071930
https://blog.csdn.net/aa804738534/article/details/104840895

4. 聚类算法

简单来说就是给一定的未标记、未分类的样本进行 “ 簇 ” 的划分,而每个簇有对应一些潜在的类别。

在算法中,训练数据是不含标签的,而算法的目的就是通过训练来推测出这些数据的标签。

聚类算法就是计算种群中的距离,根据距离的远近将数据划分为多个族群。

#参考
https://shuwoom.com/?p=1193
http://www.360doc.com/content/15/0313/13/22324237_454809740.shtml

5. 降维算法

将数据从高纬度降低到低纬度层次(其中所谓的维度,其实是表示数据的特征量大小)。

数据纬度高,说明数据量大、特征越多,分析的结果虽然更加可信,但会出现过拟合的现象,同时计算起来也耗费过多的资源。降维算法就是在减少维度特征的同时,也避免丢失太多的信息。

机器学习中的降维是采用某种映射方法,将原来高维空间中的数据点映射到低纬度的空间中。

过拟合:对训练数据拟合过于完美,但对于测试集合的数据拟合变差。

#参考
https://blog.csdn.net/sinat_35678407/article/details/106814641

6. 监督学习、无监督学习

监督学习:从给定的训练数据中训练出一个模型,当新的数据到来时,可以根据模型来预测结果。监督学习中的数据是提前做好了分类信息的,训练样本中是同时包含有特征和标签信息的。

就例如,需要创建一个可以识别动物的机器学习算法。对于拿来训练模型的数据集,我必须要先对动物的类别进行分类。这些是猫,这些是狗,那些是老虎等等。当训练数据都进行标记后,进行模型的训练,最终得到一个模型结果。这个时候我对某一个数据进行预测,就可以识别出数据所在的类别,是猫、狗还是老虎等等动物。

上面算法中属于监督算法的有:线性回归,逻辑回归,神经网络,SVM。分类、回归

无监督学习:训练样本的标记信息未知,计算机对无标记样本进行训练后,会将有同样内在性质和规律的数据分类到一起,成为一个聚类,为即将进行数据分析的数据提供一个类别基础。

就例如,通过爬虫爬取到网易新闻当中的一些新闻数据后,但是新闻会有很多的种类(国际信息、国内新闻、社会新闻等等),我不知道爬取回来的新闻属于哪一种。这个时候通过无监督学习的相关算法对数据进行训练,就会通过某些内容(关键字?相同内容?)把新闻数据进行聚类。

上面算法中属于无监督算法的有:聚类算法,降维算法。聚类

6.1 标签

图像级标签:例如粗略的图像中目标的类别信息

边框级标签:比如图像中目标位置围上的边界框信息

弱监督学习:

不完全监督(Incomplete supervision)、不确切监督(Inexact supervision)、不精确监督(Inaccurate supervision)。

不完全监督是指,训练数据中只有一部分数据被给了标签,有一些数据是没有标签的。

不确切监督是指,训练数据只给出了粗粒度标签。我们可以把输入想象成一个包,这个包里面有一些示例,我们只知道这个包的标签,Y或N,但是我们不知道每个示例的标签。

不精确监督是指,给出的标签不总是正确的,比如本来应该是Y的标签被错误标记成了N。

https://zhuanlan.zhihu.com/p/81404885

7. 分类和聚类

对于分类来说,在对数据集分类时,我们是知道这个数据集是有多少种类的

而对于聚类来说,我们不知道具体有多少类。聚类要做的就是把数据集中相似的数据全部归纳在一起。

聚类是将数据对象的集合分成相似的对象类的过程。使得同一个簇(或类)中的对象之间具有较高的相似性,而不同簇中的对象具有较高的相异性。

#参考
https://blog.csdn.net/zb1165048017/article/details/48579677
https://baijiahao.baidu.com/s?id=1662310837581677577&wfr=spider&for=pc
https://blog.csdn.net/mary_0830/article/details/96323281
https://blog.csdn.net/xzfreewind/article/details/73770327

7.1 遥感图像中的分类及相关方法

分类:遥感图像分类的目的就是将多个遥感场景进行区分。

基于人工提取特征的方法:

颜色直方图表示,纹理特征描述符,GIST 特征描述符,尺度不变特征变换描述符以及方向梯度直方图表示

基于非监督特征学习的方法:

遥感图像领域常用的非监督特征学习方法有:主成分分析法、K均值聚类、稀疏编码以及自动编码器

基于深度学习提取特征的方法:

栈式自编码器,卷积神经网络

7.2 分类的主要难点

1.过拟合问题:在原始样本的基础上,使用数据增强技术加以扩充;同事,也考虑修改合适的深度迁移学习网络模型的参数,例如引入正则化和全局学习衰减等等。

2.遥感图像的类别特性:遥感图像拥有较高的类间相似性与类内差异性。

7.3 分类算法的评价指标

在计算中会用到以下四个概念:

TP (True Positive) 指的是正类遥感图像中,分类正确的样本个数。

FN (False Negative)指的是在正类遥感图像中,错误地分为负类的遥感图像个数。

FP (False Positive) 指的是在负类遥感图像中,错误地分为正类遥感图像的个数。

TN (True Negative) 指的是在负类遥感图像中,分类正确的样本个数。

准确率:在给定遥感图像训练或测试数据集中,被正确分类的要本数据占全部要本数据的比重。

精确率:算法分类时,已经预测为正类的遥感图像样本中,实际标签页是正类的比重。

召回率:被正确分类的正类遥感图像数量,占样本数据中所有正类样本的比重。

二、深度学习

深度学习是传统的神经网络发展到了多隐藏层的情况

强调结构模型的深度,通常会有5、6甚至是10多层的隐层节点。通过逐层的特征变换,将样本在原空间的特征表示变换到一个新的特征空间,从而使分类或者预测更加容易。

#参考
https://baike.baidu.com/item/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/3729729?fr=aladdin

1. 卷积神经网络(CNN)

卷积是一种积分变换的数学方法。

卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络

卷积神经网络和上诉神经网络相同由输入层、隐藏层、输出层组成。其中但其中的隐藏层可分为卷积层、(激活函数)、池化层、全连接层

1.1 卷积层

卷积层通过卷积计算,来实现对特征的提取。

卷积核:卷积核就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核。

1.1.1 感受野

局部关联、窗口(receptive field)滑动。receptive field,也就是感受野,每个神经元只与输入数据的一个局部区域连接,局部区域的大小即为感受野的大小。

例如:输入图像是32×32×3,3是它的深度(即RGB),卷积层是一个5×5×3的filter(滤波器),这里注意,滤波器的深度必须和输入图像的深度相同。通过一个filter与输入图像的卷积可以得到一个28×28×1的特征图

1.1.2 神经元的空间排列
  • 深度/depth
  • 步长/stride,滑动滤波器的时候指定的步长
  • 零填充/zero-padding,对于某些不够的滑动的像素,就需要在边界上添加0元素
1.1.3 权值共享

卷积层内部包含多个卷积核,组成卷积核的每个元素都对应一个权重系数和一个偏差量。卷积核在工作室,会有规律的扫过输入特征,在感受野内对输入特征做矩阵元素乘法求和并叠加偏差量。

在卷积层中权值共享是用来控制参数的数量。假如在一个卷积核中,每一个感受野采用的都是不同的权重值(卷积核的值不同),那么这样的网络中参数数量将是十分巨大的。因此需要共享权值来控制参数的数量,也就是通过同一个filter去扫描图片(即在特征数据上均使用同样的卷积核进行处理)。

1.2 激活函数

同上面人工神经网络中的激活函数,添加非线性

1.3 池化层

在连续的卷积层之间会周期性地插入一个池化层。主要用来降低数据体的空间尺寸,能减少网络中参数的数量,使得计算资源耗费变少,也能有效的控制过拟合。(对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征)

对提取的比较大的特征图像实现降采样,对上一层的特征数据进行压缩,并减少了网络模型的参数量。

平移不变性:

不变性简单理解就是指目标发生了变换,但是依然可以进行识别。

如果平移之后的输入图像的下采样的上采样于原始图像的下采样的上采样相同,那么就是平移不变性。

池化层用的方法有Max pooling 和 average pooling

ROI pooling:regions of interest,感兴趣的区域

  1. 根据输入image,将ROI映射到feature map对应位置;
  2. 将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
  3. 对每个sections进行max pooling操作;

1.4 全连接层

连接所有的特征,将输出值送给分类器。

主要是对前面输出的特征信息实现组合,并处理得到一个一维数据

批量归一化:将输入值或卷积网络的张量进行类似标准化的操作,将其放缩到合适的范围,从而加快训练速度;另一方面使得每一层可以尽量面对同一特征分布的输入值,减少了变化带来的不确定性。

1.5 优化方法

卷积神经网络的主要优化方法:局部感受野、权值共享(在特征数据上均使用同样的卷积核进行处理)、反向传播、优化器以及正则化

前向传播:输入的样本数据经过中间的各级隐藏层实现特征映射,并在最终的输出层得到输出数据

反向传播:通过输出数据与预期的目标值求解误差,并推导得到隐藏层的相关误差,有目的性的调整权重参数W和偏置项参数b。

优化器:用来对参数进行调整优化。使用比较广的三种优化器:Momentum、RMSProp 以及 Adam 。

正则化:就是通过对网络模型添加特定的信息,以此降低过拟合的风险。常用方法有:L1和L2参数正则化、丢弃法以及早停法。

#参考
https://www.matongxue.com/madocs/32/
https://blog.csdn.net/weixin_35479108/article/details/84629464
https://blog.csdn.net/zouxy09/article/details/49080029
https://zhuanlan.zhihu.com/p/47184529
https://baike.baidu.com/item/%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/17541100?fr=aladdin
https://www.jianshu.com/p/1ea2949c0056
https://blog.csdn.net/zong596568821xp/article/details/80459968
https://blog.csdn.net/u011436429/article/details/80279536
https://blog.csdn.net/weixin_42621901/article/details/108902885
https://www.cnblogs.com/itmorn/p/11241236.html#ct1

三、迁移学习

1. 基本内容

源域:用于训练的大规模自然图像数据集

目标域:实际任务中的遥感图像小样本数据集

迁移学习的过程:根据源域上源任务预先学习到的知识,以此来完成目标域上的目标任务。

迁移学习的一般规律,即从较大的样本数据域学习知识,并将其迁移到较小的数据域(目标域 < 源域

2. 使用场景

当目标任务所提供的的训练数据集较小时,网络模型学习的知识是不充分的,影响了其在测试数据集上的实验效果,网络模型的泛化能力较差。可考虑使用迁移学习的方法,先利用其他领域的数据进行适当的补充,从而弥补目标任务所需的先验知识。

迁移学习的可行性:当源域与目标域的数据集相关性比较大时,迁移学习的可行性才高

3. 学习种类

基于样本的迁移学习:以数据为关注点,分析源域数据对目标任务是否有用,并根据源域数据的有用程度赋予不同的权值。最大限度的发挥源域数据中的有效信息。

基于特征的迁移学习:在源域和目标域的特征信息具有比较多的相似性前提下。通过源任务,网络模型可以学习到一个在源域上性能较好的特征表示。然后通过特征变换的方法,让来自源域与目标域的数据处于同样的特征空间中,再对源域上的特征表示实现编码操作,并将其迁移到目标域中。

基于模型的迁移学习:把源域中训练较好的网络模型参数迁移到目标任务中。

基于关系的迁移学习:重点考虑来自源域与目标域的数据间的关系网络。例如,生物学上的病毒的传播规律更够迁移到计算机网络中的病毒爆发机制。

四、目标检测

目标检测是在图片中对数目是可变的目标进行分类和定位

计算机视觉中关于图像识别有四大类任务:

分类-Classification、定位-Location、检测-Detection、分割-Segmentation

1. 目标检测算法分类

1.1 Two stage

先进行区域生成,该区域称之为region proposal(简称RP,一个有可能包含待检物体的预选框),再通过卷积神经网络进行样本分类。

任务流程:特征提取 --> 生成RPN --> 分类/定位回归。

常见tow stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。

1.2 One stage

不用RP,直接在网络中提取特征来预测物体分类和位置。

任务流程:特征提取–> 分类/定位回归。

常见的one stage目标检测算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等。

2.目标检测原理

目标检测分为两大系列——RCNN和YOLO系列

RCNN是基于区域检测的代表性算法

YOLO是基于区域提取的代表性算法

候选区域生成(滑动窗口、选择性搜索selective search,简称SS)、数据表示、效果评估、非极大值抑制

3.目标检测模型

3.1 R-CNN系列

3.1.1 R-CNN

(1)采用 Selective Search 选择性搜索方法为每张输入图像预先选取大约 2000 个候选区域,摒弃了通过传统的滑动窗口来暴力穷举候选区域方式。

(2)将候选区域压缩成固定尺寸适应网络输入,然后送入卷积神经网络中提取特征。

(3)将提取的特征送入支持向量机(SVM)进行分类,并依据该区域的特征信息判断目标所属类别。

(4)通过边界回归对候选区域位置和大小进行微调,实现更准确的目标定位。

3.1.2 Fast R-CNN

相对于R-CNN通过SS来实现候选区域的选取,Fast R-CNN则是通过将整张图片进行卷积运算,不需要对数千个候选区域进行重复的提取,提高了速度。

3.1.3 Faster R-CNN

提出区域建议网络Region Proposal Networks(RPN)直接生成候选区域。

Faster R-CNN先使用一组基础的卷积\激活\池化层提取图像的特征后,形成一个特征图。然后送入RPN,通过锚点(anchors)以及边框回归(Bounding box regression)来确定候选区域。然后进入ROI pooling,对池化后的特征向量再进行分类和边框回归,确定特征图,最后分类。

3.2 YOLO系列

核心思想是生成ROI+目标检测两阶段(two-stage)算法用一套网络的一阶段(one-stage)算法替代,直接在输出层回归bounding box的位置和所属类别。

YOLO创造性的将物体检测任务直接当作回归问题(regression problem)来处理,将候选区和检测两个阶段合二为一。只需一眼就能知道每张图像中有哪些物体以及物体的位置。

不同于Faster R-CNN,需要通过一个RPN来获取相应的感兴趣区域,YOLOv1直接将图划分为49和区域,并且这49个区域就是感兴趣区域,这样就可以不用额外的RPN网络,这就是YOLOv1作为单阶段网络的简单之处

YOLOv2、YOLOv3就是一代一代的更替,通过修改一些使用的方法来使性能、结果越来越优秀。目前不做深入了解。

#参考
https://blog.csdn.net/yegeli/article/details/109861867
https://blog.csdn.net/wjinjie/article/details/107509243

五、注意力机制

attention机制可以它认为是一种资源分配的机制,可以理解为对于原本平均分配的资源根据attention对象的重要程度重新分配资源,重要的单位就多分一点,不重要或者不好的单位就少分一点,在深度神经网络的结构设计中,attention所要分配的资源基本上就是权重。

权:不等精度观测值在计算未知量的最可靠值时所占的“比重”或“份额”。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值