深度学习笔记

20220109
常用的 Normalization 方法:BN、LN、IN、GN?
卷积的反向传播
Swin Transformer
相对于ViT而言,Swin解决了什么问题?
ViT是将图片直接分割成16个tokens,然后直接将其当成一句话的方式是具有开创性的,相当于打通了NLP核CV领域的屏障,也就是说原来只能用在NLP的骨干模型,同样可以直接应用于CV领域,而且其作者还证明ViT具有传统CV骨干模型所不具备的容量,即在超大规模的图像数据集中训练仍然能够得到持续的精度提升。但是存在的缺点就是,其计算复杂度是随着图像尺寸的增加二次增长的。其计算复杂度是随着图像尺寸的增加二次增长的因此Swin就是将tokens数在网络传播过程中逐渐减小。在网络的浅层,Swin将图像划分为更小的token,以及小window,一个小window包含若干个tokens,虽然网络浅层的图像大,但是注意力的计算被限制在每个小window中,然后随着网络的传播,token逐渐融合,感受野也逐渐增大,这个时候图像小但是感受野大。也就是说Swin借鉴传统的卷积神经网络数据传播过程中的维度变化。相当于做了长距离建模和计算成本之间的平衡。
各种池化的优缺点
ResNet中瓶颈层的作用换成bottleneck design以后,网络的参数减少了很多,深度也加深了,训练也就相对容易一些。
20220118
MobileNetV1中的主要思想是深度可分离卷积
Xception 的论文中提到,对于卷积来说,卷积核可以看做一个三维的滤波器:通道维+空间维(Feature Map 的宽和高),常规的卷积操作其实就是实现通道相关性和空间相关性的联合映射。Inception 模块的背后存在这样的一种假设:卷积层通道间的相关性和空间相关性是可以退耦合的,将它们分开映射,能达到更好的效果(the fundamental hypothesis behind Inception is that cross-channel correlations and spatial correlations are sufficiently decoupled that it is preferable not to map them jointly.)。
其实就是将传统卷积核(长×宽×高<输入通道数/输入数据的高>×卷积核的个数<输出通道/输出数据的高>)替换成了 Depthwise 卷积(长×宽×1×卷积核的个数<输入通道数/输入数据的高>)以及1×1卷积(1×1×高<输入通道数/输入数据的高>×卷积核的个数<输出通道/输出数据的高>)
空间相关性由Depthwise 卷积构建,通道间相关性由1×1卷积构建。
如下图,从上到下分别为传统卷积,Depthwise卷积,以及1×1卷积。
从上到下分别为传统卷积,Depthwise卷积,以及1×1卷积
神经网络发展到现在卷积主要的类型有哪些?
分组卷积(Group Convolution)最早出现在AlexNet[1]中。受限于当时的硬件资源,在AlexNet网络训练时,难以把整个网络全部放在一个GPU中进行训练,因此,作者将卷积运算分给多个GPU分别进行计算,最终把多个GPU的结果进行融合。因此分组卷积的概念应运而生。(分组卷积核可以看作是深度可分离卷积中的depthwise卷积核的高度不为1的情况,其高度是输入数据的高÷组数g。)
空洞卷积:在不增加卷积核参数的情况下,提高卷积核的感受野。
反卷积:主要用于增大图像尺寸,是upsampling的一种,而空洞卷积并没有做upsampling,空洞卷积是为了增大感受野,可以不改变图像的大小。 对于反卷积简单理解就是在输入特征矩阵中插入空白点,再进行卷积,这样卷积后输出的特征矩阵就变大了。
空洞卷积与反卷积的区别:简而言之就是一个是在卷积核上插0,再去卷原图,为的是增大感受野。另一个在特征图中插0,再用原卷积核去卷,为的是增大图像。

MLP与CNN之间的优缺点:
MLP的参数量都很大,因此早期研究者们都纷纷使用卷积层代替MLP。但是MLP天然地适合构建长距离依赖,现在有研究者又证明MLP可以更加高效地实现注意力机制。
CNN由于卷积核的权值共享的机制,相对MLP而言参数量大大降低。同时由于卷积核的平移不变性,使得CNN非常适合图像信号的处理。但是由于卷积核的感受野太小。卷积只能进行局部建模,无法构建长距离依赖。不过后面也有研究者认为CNN的长距离建模其实是存在于网络的深层。随着卷积层的逐渐增加,越深层的卷积实际上具备更大的感受野,相当于说卷积核的建模距离是逐渐增加的。而以ViT为代表的注意力骨干模型是在网络的浅层一开始就具备了长距离建模能力。

