基于神经网络的目标检测论文之DenseNet:密集连接的卷积神经网络

2023-11-05

第三章 基于密集连接卷积网络改进的目标分类算法

最近的研究表明,如果卷积网络包含接近输入的层和接近输出的层之间的较短连接,则卷积网络可以更深入,更精确和更有效地进行训练。在本章中,论文首先研究密集卷积网络(DenseNet)的结构和工作原理,随后本人提出一些改进意见,包括增加密集块中的层数、使用复合型综合函数、使用不同尺寸的卷积核和池化核、使用变化的增长率、压缩模型使其紧凑等方式对网络进行了改进。实验表明改进后的网络在物体分类任务上表现更好。DenseNet以前馈的方式将每层连接到每个其他层。传统的具有L层的卷积网络具有L个连接,每个层与其后一个层之间,DenseNet具有 个直接连接。对于每一层,前面所有图层的特征映射都被用作输入,并且它自己的特征映射被用作所有后续图层的输入。DenseNet有几个引人注目的优点:它们可以缓解消失梯度问题,加强特征传播,鼓励特征重用以及大幅减少参数数量。论文在识别基准任务(CIFAR-10,CIFAR-100,SVHN)的上验证了改进后网络的准确率。 DenseNet在其中大部分技术上都取得了显着的改进,同时需要较少的计算来实现高性能。

3.1 DenseNet基本原理

3.1.1 DenseNet结构

近几年, 卷积神经网络(CNN)已经成为视觉对象识别的主要机器学习方法。虽然它们最初是在20多年前推出的,但计算机硬件和网络结构的改进使得最近才开始真正深入CNN。最初的LeNet5由5层组成,而VGG有19层,仅Highway网络和残差网络(ResNet)超过了100层网络结构。

随着CNN网络结构的日益加深,出现了一个新的研究问题:随着有关输入或梯度的信息经过许多层,在到达网络的末端(或开始)时,它可能损耗或者消失。许多最近的论文解决了这个以及相关问题。ResNets和Highway Networks通过跳跃连接将来自一个层的信号传递给下一层。随机深度通过在训练期间随机丢弃一些层来缩短ResNets结构以保证更好的信息和梯度传递。 FractalNet通过多次合并具有不同数量的卷积块的并行层序列以获得大的标称深度,同时在网络中保持许多短路径。虽然这些不同的方法在网络拓扑和训练过程中各不相同,但是它们都具有一个关键特征:它们创建从早期层到后期层的短路径。

在本章中,我们对这种将这种见解提炼成简单连接模式的体系结构加以验证,并尝试改进策略。为了确保网络中各层之间的最大信息流,直接连接所有的网络层。为了保留前馈特性,每一层都从前面的所有层获得附加输入,并将其自身的特征映射传递到所有后续层。图3-1示意性地说明了这种布局。最重要的是,与ResNets相比,DenseNet从未将特征通过求和组合到一个层中,相反地,DenseNet通过连接它们来组合特征。因此,第 层有l个输入,由前面所有卷积块的特征映射组成。它自己的特征映射被传递给所有的 后续层。这在一个L层网络中引入了 个连接,而不仅仅是像在传统架构中一样的L个连接。由于其密集的连接性模式,我们将这种方法称为密集卷积网络(DenseNet)。
在这里插入图片描述
图3-1 DenseNet(左)与ResNet(右)部分结构对比

这种密集连接可能是反直觉效应模式是它比传统需要更少的参数卷积网络,因为不需要重新学习多余的特征图(feature maps)。传统的前馈架构可以被看作是具有状态的算法,其中信息从一层到下一层进行传递,每层从它的前一层读取状态然后写入后续层。这种节后改变了状态,但也传递了需要被保存的信息。ResNets通过增加性标识转换使得信息被保留。ResNets最近的变化显示了许多层次贡献很小,并且事实上可以在训练中随机丢弃。这使ResNets的状态类似到递归神经网络,但ResNets的参数数量要大得多,因为每一层都有自己的权重。DenseNet架构明确区分被添加到网络中的信息和保留的信息。DenseNet的层非常狭窄(例如,每一层有12个特征图),通过向网络中增加一小部分特征图,并保持其余特征映射不变,最后的分类器基于网络中所有的特征图做决策。

除了更好的参数使用效率外,DenseNet还有一大优势就是他们改进的信息流和梯度流经整个网络,这使得他们很容易训练。每个层都可以直接访问损失函数的梯度和原始输入信号,使得网络包含了隐式的深度监督。这有助于训练更深的网络架构。此外,我们还观察到密集的连接具有正则化效果,这减轻了训练集规模较小时产生的过度拟合问题。

论文使用几个标准数据集(CIFAR-10,CIFAR-100,SVHN)来评估DenseNet。实验达到了与现有算法相媲美的准确性,而且往往需要更少的参数。并且,性能优于目前的最新技术水平大部分基准测试任务的结果。

