xshell连接服务器 github管理代码 LaTex论文撰写
copilot加chatgpt辅助代码编写
卷积核的个数决定了输出通道的个数
卷积核的的维度33n,n取决于输入特征图的维度如1281283,则n=3
1x1卷积核 的作用,将通道数增多或减少。减少参数。 优势:在较低的通道数上执行卷积操作要比在较高通道数上更为高效。同时,1x1卷积核还可以引入非线性,增强模型的表达能力。
降维: 通过1x1卷积将输入通道数降低,可以减少参数量和计算复杂度,同时保留一定的特征信息。
升维: 通过接下来的3x3卷积操作,可以在较低维度上进行更复杂的特征学习。这种结构有助于网络更好地学习和表达特征。
问题:由于反向传播从后往前,对于深度神经网络,后面的层训练的很快.浅层网络一般式提取纹理细节信息,前面训练不好导致浅层信息一发生改变,后面就白训练了.
思想:为了避免顶部(深层)重新训练
位置:放在激活函数前
两次33的卷积核相当于一次5x5的卷积的感受野,并且因为两次卷积后都有一次激活层,能有更好的非线性表达。
感受野:全连接中感受野是整张图片,卷积感受野更小,参数少,效果也好
卷积进行局部连接,与全连接不同,减少了参数量(64个33大小,通道数为2的卷积核,参数个数为64x3x3x2,而一个神经元跟和feature map每个像素连接都有一个权重和偏置,参数巨大.)
为什么效果好?全连接中参数太多了,训练集的数量应当大于参数的数量,否则容易过拟合
卷积就是提取特征,一个卷积核提取一种特征,比如一个卷积核是提取鸟类嘴部特征的,图片与嘴部特征相似的区域,则卷积出来的值也就越大.前面的卷积是提取特征的,后面的卷积是特征筛选的
卷积核数量:卷积核数量不应该太多,否则参数过多,模式太固定(可能把衣服的颜色也当成特征,太细致)导致模型泛化性不够好
大尺度图像上用较大的卷积核较好,比如第一层卷积往往用5x5或7x7
全局平均池化:卷积网络输出结果输入岛全连接网络时,需要将feature map拉伸为一维向量。拉伸的方法有全局平均池化和flatten,相对于flatten,全局平均池化减少了参数量,保留了空间信息。(解释:全局平均池化将每一个通道取平均再输出,保留了输入特征图的整体分布,有助于维持图像的全局结构特征,保留了像素之间相对位置信息,flatten输出的一维向量的长度明显大于全局平均池化,这意味着全连接网络的输入维度降低,减少了参数)
__反卷积__过拟合:计算loss的时候,我们计算的是经验风险,实际上应该求期望风险,期望风险很难直接计算.
减少参数量可以减少过拟合的风险.
视角重建普通方法数据量太少,nerf方法简洁方法增加了数据量.
有一个约定,在提取特征图时,一般将通道数增加两倍,宽高缩小两倍
卷积分组?
padding是维持分辨率的手段
使用大于一的步长是降低分辨率的手段
特征融合:将不同通道的特征图直接相加,或者叠加为多通道的特征图,fpn中指的是相加操作。
hog:一种提取图像特征的方法,主要是关于形状的特征。 图像每一个像素计算梯度,将图像划分为nxn的cell,统计各个方向的梯度的数量,每k个cell组成一个block,一个图像又m个block, 就有了这么多维度的特征。轮廓部分梯度比较明显。用于提取形状。 对比:卷积考虑得更多,所以提特征的效果更好
hook:钩子,在不同阶段可以自己定义的部分 轮子:已有的库或开源软件
正负样本:IOU达到阈值为正样本,反之为负样本。
前面的网络好像已经能做到分类了,为什么后面还要接网络?
训练数据太少了怎么办?基于已有的数据集微调
注意力机制(Attention):人关注的重点与图片包含的各种信息的相似度,相似度越大,该部分信息
anchor锚框
冻结权重?
非极大值抑制(NMS):一张图片对应多个训练样本。由于一张图可能有上万个框,很多框都是相似的,比如多个框都框住了这个狗,只是大小比例和偏移有区别,为了使得预测输出比较干净,一个目标只有一个或少量的目标框,使用nms(非极大值抑制)。1. 选取非背景的最大预测值(置信度)2. 去除其他与它iou值大于sita的预测框。重复上述过程,直到所有预测要么被选中,要么被去除
前景,相对于背景,是感兴趣的目标,可能是人,车,兔子等
Head 是网络的末端部分,通常针对特定任务进行设计。Head 根据 Backbone 提取的特征来进行最终的任务,如分类、检测、分割等。Head 的设计取决于特定的应用需求。
在不同的应用中,Head 的功能可能包括:
分类:在图像分类任务中,Head 通常包括一些全连接层,用于根据特征对图像进行分类。 目标检测:在目标检测任务中,Head 负责根据特征图识别对象并定位其边界框(Bounding Box)。 语义分割:在语义分割任务中,Head 会输出每个像素的类别。
消融实验(Ablation Study)是一种在计算机科学和机器学习领域常用的实验方法,特别是在算法和模型的研究与开发中。这种实验的目的是通过逐步移除或修改模型的某些部分(例如特定的层、特征、训练方法等),来理解这些部分对模型整体性能的影响。如检查不同feature map的作用.
FCN-base:基于全卷积网络 FCN网络于CNN不同的地方,FCN没有全连接层,这意味着设计网络结构的时候,不需要实现确定全连接层输入神经元的个数。意味着输入图像的尺寸不需要固定。
dropout:Dropout 操作是指在每次更新参数的时候,随机选择一些神经元,将它们的输出设置为零。是一种用于正则化神经网络的技术,旨在减少过拟合的风险。相当于L2正则化
wxw 的图像经过 mxm的卷积核, 0p,0s, 输出尺寸为 w-m+1 如边长32的图像,经过5x5的卷积核,输出边长是32-5+1 = 28
在minst数据集上进行手写数字识别的网络,主要利用了5x5卷积核,包含卷积层,池化层.全连接层,激活函数用softmax.设计的多层结构.
在大规模的 ImageNet 数据集上训练;包含 8 个层次,其中有五个卷积层和三个全连接层。ReLU 激活函数,引入了 Dropout 技术降低过拟合,提升泛化性.
创新点,网络切分
介绍:同时使用不同大小的卷积核(1x1、3x3、5x5)和最大池化操作,从不同尺度上提取特征。这样的设计有助于网络同时捕捉局部和全局的特征,提高了网络的表达能力。
最后分类前使用全局平均池化
中间层添加了两个辅助分类器,引入额外的梯度,有助于缓解梯度消失问题
引入了bottle neck,提升效率
卷积层的重复: VGG网络的基本构建块是连续的卷积层,通常都使用小尺寸的3x3卷积核。这些卷积层的重复有助于提高网络的非线性表达能力。
池化层: 在卷积层之间,VGG网络使用最大池化层进行下采样,减小特征图的尺寸。
多尺度的卷积层: VGG网络通过增加网络的深度来扩展感受野。它使用多个卷积层来逐渐增加网络的复杂度。
全连接层: 在卷积层之后,VGG网络通常包含一个或多个全连接层,最终输出分类结果。
第1层:1792 = 33364+64 第2层:36928 = 336464+64 第3层:73856 = 3364128+128 第4层:147584 = 33128128+128 第5层:295168 = 33128256+256 第6层:590080 = 33256256+256 第7层:590080 = 33256256+256 第8层:1180160 = 33256512+512 第9层:2359808 = 33512512+512 第10层:2359808 = 33512512+512 第11层:2359808 = 33512512+512 第12层:2359808 = 33512512+512 第13层:2359808 = 33512512+512 第14层:102764544 = 775124096+4096 第15层:16781312 = 40964096+4096 第16层:4097000 = 40961000+1000
深度网路好.但随着网络越深,会面临梯度爆炸和梯度消失的问题.
过拟合不是随着深度越深训练误差增大,而是训练误差变小。
理论上随着网络变深,模型至少在浅层效果与浅层的网络相似,
在深层可以把权重学成0,但在实际过程中用SGD很难去优化成这样。identity mapping。与浅层网络相同.
ResNet方法:显示构造identity mapping,即x = f(x) + x;
其中,x为浅层网络的输出,f(x)是追加的网络层,其输出是f(x)+x;
由于算梯度的时候,原来需要对f(x)求梯度,现在对f(x)+x求梯度,更容易求了.
一个问题,上一层的高宽和通道数目与f(x)的输出图匹配,作者通过1x1的卷积核并且将stride改成2.(这样改x不会丢失信息吗?)
问题,参数个数,计算过开销如何保持的? bottleneck:通常用于减少网络中的参数数量和计算复杂度.在 ResNet 中,一个瓶颈块包括三个卷积层:第一个和第三个卷积层用较小的卷积核(例如 1x1),主要用于降维和升维;第二个卷积层用较大的卷积核(例如 3x3),用于提取特征。这种设计有助于减少计算量,同时保持网络的性能。
skip connection指的就是这个方法 作用:1. 深层网络利用了浅层网络的信息。而浅层网络有更丰富的细节。2. 加速训练,更容易拟合。减少了过拟合。
fpn中需要对不同特征图进行融合后放到网络训练.不同特征图来自于backbone中不同层的输出,由于输出特征图比例和通道数不同,大尺度特征图需要用1x1的卷积核统一通道数.小尺寸特征图需要进行两倍上采样.
问题哪一个propose预测到哪一个特征层上?(不懂)
浅层的网络feature map保留的细节信息更多,适合预测小目标;深层网络feature map更适合大目标
锚框的问题:
利用FPN可以解决DenseBox单个像素对多个重叠目标的模糊性,利用NMS抑制低质量的预测框.
FCOS: 训练集合:对每一个特征图上的每一个像素,如果它在gtbox中,则视为该类的正例,并计算其到gtbox四个边的距离.这一方法充分利用了前景样本进行训练.锚框则只考虑IOU大的锚框作为阳性样本,一个像素到gt最大距离边的长度大于该特征图最大目标边长直接视为负样本,文章后来改进,最好是距离中心位置更近的像素点作为正类更好.由于不同feature map对不同尺寸目标的检测效果不同,需要将不同尺寸的目标分配到不同feature map上,即在该featuremap上是正类,在其他上面是负类.
网络输出:类别(80维度),边界框(4维(l,t,r,b)和需要映射到原图尺寸获得),预测该像素的类别分数和位置t以及center-ness,center-ness反映了当前点偏离图像中心的程度(0,1)之间,.通过四个边界框的计算方式反推出边界框.
损失函数:分类损失和回归损失以及center-ness损失
优点:多级预测减少模糊性,步长大仍能产生良好的BPR?多个特征图上预测可以统一,选择面积最小的gt作为目标. 中心度表示距离图像中心的值,在0到1,需要乘以分类分数.避免了较远的低质预测.最后还会进行非极大值抑制操作,更好的减少了低质量的预测.
网络结构:backbone是resNet-50
mAP(PASCAL VOC 2012) 作用:用来评估目标检测的神经网络的性能,高mAP表示性能越好.
计算该方法:1.计算每个类别的AP;2.计算所有类别的平均AP
直接使用源代码肯定是不行的 因为对于confidence和IoU的定义是不一样的,并且我的目标是没有框的
方案:1.直接使用代码 2.基本重写代码
按照原理弄清楚每一个函数在干什么(功能),重写功能,按照搭积木方式搭起来.
本文章使用limfx的vscode插件快速发布