图搜图
使用在大规模下图像数据集下训练过的特征提取骨干模型,作为编码器
对输入图进行编码得到特征向量a
对图库中图进行编码得到特征向量b
对比a,b的相似性,若相似性达到一定阈值则认为这两张图是相似的。

文搜图
使用在大规模下语言数据集下训练过的特征提取骨干模型,作为编码器A
使用在大规模下图像数据集下训练过的特征提取骨干模型,作为编码器B
A对输入文字编码得到特征向量a
B对图库图编码得到特征向量b
构建a,b之间loss进一步优化。

SVM的基本工作原理:最大化离超平面的最近点(支持向量),线性不可分就加核映射到更高维度。

RNN、LSTMTransform

20220119
ROC 与 AUC

20220302
SORT and Deep SORT
SORT
Deep SORT算法的前身是SORT, 全称是Simple Online and Realtime Tracking。简单介绍一下,SORT最大特点是基于Faster R-CNN的目标检测方法,并利用卡尔曼滤波算法+匈牙利算法,极大提高了多目标跟踪的速度,同时达到了SOTA的准确率。

这个算法确实是在实际应用中使用较为广泛的一个算法,核心就是两个算法:卡尔曼滤波和匈牙利算法

卡尔曼滤波算法分为两个过程,预测和更新。该算法将目标的运动状态定义为8个正态分布的向量。

预测:当目标经过移动,通过上一帧的目标框和速度等参数,预测出当前帧的目标框位置和速度等参数。
更新:预测值和观测值,两个正态分布的状态进行线性加权,得到目前系统预测的状态。
作用:结合预测值和观测值让bbox等信息更准!

匈牙利算法:解决的是一个分配问题,在MOT主要步骤中的计算相似度的,得到了前后两帧的相似度矩阵。匈牙利算法就是通过求解这个相似度矩阵,从而解决前后两帧真正匹配的目标。这部分sklearn库有对应的函数linear_assignment来进行求解。
作用:求解前后两帧的相似度矩阵,从而完成匹配!

SORT算法中是通过前后两帧IOU来构建相似度矩阵,所以SORT计算速度非常快。

Deep SORT 相对于SORT增加了外观信息(ReID)、级联匹配、新轨迹确认。
外观信息(ReID):就是用一个特征提取骨干网络提取目标的特征;
级联匹配:除了比较前后两帧的目标相似性,还会比较当前帧与之前的帧,直到maxage。(这样就解决了目标短暂的相互遮挡造成的ID_switch),然后再对级联匹配中没有匹配上的目标
新轨迹确认(confirm):就是用于区分确定态和非确定态。(将未达到最大击中次数的目标状态称为非确定态,其余为确定态)。

ByteTrack
ByteTrack 的检测器部分采用 YOLOX。

在数据关键的部分,和 SORT 一样,只使用卡尔曼滤波来预测当前帧的跟踪轨迹在下一帧的位置,预测的框和实际的检测框之间的 IoU 作为两次匹配时的相似度,通过匈牙利算法完成匹配。这里值得注意的是 ByteTrack 没有使用 ReID 特征来计算外观相似度,也就是说仅仅使用了运动模型。

为什么没有使用ReID 特征? 作者解释:第一点是为了尽可能做到简单高速,第二点是我们发现在检测结果足够好的情况下,卡尔曼滤波的预测准确性非常高,能够代替 ReID 进行物体间的长时刻关联。实验中也发现加入 ReID 对跟踪结果没有提升。(回到了SORT)
复现指导

ByteTrack:这里简单介绍一下这个算法的一些内容。Tracking-by-detection是MOT中的一个经典高效的流派,通过相似度(位置、外观、运动等信息)来关联帧间的检测框得到跟踪轨迹。不过,由于实际场景的复杂性,检测器往往无法得到完美的检测结果。为了权衡真假正例,目前大部分MOT方法会选择一个阈值(threshold),只保留高于这个阈值的检测结果来做关联得到跟踪结果,低于这个阈值的检测框就直接丢弃。作者认为这种策略是不合理的,就如黑格尔所说:“存在即合理。” 低分检测框往往预示着物体的存在(例如遮挡严重的物体)。简单地把这些物体丢弃会给MOT带来不可逆转的错误,包括大量的漏检和轨迹中断,降低整体跟踪性能。因此,作者提出了一种新的数据关联方法BYTE,将高分框和低分框分开处理,利用低分检测框和跟踪轨迹之间的相似性,从低分框中挖掘出真正的物体,过滤掉背景。简单来说,是一个二次匹配的过程,具体算法流程可以查看原论文。来自知乎