3.1.2 相关研究

自神经网络问世以来,网络架构的探索一直是其中重要的一部分。最近神经网络的普及也恢复了这一研究领域。层数越来越多在现代网络中放大了网络之间的差异架构,并激发对不同连接性的探索模式和对旧研究思路的重新审视。

级联结构类似于密集网络布局,该结构自20世纪80年代起已经在神经网络中进行了研究贡献。他们的开创性工作侧重于完全连接的多层感知器在层与层之间训练。最近,完全连接的级联网络受到批梯度下降训练算法的影响。尽管对小数据集有效,但这一方法只能扩展到具有几百个参数的网络。利用多级特征在CNN通过跳跃连接(skip-connnections)被证明是适用于各种视觉任务的。

Highway Networks是提出训练端到端网络最早的架构之一,网络首次超过100层。通过使用绕过路径与门控单元,Highway Networks网络有效地使用SGD优化数百个图层。被绕过的路径被认为是简化了这些非常深的网络训练的关键因素。这一点在ResNet中得到进一步支持,ResNet在挑战图像识别,定位和检测任务等方面取得了令人印象深刻的创纪录的表现,如ImageNet和COCO目标检测。最近,随机深度作为一种成功的方法训练了一个1202层深的ResNet网络结构。随机深度通过随机丢弃一些层(Dropout机制)来改善深度残留网络的训练。这表明不是所有层都是必须的,并强调在深度(残差)网络中存在着比较大的冗余量。DenseNet正是受到这一观点的启发。

一种使网络层数更深的正交方法(例如,在跳过连接的帮助下)是增加网络宽度。 GoogLeNet使用了“Inception module”。该模块连接了由不同大小的过滤器生成的特征映射。ResNet的一个变种提出了更广泛的残差块。在实际上,简单的增加ResNet每一层的过滤器数量能提升网络的表示能力。

DenseNet通过特征重用(feature reuse)来探索网络的潜力,以产生易于训练和高参数效率的密集模型,而不是从极端的图形表示力深层或广泛的架构。通过连接不同的层中学习到的特征映射会增加后续层输入的变化并提高效率,这形成了DenseNet和ResNet之间的一个主要区别。与同样也是连接由不同层提取的特征的InceptionNet相比,DenseNets更简单,更高效。

还有其他值得注意的网络体系结构创新,他们同样取得了有竞争力的结果。Network In Network(NIN)结构包括微型多层感知器进入卷积层的滤波器中以提取更复杂的特征。在深度监督网络(DSN)中,内部层直接受到辅助分类器的监督,这可以加强由较早的层传递来的梯度。Ladder Network引入横向连接到自动编码器(autoencoder),获得了在半监督学习任务方面较高的准确性。Deeply-Fused Net(DFNs)被引出的目的是为了提升信息的流动,通过组合中间层不同的基础网络。通过增加路径来减少重建损失的网络也被证明可以改善图像分类模型。

3.2 改进的DenseNet结构

现在考虑一个通过卷积网络传递的单个图像 。这个网络包含L层,每一层实现一个非线性变换 ,其中l表示层数。 可以是一个符合函数,诸如批量标准化(Batch Normalization)、整流线性单元(ReLU)、卷积(Conv)或者赤化(Pooling)。定义 层的输出为 。DenseBlock的结构如图3-2所示:
在这里插入图片描述
图3-2 一个5层Dense Block模型

传统前馈卷积网络将 层的输出直接作为 层的输入,得到这个传递函数: 。而ResNet在进行非线性转换时添加了跳跃连接(skip-connection),得到下面的转换方程: 。ResNet的一个明显优点就是梯度直接从后面的层流向前面的层。然而,非线性变换及其输出是以加法结合在一起,这将影响网络中信息的流动。

3.2.1 密集连接(Dense connectivity)

为了进一步提升网络中信息的流动性,模型使用一种不同的连接方式:将每一层直接与后面的每一层相连接。因此,第 层会获取前面所有层的特征图,公式如下,其中 表示由第0,1, ,l-1层产生的特征图组成的向量。
(3-1)
因为使用了密集连接(Dense connectivity),这种网络结构称之为Dense Convolution Network(DenseNet)。为了便于实施,合并多输入的 为一个简单向量。

3.2.2 综合函数(Composite function)

定义 为一个包含了三个连续操作的复合函数:批量标准化(Batch Normalization),整流线性单元(ReLU)和一个 卷积(Conv)。

3.2.3 池化层(Pooling layer)

图3-2中使用的级联操作在特征映射的大小发生变化时变得不可行。但是,卷积网络的一个重要组成部分是汇集可改变特征映射大小的层。为了便于在体系结构中合并,将网络分成多个密集连接的密集块(dense blocks)。密集块之间的层称为过渡层,它们进行卷积和池化操作。 在我们的实验中使用的过渡层包括批量标准化层和1×1卷积层,然后是2×2平均池化层。