为了解决之前方法丢弃低分检测框的不合理性,我们提出了一种简单、高效、通用的数据关联方法BYTE (each detection box is a basic unit of the tracklet, as byte in computer program)。直接地将低分框和高分框放在一起与轨迹关联显然是不可取的,会带来很多的背景(false positive)。BYTE将高分框和低分框分开处理,利用低分检测框和跟踪轨迹之间的相似性,从低分框中挖掘出真正的物体,过滤掉背景。整个流程如下图所示:

(1)BYTE会将每个检测框根据得分分成两类,高分框和低分框,总共进行两次匹配。

(2)第一次使用高分框和之前的跟踪轨迹进行匹配。

(3)第二次使用低分框和第一次没有匹配上高分框的跟踪轨迹(例如在当前帧受到严重遮挡导致得分下降的物体)进行匹配。

(4)对于没有匹配上跟踪轨迹,得分又足够高的检测框,我们对其新建一个跟踪轨迹。对于没有匹配上检测框的跟踪轨迹,我们会保留30帧,在其再次出现时再进行匹配。

我们认为,BYTE能work的原因是遮挡往往伴随着检测得分由高到低的缓慢降低:被遮挡物体在被遮挡之前是可视物体,检测分数较高,建立轨迹;当物体被遮挡时,通过检测框与轨迹的位置重合度就能把遮挡的物体从低分框中挖掘出来,保持轨迹的连贯性。

Conclusion
多目标追踪场景中,大部分遮挡物体的检测结果都是低分框,ByteTrack非常简洁的从低分检测框中寻找遮挡的物体,对遮挡非常鲁棒。ByteTrack同时也为如何最大程度利用检测结果来帮助MOT提供了启发。我们也提供了ByteTrack的部署代码和模型,希望它的高精度、高速度能够对实际应用带来帮助。

彩蛋
ByteTrack在MOT17,20的表现启发我们重新思考多目标追踪中的运动模型与re-ID模型。当前众多跟踪模型强依赖于提取物体的外观特征,那如果追踪物体的外观基本一致时,现有模型的的表现如何?当前主流多目标跟踪数据集中物体的运动模式非常简单,近乎匀速直线运动,如果物体的运动模式非常复杂,多个物体互相来回穿梭,现有模型的的表现如何?我们提出了一个数据集:

DanceTrack: tracking multiple objects in uniform appearance and diverse motion

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《鲁伟深度学习笔记》是一本关于深度学习的资料,提供了对深度学习的深入理解和实践指导。这本笔记以简明扼要的方式介绍了深度学习的基本原理和常用算法,并结合实例讲解了如何使用深度学习解决实际问题。 首先,笔记深度学习的基础概念入手,包括神经网络、激活函数、损失函数等,为读者打下坚实的理论基础。然后,笔记详细介绍了深度学习中常用的模型结构,如卷积神经网络、循环神经网络等,并对它们的原理和应用进行了剖析。 此外,笔记还重点介绍了深度学习中的优化算法和正则化方法,如梯度下降、随机梯度下降、批量归一化等,帮助读者了解如何提高模型的性能和减少过拟合。 在实践部分,笔记提供了丰富的代码示例和数据集,通过实际操作,读者可以学到如何使用深度学习框架搭建模型、训练和评估模型,并解决真实世界的问题。 总的来说,《鲁伟深度学习笔记》是一本深度学习入门的好资料,通过阅读笔记,读者可以初步掌握深度学习的基本原理和应用方法,为进一步深入学习和研究打下基础。 ### 回答2: 《鲁伟深度学习笔记》pdf可以在网络上找到,它是对深度学习领域的一本权威教材。这本书由知名的教育家鲁伟撰写,详细介绍了深度学习所涉及的各个方面和应用。该pdf经过了精心编辑和排版,使读者能够很方便地阅读。 这本笔记的内容包括深度学习的基本概念、神经网络的原理、常用的深度学习模型以及它们的应用领域等。书中详细介绍了卷积神经网络、循环神经网络和生成对抗网络等常用模型,并给出了它们的实际案例和代码实现。 阅读《鲁伟深度学习笔记》pdf对于深度学习初学者和从业者来说都是很有价值的。对于初学者来说,它提供了一个很好的入门教材,帮助他们快速了解深度学习的基本概念和应用。对于从业者来说,它提供了详细的技术指导和实践案例,帮助他们提高自己的技术水平和解决实际问题。 总而言之,《鲁伟深度学习笔记》pdf是一本权威且实用的深度学习教材,适合各个层次的读者参考学习。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值