3.2.4 增长率(Growth rate)

如果每一层的函数 生成k个特征图作为输出,那么第 层有 个输入特征图,其中 是原始输入图像的通道数。为了防止网络增长太宽,并改善参数效率,限制k为一个小的整数,例如k=12。我们引入超参数k作为网络的增长率,并且相对较小的增长率就足够了在我们测试的数据集上获得最新的结果。对此的一种解释是每个层都有到其他密集块特征映射的访问权限,另一种解释是将特征图看做网络的全局状态,即每一层为自己增加k个特征图。增长率调节每一层贡献给全局状态的新信息量。全局状态一旦写入,就可以从网络的任何地方访问它,这与传统网络体系结构不同,我们不需要一层一层地复制它。

3.2.5 瓶颈层(Bottleneck layers)

尽管每一层只产生k个输出特征图,它通常有更多的输入。前面我们提到,可以引入1×1卷积作为每次3×3卷积之前的瓶颈层(Bottleneck layer),以减少输入特征图的数量,从而减少输入特征图的数量,提高计算效率。我们发现这个设计对DenseNet非常有效,并将Bottleneck layer引入我们的网络,即BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)版本的综合函数,作为DenseNet-B。除非另有规定,每个1×1卷积减少在所有实验中输入到4k特征映射。

3.2.6 压缩(Compression)

为了进一步提高模型的紧凑性,我们可以减少过渡时的特征映射的数量层。 如果密集块包含m个特征映射,我们让下一个过渡层生成不超过 的最大整数个输出特征图,其中 被称为压缩因子。当 时,转换过程中的特征映射的数量保持不变。我们称DenseNet当 时为DenseNet-C,我们在实验中设定 。当同时使用了瓶颈层(Bottleneck layers)和压缩(Compression)方法时,我们称我们的模型为DenseNet-BC。
在这里插入图片描述
图3-3 包含3个Dense Block的DenseNet结构

3.3 DenseNet卷积网络的实现与测试

3.3.1 Tensorflow框架

TensorFlow是Google推出的一套机器学习系统,使用其简单灵活的架构可以轻松构建各种复杂的算法模型。其高效的执行系统和分布式架构保证了在模型训练和执行时的高性能。再加上其跨平台可移植性及实验可复现,支持快速产品化等特点,逐渐成为主流的机器学习平台。

TensorFlow是一个基于计算图(Computational Graph)的数值计算系统。计算图是一个有向图,图中的节点表示数学计算操作的算子(operations)。节点之间的连接的边代表参与计算的高维数组,成为tensor。计算图的执行可以看做数据tensor按照计算图的拓扑结构顺序,从输入节点逐步流过所有中间节点,最后到达输出节点的过程。Session(会话)系统执行的入口,其负责完成节点布置和传输节点的添加等任务。

本节DenseNet的结构正是用到了TensorFlow来实现。

3.3.2 DenseNet网络实现

DenseNet网络的结构如图3-3所示,其中N表示 卷积和 卷积的组合。我们可以看到,具有不同层的网络也有一个大致相似的结构。网络首先在输入图像上做一次卷积和池化操作,然后进入第一个DenseBlock,DenseBlock里面就是在做密集的连接运算。第一个DenseBlock后是一个Transition Layer,同样还是一个卷积和池化操作。再往后就是与前面类似的结构,只不过通过卷积得出的特征图尺寸越来越小,深度越来越大。网络的最后一层就是分离N类的Softmax层,采用全连接结构。

网络结构代码由TensorFlow框架实现。和通常使用一样,我们从输入图像开始一步一步构建网络的拓扑结构。代码实现的关键点在于如何实现“跳跃连接”,在DenseBlock中,我们将前面层的特征图全都传到后面层中。我们注意到,不同尺寸的特征图进入DenseBlock,每一个DenseBlock中的特征图的尺寸是一样的,我们使用框架提供的一个合并函数:tf.concat(concat_dim, values, name=’concat’)。该函数的第一个参数concat_dim必须是一个数,表明在哪个维度上进行连接操作,第二个参数values就是两个或者一组待连接的tensor。举个例子,DenseBlock中的第一层特征图a是一个[16,32,32,16]维的数组,经过一次卷积得到中间特征图b是一个[16,32,32,6]维的数组,调用函数c= tf.concat(3, (a,b))得到一个[16,32,32,22]维的向量,作为第二层的输入特征图。在DenseBlock中,每一层都调用该函数将上一层的特征图和本层产生的特征图进行合并,最终DenseBlock中最后一层就得到前面多有特征图的组合。

表3-1 DenseNet网络结构图
Layer Feature Size DenseNet-121 DenseNet-169 DenseNet-201 DenseNet-161
Conv 112×112 7×7 conv
Pooling 56×56 3×3 max pool
DenseBlock1 56×56 N×6
N×6
N×6
N×6

L1 56×56 1×1 conv
28 × 28 2×2 avg pool
DenseBlock2 28 × 28 N×12 N×12 N×12 N×12
L2 28 × 28 1×1 conv
14 × 14 2×2 avg pool
DenseBlock3 14 × 14 N×24 N×32 N×48 N×36
L3 14 × 14 1×1 conv
7 × 7 2×2 avg pool
DenseBlock4 7 × 7 N×16 N×32 N×32 N×24
Classification 7 × 7 ,Average Pooling
1000D full connection

3.3.3 网络训练

我们凭经验证明了它的有效性,DenseNet在几个基准数据集上进行比较具有最先进的网络架构,尤其是与ResNet及其变体相比。

1、数据库
模型训练使用CIFAR-10数据集。CIFAR-10数据集是一个经典的物体识别数据集,该数据集是由60000张 的RGB彩色图片构成,共有10个分类,每一类有6000张图像。其中包含50000张训练图片和10000张测试图片。

数据集被分为5个Training Batch和1个Test Batch,每个Batch有10000张图像。测试批次包含来自每个类的恰好1000个随机选择的图像。训练批次以随机顺序包含剩余图像,但一些训练批次可能包含来自一个类的图像比另一个更多。这10类物体分别是:飞机,汽车,鸟,猫,麋鹿,狗,青蛙,马,船和卡车。这些分类完全互斥,汽车和卡车之间没有重叠。汽车包括轿车、SUV等,卡车只包括大卡车。两者都不包含皮卡车。

2、开始训练
所有的网络均使用随机梯度下降算法(SGD)进行训练。在CIFAR数据集上我们使用小批量训练大小为64,并使用300和40作为训练周期。初始学习率设为0.1,并且在训练周期的50%和75%阶段再除以10。在ImageNet上,我们使用256的小批量训练集和90个训练周期。初始学习率设为0.1,并且在训练周期为30和60的阶段再除以10。由于GPU内存的限制,我们使用的小批量训练尺寸为128,作为补偿,我们训练100个周期,并且在90周期时将学习率除以10。

随后,我们使用一个 的权重衰减,并使用高斯分布来初始化权重。在没有数据增量的三个数据集里,我们在每一个卷积层(除了第一个)后加上一个Dropout层,并设随机丢弃率(dropout rate)为0.2。测试误差仅对一项任务进行一次评估。

3、训练结果
我们使用不同的深度L和不同的增长率k。在CIFAR和SVHN数据集上的主要测试结果图表3-2所示。

表3-2 CIFAR和SVHN数据集上的错误率
Method Depth Params C10 C10+ C100 C100+ SVHN
ResNet 110 38.6M — 6.61 — — —
ResNet2 164 1.7M 11.26 5.46 35.58 24.33 —
DenseNet(k=12) 40 1.0M 7.00 5.24 27.55 24.42 1.79
DenseNet(k=12) 100 7.0M 5.77 4.10 23.79 20.20 1.67
DenseNet(k=24) 100 27.2M 5.83 3.74 23.42 19.25 1.59
DenseNet-B(k=12) 100 0.8M 5.92 4.51 24.15 22.27 1.76
DenseNet-B(k=24) 250 15.3M 5.19 3.62 19.64 17.60 1.74
DenseNet-B(k=40) 190 25.6M — 3.46 — 17.18 —

首先来看准确率。可能最引人注目的是表3-2最下面的一行,可以看出当L=190,k=40时的DenseNet-BC在CIFAR数据库上表现地比现有的最好的算法还要出色。最终的错误率是3.46%(C10+)和17.18%(C100+),这一结果明显低于宽度ResNet架构得到的错误率。我们在C10和C100(均没有图像增量)上的最好结果甚至有更多令人鼓舞的地方:两者都以丢弃路径的正则化方式得到比FractalNet低30%的结果。DenseNet在SVHN数据集上以L=100,k=24的结构超过了ResNet取得最好成绩。然而,250层的DenseNet-BC并不能进一步改进短连接带来的变现,可能是由于SVHN是个比较容易解释的任务,并且及其深的模型容易过拟合。

再来看参数量,如果没有压缩层或者瓶颈层的话,网络会有一个趋势就是性能会随着L和k的增加而变现更好。我们将此归因于相应的模型容量的增长。最好的证明就是在C10数据集上随着错误率从5.24%下降到4.10%,最后降到3.74%,参数的数量从1.0M到7.0M,再到27.2M。在C100数据集上也能观察到这一趋势。这表明DenseNet可以利用更大更深层模型的持续增长的变现力。也表明网络不会受到ResNet中过拟合或者优化难等问题的困扰。

表中的结果表明DenseNet比其他架构模型(尤其是对比了ResNet)有更高效的参数利用率。具有Bottleneck结构的DenseNet-BC结构具有显著的参数利用率。比如,最深的模型仅有15.3M的参数量,但它始终优于其他模型,比如ResNet的参数量超过了30M。需要强调的是,超参数L=100和k=12的DenseNet-BC结构能达到与1001层的ResNet相当的性能(C10错误率4.51%vs 4.62%,C100错误率22.27%vs22.71%),但是参数量却少了90%。图3-4表明了两种网络在C10数据集上的训练损失(Training loss)和测试误差(Test Error)。

最后研究一下过拟合现象。高效利用参数的一个积极的作用就是能够减轻过拟合现象。我们注意到,在没有进行增强的数据集上,DenseNet架构相比于之前的工作的改进尤为明显。在C10上,改进意味着相对误差从7.33%降至5.19%,相对减少29%。在C100上,减小幅度为30%,从28.2%降至19.64%。在我们的实验中,我们观察到潜在的过拟合出现在一个单一的设置:在C10中,通过增加k=12到k=24所产生的参数4倍增长导致误差从5.77%小幅增加到5.83%。DenseNet-BC的Bottleneck层和压缩层是对付这种趋势的有效方法。
在这里插入图片描述
图3-4 DenseNet测试图

3.3.4 与同类方法对比

从表面看,DenseNet网络与ResNet非常相似,只有功能函数由 变成了加法。然而,这个看起来很小的修改的影响导致两种网络架构的行为大不相同。
在这里插入图片描述
图3-5 DenseNet与ResNet错误率比较

1、模型紧凑
作为输入级联的直接结果,DenseNet任何层获得的特征映射可以被所有后续层访问。这鼓励了整个网络中的特征重用,并导致更紧凑的模型。图3-5中的图显示了这是一个旨在比较所有DenseNet参数效率和一个可比较的ResNet体系结构的实验结果。模型在C10上训练多个不同深度的小网络,并将它们的测试精度作为网络参数的一个函数。与其他流行的网络结构(比如AlexNet和VGGNet)相比,带有预激活的ResNet使用较少的参数,同时通常可获得更好的结果。因此,我们比较DenseNet(k=12)与ResNet。DenseNet的训练参数设置与上一节保持一致。

图3-5显示DenseNet-BC始终是DenseNet的最高参数的有效变体。此外,为了达到相同的准确度,DenseNet-BC只需要ResNet大约1/3的参数量。这一结果与我们在表3-2中呈现的ImageNet上的结果一致。表3-2显示一个仅有0.8M可训练的DenseNet-BC就能够实现与1001层ResNet相当的准确度,后者具有10.2M的参数量。

2、隐含的深度监督。
提高密集卷积网络准确性的一个解释可能是单个层通过较短的连接从损失函数外接收额的监督。可以理解为DenseNets在进行一种“深度监督”。前面在深度监督网络中展示了“深度监督”的好处,它们将分类器附加到每个隐藏层,强制中间层学习判别特征。

DenseNet以隐含的方式执行类似的深层监督:网络顶部的单个分类器通过至多两个或三个过渡层直接监督所有层。然而,DenseNets的损失函数和梯度实质上并不复杂,因为所有层之间共享相同的损失函数。

3、随机连接与确定性连接。
密集卷积网络和残余网络的随机深度正则化之间有一定的联系。在随机深度中,ResNet中的层随机丢弃,从而在周围层之间建立直接连接。由于池化层永远不会被丢弃,因此网络会产生与DenseNet类似的连接模式:如果所有中间层都是随机丢弃的,则在任何两层之间有一个小概率可以直接连接。 尽管这些方法与以往完全不同,但DenseNet对随机深度的解释可能会提供正规化一种正确的启示。

4、特征重用
按照设计,DenseNet允许每层访问来自其前面所有层的特征图(尽管有时会通过过渡层)。我们进行一项实验来验证一个被训练过的网络是否利用了这一优势。我们首先在C10上训练一个DenseNet,令L=40和k=12。对于密集块中的每一个卷积层l,我们计算分配给层s连接的平均绝对权重。平均绝对权重充当卷积层所依赖的前面层的替代物。位置 处的点表示层l使用前面s层生成的特征图的平均情况。可以得到以下观测结果:

(a)所有图层将其权重分布在同一个块内的许多输入上。 这表明非常早期的层提取的特征实际上直接被整个同一密集块中的深层使用。

(b)过渡层的权重也将它们的权重分散到前一个密集块内的所有层上,从而通过少量间接指示从DenseNet的第一层到最后一层的信息流。

(c)第二个和第三个密集块内的图层始终将最小权重分配给过渡图层(三角形顶部行)的输出,表明过渡图层输出许多冗余特征(平均具有低权重)。 这与DenseNet-BC的强大结果保持一致,在这些结果中正好压缩了这些输出。

(d)尽管最右侧的分类层也使用了整个密集块中的权重,但似乎还是会集中在最终的特征图上,这表明网络后期可能会产生更多的高级特征。

3.3.5 DenseNet小结

DenseNet将具有相同特征图大小的任何两个图层之间进行直接连接。我们发现DenseNet可以自然扩展到数百层,同时不会出现优化问题。在实验中,随着参数数量的增加,DenseNet倾向于提高准确度的一致性,没有任何性能下降或过度拟合的迹象。在多个设置下,它在多个高度竞争的数据集上实现了最先进的结果。而且,DenseNet需要实质上更少的参数和更少的计算来实现最新的性能。因为本研究中采用了针对残留网络优化的超参数设置,所以我们相信通过更详细地调整超参数和学习速率计划,可以获得DenseNet准确性的进一步提高。

在遵循简单的连接规则的同时,DenseNets自然地整合了身份映射的属性,深度监督和多样化的深度。它们允许在整个网络中重用特征,并因此可以学习更紧凑。由于其紧凑的内部表示和减少的特征冗余,DenseNet可能是用于构建在卷积特征上的各种计算机视觉任务的良好特征提取器。

3.4 本章小结

本章首先讲述了密集卷积网络(DenseNet)的结构和原理,并通过组合优化策略将其改造成高质量的特征提取器。实验表明经过不断地增加层数可以有效提高准确率,并且不会产生过拟合的现象。实验成功将算法应用在分类问题上,下一章我们将该网络作为基础网络用于图像检测。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于神经网络的目标检测论文之DenseNet:密集连接的卷积神经网络 的相关文章

  • 【CV】第 10 章:使用 R-CNN、SSD 和 R-FCN 进行目标检测

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 【论文笔记_目标检测_2022】Cross Domain Object Detection by Target-Perceived Dual Branch Distillation

    基于目标感知双分支提取的跨域目标检测 摘要 在野外 跨领域目标检测是一项现实而具有挑战性的任务 由于数据分布的巨大变化和目标域中缺乏实例级注释 它的性能会下降 现有的方法主要关注这两个困难中的任何一个 即使它们在跨域对象检测中紧密耦合 为了
  • p2b网络

    把p2b的工作推广到p2rb 目的 学习目标检测 熟悉目标检测 为自己写论文打基础 我的碎碎念 真的是fuck了 自己这个东西整了这么久 还是没有整出来 从5月分我就开始了把 因为考试 因为自己喜欢玩游戏 因为我tm真的浪费了好多时间 像个
  • 全新范式

    在本文中提出了一种简单的注意力机制Box Attention 它支持网格特征之间的空间交互 从感兴趣的Box中采样 并提高了Transformer针对多个视觉任务的学习能力 具体来说 介绍的BoxeR 即Box Transformer的缩写
  • 基于YOLOv8模型的烟火目标检测系统(PyTorch+Pyside6+YOLOv8模型)

    摘要 基于YOLOv8模型的烟火目标检测系统可用于日常生活中检测与定位烟火目标 利用深度学习算法可实现图片 视频 摄像头等方式的目标检测 另外本系统还支持图片 视频等格式的结果可视化与结果导出 本系统采用YOLOv8目标检测算法训练数据集
  • 【YOLOv5-6.x】解决加入CA注意力机制不显示FLOPs的问题

    1 问题描述 问题源自之前写的一篇博客 魔改YOLOv5 6 x 中 加入ACON激活函数 CBAM和CA注意力机制 加权双向特征金字塔BiFPN 尝试在YOLOv5的backbone中加入Coordinate Attention 虽然加入
  • Pycharm上Modify Run Configuration的使用方法,带参数配置

    前言 我们在搭建yolo系列目标检测模型时 往往需要对代码进行逐步调试 及时发现错误 所以本文在pycharm的基础上 对yolov6中的infer py进行逐步调试 首先我们在conda环境一切准备就绪的情况下 能在终端tenminal中
  • 面试宝典:从MobileNetV1到V3,一文全面梳理移动端深度学习模型

    面试宝典 MobileNetV1 V3 MobileNet的设计及实现 MobileNet是一种适用于移动设备的通用计算机视觉神经网络 可用于分类 目标检测和语义分割等多种任务 为了在移动设备上实现高效的计算和减小模型大小 我们可以采用以下
  • 特定场景小众领域数据集之——焊缝质量检测数据集

    写这篇文章最大的初衷就是最近频繁的有很多人私信问我相关的数据集的问题 基本上都是从我前面的目标检测专栏里面的这篇文章过来的 感兴趣的话可以看下 轻量级模型YOLOv5 Lite基于自己的数据集 焊接质量检测 从零构建模型超详细教程 保姆级的
  • 【论文速递】CVPR2022 - 用于半监督物体检测的尺度等效蒸馏

    论文速递 CVPR2022 用于半监督物体检测的尺度等效蒸馏 论文原文 Scale Equivalent Distillation for Semi Supervised Object Detection 获取地址 https ieeexp
  • 人体三维重建——参数化人体方法简述

    三维人体形状指的是以三维网格形式表示的人体几何形状模型 按照 1 中的分类方式 可以将三维人体形状重建粗略的分为参数化方法与非参数化方法 本次先介绍参数化方法 参数化人体形状重建方法依赖于某个基于统计得到的人体参数化模型 仅需一组低维向量
  • [YOLO专题-26]:YOLO V5 - ultralytics代码解析-detect.py程序的流程图与对应的plantUML源码

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122443972 目录 第1章 det
  • IA-YOLO项目中DIP模块的初级解读

    IA YOLO项目源自论文Image Adaptive YOLO for Object Detection in Adverse Weather Conditions 其提出端到端方式联合学习CNN PP和YOLOv3 这确保了CNN PP
  • Anchor-Free目标检测模型

    FCOS Fully Convolutional One Stage Object Detection 已开源 FoveaBox Beyond Anchor based Object Detector 未开源 FCOS 摘要 我们提出了一种
  • 【目标检测】32、让你一文看懂且看全 NMS 及其变体

    文章目录 一 NMS 1 1 背景 1 2 方法 1 3 代码 1 4 不足 二 Soft NMS 2 1 背景 2 2 方法 2 3 效果 2 4 代码 2 5 不足 三 Softer NMS 3 1 背景 3 2 方法 四 IoU Ne
  • YOLO算法v1-v3原理通俗理解

    YOLO算法v1 v3原理通俗理解 深度学习检测方法简述 我们所使用的目标检测 其实就是让机器在图片找到对应的目标 然后给图片上的目标套上一个框框 并贴上标签 比如如果图片上有人 就把人框起来并标注一个 person 使用深度学习进行目标检
  • 注意力机制的分类

    目录 1 什么是注意力机制 2 注意力机制分类 3 代表算法 1 空间域代表算法 2 通道域代表算法 3 混合域代表算法 DANet CBAM 4 注意力机制的应用 1 什么是注意力机制 注意力机制通俗的讲就是把注意力集中放在重要的点上 而
  • 目标检测中的损失函数:IOU_Loss、GIOU_Loss、DIOU_Loss和CIOU_Loss

    文章目录 前言 1 IOU Loss Intersection over Union Loss 2 GIOU Loss Generalized Intersection over Union Loss 3 DIOU Loss Distanc
  • 基于改进RoI Transformer的遥感图像多尺度旋转目标检测

    源自 应用光学 作者 刘敏豪 王堃 金睿蛟 卢天 李璋 人工智能技术与咨询 发布 摘 要 旋转目标检测是遥感图像处理领域中的重要任务 其存在的目标尺度变化大和目标方向任意等问题给自动目标检测带来了挑战 针对上述问题 提出了一种改进的RoI
  • 作物叶片病害识别系统

    介绍 由于植物疾病的检测在农业领域中起着重要作用 因为植物疾病是相当自然的现象 如果在这个领域不采取适当的护理措施 就会对植物产生严重影响 进而影响相关产品的质量 数量或产量 植物疾病会引起疾病的周期性爆发 导致大规模死亡 这些问题需要在初

随机推荐

  • 刷题之图像渲染

    有一幅以二维整数数组表示的图画 每一个整数表示该图画的像素值大小 数值在 0 到 65535 之间 给你一个坐标 sr sc 表示图像渲染开始的像素值 行 列 和一个新的颜色值 newColor 让你重新上色这幅图像 为了完成上色工作 从初
  • Verilog基本语法之循环语句(六)

    循环语句分为以下4种 for语句 通过三个步骤来决定语句的循环执行 1 给控制循环次数的变量赋初值 2 判定循环执行条件 若为假则跳出循环 若为真 则执行指定语句后 转到第三步 3 修改循环变量的值 返回第二步 repeat 连续执行一条语
  • qt 调节win声音版本大小

    QT4 情况下 运行的 会出错 目前暂时没有办法解决在 win下调节音量大小问题 在这里插入代码片 参考资料 QT 对window系统下音量的设置和获取 还有个很好贴子 没有找到
  • vim入门了

    自从上次搞定代码折叠之后 仿佛vim真的入门了 今天又看了一些内容 会复制 粘贴 查找了 更加的感觉入门了 值得庆贺 2012 5 3
  • JZOJ 幽幽子与森林

    题目大意 迷途竹林可以看成是一个n个点的森林 幽幽子定义dis u v 为u到v路径上的边的数量 若u和v不连通则为m 她定义整个森林的危险度为 为了去拜访永琳师匠 幽幽子需要提前知道迷途竹林的危险度 但迷途竹林的形态是时刻变化着的 所以幽
  • 栈系列之 最小栈的实现

    算法专题导航页面 算法专题 栈 栈系列之 栈排序 栈系列之 最小栈的实现 栈系列之 用栈实现队列 栈系列之 递归实现一个栈的逆序 题目 设计一个栈 其拥有常规的入栈 出栈操作外 需要额外具备获取最小元素的功能 其他限制 获取最小元素功能的时
  • 25. TCP协议之TCP中MSS与MTU

    MSS MSS英文全称为Maximum Segment Size 表示最大TCP报文段数据长度 并且MSS只会出现在对端发送SYN段时才会夹带的信息 在三次握手的过程中可以看到这个对端期望能够收到最大的数据段长度 如下 可以看到现在对端的M
  • 阿里云服务器部署node服务(一)

    万事开头难 尝试通过阿里云服务器部署node服务 中间踩了一些坑 借此给自己一个总结 1 远程服务器安装node 1 安装node wget https npmmirror com mirrors node v16 16 0 node v1
  • kafka介绍,安装以及简单的java调用kafka代码

    Producer 消息生产者 向broker发消息的客户端 Consumer 消息消费者 向broker取消息的客户端 Topic 一个队列 主题 Message 消息是kafka处理的对象 在kafka中 消息是被发布到broker的to
  • 【R】【纽约人口数量分析】

    文章目录 1 实验说明 2 实验环境 3 实验目的 4 实验内容 5 实验步骤 下载并导入数据 对生成的时间序列对象可视化 a 思考 b 由上述三种变量查看各个波动趋势数据 c 由上述结果可知 使用 plot 函数 修正数据 6 实验分析
  • Cadence学习六:ORCAD里怎么增加和删除Offpage connector

    ORCAD里怎么增加和删除Offpage connector 注 本文是个人再学习cadence17 4的时候遇到的问题小结 任何人不得商用 如有侵权 请联系本人删除 问题概述 对于ORCAD有多个页面的原理图 off page担当着在不同
  • error: C2248: “QObject::QObject”: 无法访问 private 成员(在“QObject”类中声明)

    QT中使用的C 对象经常会用到数据类 而存放数据可以选择使用QList lt gt QMap lt gt 等模板类存放指针或是对象 如果是选择存数据对象 考虑好之后的数据最好是静态访问的 很少去修改的 在存放的时候就会报上面的错误 原因是没
  • 各种通信接口的简单对比

    对比表 同步方式与异步方式的主要区别在于 是否传输时钟信号 只要是通訊前雙方需要設定相同波特率的 都是異步傳輸方式 异步传输 Asynchronous Transmission 每次异步传输的信息都以一个起始位开头 它通知接收方数据已经到达
  • 微服务之间调用的异常应该如何处理

    前言 在分布式服务的场景下 业务服务都将进行拆分 不同服务之间都会相互调用 如何做好异常处理是比较关键的 可以让业务人员在页面使用系统报错后 很清楚的看到服务报错的原因 而不是返回代码级别的异常报错 比如NullException Ille
  • datetime 模块详解 -- 基本的日期和时间类型

    转自 https www cnblogs com fclbky articles 4098204 html datetime 模块提供了各种类用于操作日期和时间 该模块侧重于高效率的格式化输出在 Python 中 与时间处理有关的模块包括
  • 6-11 删除字符 (20 分)

    本题要求实现一个删除字符串中的指定字符的简单函数 函数接口定义 void delchar char str char c 其中char str是传入的字符串 c是待删除的字符 函数delchar的功能是将字符串str中出现的所有c字符删除
  • Nginx+FastCGI参数传递

    如果需要将需要将各种参数传递到fcgi 例如传递请求参数 请求方法等到fcgi 需要在nginx中加配置 location fcgi fastcgi pass ip port fastcgi param QUERY STRING query
  • 汉诺塔的相关应用

    汉诺塔的应用 是递归的一种比较例子 题目藐视见下面 就是一个递归的实现 先把a上的n 1个盘同过c移到b 再把a上的最后一只盘移到c 随后再把b上的n 1只盘通过a 移到c 描述就是这样 include
  • 两个接口和一个类的适配器模式

    适配器类实现其中一个接口方法 创建另一个接口的对象和构造方法 在接口方法中调用另一个接口的方法 实例如下 public class shipeiqi public static void main String args ATable aT
  • 基于神经网络的目标检测论文之DenseNet:密集连接的卷积神经网络

    第三章 基于密集连接卷积网络改进的目标分类算法 最近的研究表明 如果卷积网络包含接近输入的层和接近输出的层之间的较短连接 则卷积网络可以更深入 更精确和更有效地进行训练 在本章中 论文首先研究密集卷积网络 DenseNet 的结构和工作原理