精华内容
下载资源
问答
  • DenseNet算法详解

    万次阅读 多人点赞 2017-07-15 08:24:15
    论文:Densely Connected Convolutional Networks ...代码的github链接:https://github.com/liuzhuang13/DenseNet文章详解: 这篇文章是CVPR2017的oral,非常厉害。文章提出的DenseNet(Dense Convolution

    论文:Densely Connected Convolutional Networks
    论文链接:https://arxiv.org/pdf/1608.06993.pdf
    代码的github链接:https://github.com/liuzhuang13/DenseNet
    MXNet版本代码(有ImageNet预训练模型): https://github.com/miraclewkf/DenseNet

    文章详解:
    这篇文章是CVPR2017的oral,非常厉害。文章提出的DenseNet(Dense Convolutional Network)主要还是和ResNet及Inception网络做对比,思想上有借鉴,但却是全新的结构,网络结构并不复杂,却非常有效!众所周知,最近一两年卷积神经网络提高效果的方向,要么深(比如ResNet,解决了网络深时候的梯度消失问题)要么宽(比如GoogleNet的Inception),而作者则是从feature入手,通过对feature的极致利用达到更好的效果和更少的参数。博主虽然看过的文章不算很多,但是看完这篇感觉心潮澎湃,就像当年看完ResNet那篇文章一样!

    先列下DenseNet的几个优点,感受下它的强大:
    1、减轻了vanishing-gradient(梯度消失)
    2、加强了feature的传递
    3、更有效地利用了feature
    4、一定程度上较少了参数数量

    在深度学习网络中,随着网络深度的加深,梯度消失问题会愈加明显,目前很多论文都针对这个问题提出了解决方案,比如ResNet,Highway Networks,Stochastic depth,FractalNets等,尽管这些算法的网络结构有差别,但是核心都在于:create short paths from early layers to later layers。那么作者是怎么做呢?延续这个思路,那就是在保证网络中层与层之间最大程度的信息传输的前提下,直接将所有层连接起来!

    先放一个dense block的结构图。在传统的卷积神经网络中,如果你有L层,那么就会有L个连接,但是在DenseNet中,会有L(L+1)/2个连接。简单讲,就是每一层的输入来自前面所有层的输出。如下图:x0是input,H1的输入是x0(input),H2的输入是x0和x1(x1是H1的输出)……

    这里写图片描述

    DenseNet的一个优点是网络更窄,参数更少,很大一部分原因得益于这种dense block的设计,后面有提到在dense block中每个卷积层的输出feature map的数量都很小(小于100),而不是像其他网络一样动不动就几百上千的宽度。同时这种连接方式使得特征和梯度的传递更加有效,网络也就更加容易训练。原文的一句话非常喜欢:Each layer has direct access to the gradients from the loss function and the original input signal, leading to an implicit deep supervision.直接解释了为什么这个网络的效果会很好。前面提到过梯度消失问题在网络深度越深的时候越容易出现,原因就是输入信息和梯度信息在很多层之间传递导致的,而现在这种dense connection相当于每一层都直接连接input和loss,因此就可以减轻梯度消失现象,这样更深网络不是问题。另外作者还观察到这种dense connection有正则化的效果,因此对于过拟合有一定的抑制作用,博主认为是因为参数减少了(后面会介绍为什么参数会减少),所以过拟合现象减轻。

    这篇文章的一个优点就是基本上没有公式,不像灌水文章一样堆复杂公式把人看得一愣一愣的。文章中只有两个公式,是用来阐述DenseNet和ResNet的关系,对于从原理上理解这两个网络还是非常重要的。

    第一个公式是ResNet的。这里的l表示层,xl表示l层的输出,Hl表示一个非线性变换。所以对于ResNet而言,l层的输出是l-1层的输出加上对l-1层输出的非线性变换。

    这里写图片描述

    第二个公式是DenseNet的。[x0,x1,…,xl-1]表示将0到l-1层的输出feature map做concatenation。concatenation是做通道的合并,就像Inception那样。而前面resnet是做值的相加,通道数是不变的。Hl包括BN,ReLU和3*3的卷积。

    这里写图片描述

    所以从这两个公式就能看出DenseNet和ResNet在本质上的区别,太精辟。

    前面的Figure 1表示的是dense block,而下面的Figure 2表示的则是一个DenseNet的结构图,在这个结构图中包含了3个dense block。作者将DenseNet分成多个dense block,原因是希望各个dense block内的feature map的size统一,这样在做concatenation就不会有size的问题。

    这里写图片描述

    这个Table1就是整个网络的结构图。这个表中的k=32,k=48中的k是growth rate,表示每个dense block中每层输出的feature map个数。为了避免网络变得很宽,作者都是采用较小的k,比如32这样,作者的实验也表明小的k可以有更好的效果。根据dense block的设计,后面几层可以得到前面所有层的输入,因此concat后的输入channel还是比较大的。另外这里每个dense block的3*3卷积前面都包含了一个1*1的卷积操作,就是所谓的bottleneck layer,目的是减少输入的feature map数量,既能降维减少计算量,又能融合各个通道的特征,何乐而不为。另外作者为了进一步压缩参数,在每两个dense block之间又增加了1*1的卷积操作。因此在后面的实验对比中,如果你看到DenseNet-C这个网络,表示增加了这个Translation layer,该层的1*1卷积的输出channel默认是输入channel到一半。如果你看到DenseNet-BC这个网络,表示既有bottleneck layer,又有Translation layer。

    这里写图片描述

    再详细说下bottleneck和transition layer操作。在每个Dense Block中都包含很多个子结构,以DenseNet-169的Dense Block(3)为例,包含32个1*1和3*3的卷积操作,也就是第32个子结构的输入是前面31层的输出结果,每层输出的channel是32(growth rate),那么如果不做bottleneck操作,第32层的3*3卷积操作的输入就是31*32+(上一个Dense Block的输出channel),近1000了。而加上1*1的卷积,代码中的1*1卷积的channel是growth rate*4,也就是128,然后再作为3*3卷积的输入。这就大大减少了计算量,这就是bottleneck。至于transition layer,放在两个Dense Block中间,是因为每个Dense Block结束后的输出channel个数很多,需要用1*1的卷积核来降维。还是以DenseNet-169的Dense Block(3)为例,虽然第32层的3*3卷积输出channel只有32个(growth rate),但是紧接着还会像前面几层一样有通道的concat操作,即将第32层的输出和第32层的输入做concat,前面说过第32层的输入是1000左右的channel,所以最后每个Dense Block的输出也是1000多的channel。因此这个transition layer有个参数reduction(范围是0到1),表示将这些输出缩小到原来的多少倍,默认是0.5,这样传给下一个Dense Block的时候channel数量就会减少一半,这就是transition layer的作用。文中还用到dropout操作来随机减少分支,避免过拟合,毕竟这篇文章的连接确实多。

    实验结果:
    作者在不同数据集上采用的DenseNet网络会有一点不一样,比如在Imagenet数据集上,DenseNet-BC有4个dense block,但是在别的数据集上只用3个dense block。其他更多细节可以看论文3部分的Implementation Details。训练的细节和超参数的设置可以看论文4.2部分,在ImageNet数据集上测试的时候有做224*224的center crop。

    Table2是在三个数据集(C10,C100,SVHN)上和其他算法的对比结果。ResNet[11]就是kaiming He的论文,对比结果一目了然。DenseNet-BC的网络参数和相同深度的DenseNet相比确实减少了很多!参数减少除了可以节省内存,还能减少过拟合。这里对于SVHN数据集,DenseNet-BC的结果并没有DenseNet(k=24)的效果好,作者认为原因主要是SVHN这个数据集相对简单,更深的模型容易过拟合。在表格的倒数第二个区域的三个不同深度L和k的DenseNet的对比可以看出随着L和k的增加,模型的效果是更好的。

    这里写图片描述

    Figure3是DenseNet-BC和ResNet在Imagenet数据集上的对比,左边那个图是参数复杂度和错误率的对比,你可以在相同错误率下看参数复杂度,也可以在相同参数复杂度下看错误率,提升还是很明显的!右边是flops(可以理解为计算复杂度)和错误率的对比,同样有效果。

    这里写图片描述

    Figure4也很重要。左边的图表示不同类型DenseNet的参数和error对比。中间的图表示DenseNet-BC和ResNet在参数和error的对比,相同error下,DenseNet-BC的参数复杂度要小很多。右边的图也是表达DenseNet-BC-100只需要很少的参数就能达到和ResNet-1001相同的结果。

    这里写图片描述

    另外提一下DenseNet和stochastic depth的关系,在stochastic depth中,residual中的layers在训练过程中会被随机drop掉,其实这就会使得相邻层之间直接连接,这和DenseNet是很像的。

    总结:
    博主读完这篇文章真的有点相见恨晚的感觉,半年前就在arxiv上挂出来了,听说当时就引起了轰动,后来又被选为CVPR2017的oral,感觉要撼动ResNet的地位了,再加上现在很多分类检测的网络都是在ResNet上做的,这岂不是大地震了。惊讶之余来总结下这篇文章,该文章提出的DenseNet核心思想在于建立了不同层之间的连接关系,充分利用了feature,进一步减轻了梯度消失问题,加深网络不是问题,而且训练效果非常好。另外,利用bottleneck layer,Translation layer以及较小的growth rate使得网络变窄,参数减少,有效抑制了过拟合,同时计算量也减少了。DenseNet优点很多,而且在和ResNet的对比中优势还是非常明显的。

    展开全文
  • 背景 Mask = Function(I) 1. 什么是图像分割问题呢? 简单的来讲就是给一张图像,检测是用框出框出物体,而图像分割分出一个物体的准确轮廓。也这样考虑,给出一张图像 I,这个问题就是求一个函数,从I映射...

    ##背景
    分割

    	Mask = Function(I)
    
    1. 什么是图像分割问题呢? 简单的来讲就是给一张图像,检测是用框出框出物体,而图像分割分出一个物体的准确轮廓。也这样考虑,给出一张图像 I,这个问题就是求一个函数,从I映射到Mask。至于怎么求这个函数有多种方法。我们可以看到这个图,左边是给出图像,可以看到人和摩托车,右边是分割结果。
      图二
    2. 求这个函数有很多方法,但是第一次将深度学习结合起来的是这篇文章全卷积网络(FCN),利用深度学习求这个函数。在此之前深度学习一般用在分类和检测问题上。由于用到CNN,所以最后提取的特征的尺度是变小的。和我们要求的函数不一样,我们要求的函数是输入多大,输出有多大。为了让CNN提取出来的尺度能到原图大小,FCN网络利用上采样和反卷积到原图像大小。然后做像素级的分类。可以看图二,输入原图,经过VGG16网络,得到特征map,然后将特征map上采样回去。再将预测结果和ground truth每个像素一一对应分类,做像素级别分类。也就是说将分割问题变成分类问题,而分类问题正好是深度学习的强项。如果只将特征map直接上采样或者反卷积,明显会丢失很多信息。

    图三
    3. FCN采取解决方法是将pool4、pool3、和特征map融合起来,由于pool3、pool4、特征map大小尺寸是不一样的,所以融合应该前上采样到同一尺寸。这里的融合是拼接在一起,不是对应元素相加。

    图四
    4. FCN是深度学习在图像分割的开山之作,FCN优点是实现端到端分割等,缺点是分割结果细节不够好,可以看到图四,FCN8s是上面讲的pool4、pool3和特征map融合,FCN16s是pool4和特征map融合,FCN32s是只有特征map,得出结果都是细节不够好,具体可以看自行车。由于网络中只有卷积没有全连接,所以这个网络又叫全卷积网络。

    ##Unet网络结构图五

    1. 很多分割网络都是基于FCNs做改进,包括Unet。Unet包括两部分,可以看右图,第一部分,特征提取,VGG类似。第二部分上采样部分。由于网络结构像U型,所以叫Unet网络。

      1. 特征提取部分,每经过一个池化层就一个尺度,包括原图尺度一共有5个尺度。
      2. 上采样部分,每上采样一次,就和特征提取部分对应的通道数相同尺度融合,但是融合之前要将其crop。这里的融合也是拼接。
        个人认为改进FCN之处有:
        1. 多尺度
        2. 适合超大图像分割,适合医学图像分割
    2. Unet——输入输出
      图六
      医学图像是一般相当大,但是分割时候不可能将原图太小输入网络,所以必须切成一张一张的小patch,在切成小patch的时候,Unet由于网络结构原因适合有overlap的切图,可以看图,红框是要分割区域,但是在切图时要包含周围区域,overlap另一个重要原因是周围overlap部分可以为分割区域边缘部分提供文理等信息。可以看黄框的边缘,分割结果并没有受到切成小patch而造成分割情况不好。
      3.Unet——反向传播
      Unet反向传播过程,大家都知道卷积层和池化层都能反向传播,Unet上采样部分可以用上采样或反卷积,那反卷积和上采样可以怎么反向传播的呢?那什么是反卷积呢?先来讲下卷积的过程

       				Y = Matrix_1(Filter)* Matrix_2(Image)
      

    Matrix_1和Matrix_2分别是将卷积核和图像转成矩阵函数。也就说给一个输入X,利用矩阵乘法能得到卷积后输出Y。

    								Y=C*X
    

    所以卷积可以分解成两个矩阵相乘。很显然,卷积反向传播就是C的转置相乘。举个例子:

    							Y=[1,2]*[X,x_1]T
    

    Y对x求导,dy/dx=[1,2]^T。
    图7
    反卷积就是转置卷积,也是一种卷积,可以看到图7,这个就是转置卷积,由小尺寸到大尺寸的过程。也就是说反卷积也可以表示为两个矩阵乘积,很显然转置卷积的反向传播就是也是可进行的。所以说整体是Unet是可以反向传播的。
    3.Unet——与其他结构比较之FPN
    这里写图片描述
    这是FPN检测网络,可以看到红框,如果将红框到过来可以发现,FPN部分结构和Unet相似之处。从而说明Unet网络结构是基于多尺度的。

    如果大家觉的文章有帮助或者有用,麻烦关注下我的个人公众号
    在这里插入图片描述

    展开全文
  • 论文精读——CenterNet :Objects as Points

    万次阅读 多人点赞 2019-04-18 13:09:34
    论文题目:Objects as Points ... 发布时间:2019.4.16 机构:UT Austin,UC Berkeley ...代码:https://github.com/xingyizhou/CenterNet Abstract 目标检测识别往往在图像上将目标以轴对称的框形式框出。大...

    论文题目:Objects as Points

    论文地址:https://arxiv.org/pdf/1904.07850.pdf

    发布时间:2019.4.16

    机构:UT Austin,UC Berkeley

    代码:https://github.com/xingyizhou/CenterNet

     


    Abstract

           目标检测识别往往在图像上将目标用矩形框形式框出,该框的水平和垂直轴与图像的水平和垂直向平行。大多成功的目标检测器都先穷举出潜在目标位置,然后对该位置进行分类,这种做法浪费时间,低效,还需要额外的后处理。本文中,我们采用不同的方法,构建模型时将目标作为一个点——即目标BBox的中心点。我们的检测器采用关键点估计来找到中心点,并回归到其他目标属性,例如尺寸,3D位置,方向,甚至姿态。我们基于中心点的方法,称为:CenterNet,相比较于基于BBox的检测器,我们的模型是端到端可微的,更简单,更快,更精确。我们的模型实现了速度和精确的最好权衡,以下是其性能:

    MS COCO dataset, with 28:1% AP at 142 FPS, 37:4% AP at 52 FPS, and 45:1% AP with multi-scale testing at 1.4 FPS.

    用同个模型在KITTI benchmark 做3D bbox,在COCO keypoint dataset做人体姿态检测。同复杂的多阶段方法比较,我们的取得了有竞争力的结果,而且做到了实时的。


    Introduction

           目标检测 驱动了 很多基于视觉的任务,如 实例分割,姿态估计,跟踪,动作识别。且应用在下游业务中,如 监控,自动驾驶,视觉问答。当前检测器都以bbox轴对称框的形式紧紧贴合着目标。对于每个目标框,分类器来确定每个框中是否是特定类别目标还是背景。

    One stage detectors 在图像上滑动复杂排列的可能bbox(即锚点),然后直接对框进行分类,而不会指定框中内容。

    Two-stage detectors 对每个潜在框重新计算图像特征,然后将那些特征进行分类。

    后处理,即 NMS(非极大值抑制),通过计算Bbox间的IOU来删除同个目标的重复检测框。这种后处理很难区分和训练,因此现有大多检测器都不是端到端可训练的。

     

           本文通过目标中心点来呈现目标(见图2),然后在中心点位置回归出目标的一些属性,例如:size, dimension, 3D extent, orientation, pose。 而目标检测问题变成了一个标准的关键点估计问题。我们仅仅将图像传入全卷积网络,得到一个热力图,热力图峰值点即中心点,每个特征图的峰值点位置预测了目标的宽高信息

    模型训练采用标准的监督学习,推理仅仅是单个前向传播网络,不存在NMS这类后处理

     对我们的模型做一些拓展(见图4),可在每个中心点输出3D目标框,多人姿态估计所需的结果。

    对于3D BBox检测,我们直接回归得到目标的深度信息,3D框的尺寸,目标朝向;

    对于人姿态估计,我们将关节点(2D joint)位置作为中心点的偏移量,直接在中心点位置回归出这些偏移量的值。

     由于模型设计简化,因此运行速度较高(见图1)


    Related work

            我们的方法与基于锚点的one-stage方法相近。中心点可看成形状未知的锚点(见图3)。但存在几个重要差别(本文创新点):

    第一,我们分配的锚点仅仅是放在位置上,没有尺寸框。没有手动设置的阈值做前后景分类。(像Faster RCNN会将与GT IOU >0.7的作为前景,<0.3的作为背景,其他不管);

    第二,每个目标仅仅有一个正的锚点,因此不会用到NMS,我们提取关键点特征图上局部峰值点(local peaks);

    第三,CenterNet 相比较传统目标检测而言(缩放16倍尺度),使用更大分辨率的输出特征图(缩放了4倍),因此无需用到多重特征图锚点;

    通过关键点估计做目标检测:

           我们并非第一个通过关键点估计做目标检测的。CornerNet将bbox的两个角作为关键点;ExtremeNet 检测所有目标的 最上,最下,最左,最右,中心点;所有这些网络和我们的一样都建立在鲁棒的关键点估计网络之上。但是它们都需要经过一个关键点grouping阶段,这会降低算法整体速度;而我们的算法仅仅提取每个目标的中心点,无需对关键点进行grouping 或者是后处理

    单目3D 目标检测:

    3D BBox检测为自动驾驶赋能。Deep3Dbox使用一个 slow-RCNN 风格的框架,该网络先检测2D目标,然后将目标送到3D 估计网络;3D RCNN在Faster-RCNN上添加了额外的head来做3D projection;Deep Manta 使用一个 coarse-to-fine的Faster-RCNN ,在多任务中训练。而我们的模型同one-stage版本的Deep3Dbox 或3D RCNN相似,同样,CenterNet比它们都更简洁,更快


    Preliminary

            令I\epsilon R^{W\times H\times 3} 为输入图像,其宽W,高H。我们目标是生成关键点热力图\hat{Y}\epsilon [0,1]^{\frac{W}{R}\times \frac{H}{R}\times C},其中R 是输出stride(即尺寸缩放比例),C是关键点类型数(即输出特征图通道数);关键点类型有: C = 17 的人关节点,用于人姿态估计; C = 80 的目标类别,用于目标检测。我们默认采用下采用数为R=4 ;\hat{Y}_{x,y,c}=1 表示检测到的关键点;\hat{Y}_{x,y,c}=0 表示背景;我们采用了几个不同的全卷积编码-解码网络来预测图像 得到的\hat{Y}:stacked hourglass network , upconvolutional residual networks (ResNet), deep layer aggregation (DLA) 。

           我们训练关键点预测网络时参照了Law和Deng (H. Law and J. Deng. Cornernet: Detecting objects as
    paired keypoints. In ECCV, 2018.)  对于 Ground Truth(即GT)的关键点 c ,其位置为 p \epsilon R^{2} ,计算得到低分辨率(经过下采样)上对应的关键点 \tilde{p}=\left \lfloor \frac{p}{R} \right \rfloor . 我们将 GT 关键点 通过高斯核  分散到热力图 上,其中 是目标尺度-自适应 的标准方差。如果对于同个类 c (同个关键点或是目标类别)有两个高斯函数发生重叠,我们选择元素级最大的。训练目标函数如下,像素级逻辑回归的focal loss:

     其中  和 是focal loss的超参数,实验中两个数分别设置为2和4, N是图像 I 中的关键点个数,除以N主要为了将所有focal loss归一化。

            由于图像下采样时,GT的关键点会因数据是离散的而产生偏差,我们对每个中心点附加预测了个局部偏移  所有类别 c 共享同个偏移预测,这个偏移同个 L1 loss来训练:

     只会在关键点位置 做监督操作,其他位置无视。下面章节介绍如何将关键点估计用于目标检测。


    Objects as Points

            令 是目标 k (其类别为   )的bbox. 其中心位置为  ,我们用 关键点估计 来得到所有的中心点,此外,为每个目标 k 回归出目标的尺寸  。为了减少计算负担,我们为每个目标种类使用单一的尺寸预测   ,我们在中心点位置添加了 L1 loss:

     我们不将scale进行归一化,直接使用原始像素坐标。为了调节该loss的影响,将其乘了个系数,整个训练的目标loss函数为:

     实验中, ,,整个网络预测会在每个位置输出 C+4个值(即关键点类别C, 偏移量的x,y,尺寸的w,h),所有输出共享一个全卷积的backbone;

     

    从点到Bbox 

           在推理的时候,我们分别提取热力图上每个类别的峰值点。如何得到这些峰值点呢?做法是将热力图上的所有响应点与其连接的8个临近点进行比较,如果该点响应值大于或等于其八个临近点值则保留,最后我们保留所有满足之前要求的前100个峰值点。令  是检测到的 c 类别的 n 个中心点的集合。 每个关键点以整型坐标 的形式给出。作为测量得到的检测置信度, 产生如下的bbox:

    其中是偏移预测结果;是尺度预测结果;所有的输出都直接从关键点估计得到,无需基于IOU的NMS或者其他后处理。

     

    3D 检测

           3D检测是对每个目标进行3维bbox估计,每个中心点需要3个附加信息:depth, 3D dimension, orientation。我们为每个信息分别添加head.

            对于每个中心点,深度值depth是一个维度的。然后depth很难直接回归!我们参考【D. Eigen, C. Puhrsch, and R. Fergus. Depth map prediction from a single image using a multi-scale deep network. In NIPS, 2014.】对输出做了变换。 其中 是sigmoid函数,在特征点估计网络上添加了一个深度计算通道 , 该通道使用了两个卷积层,然后做ReLU 。我们用L1 loss来训练深度估计器。

           目标的3D维度是三个标量值。我们直接回归出它们(长宽高)的绝对值,单位为米,用的是一个独立的head :   和L1 loss;

           方向默认是单标量的值,然而其也很难回归。我们参考【A. Mousavian, D. Anguelov, J. Flynn, and J. Kosecka.
    3d bounding box estimation using deep learning and geometry. In CVPR, 2017.】, 用两个bins来呈现方向,且i做n-bin回归。特别地,方向用8个标量值来编码的形式,每个bin有4个值。对于一个bin,两个值用作softmax分类,其余两个值回归到在每个bin中的角度。

     

    人姿态估计

           人的姿态估计旨在估计 图像中每个人的k 个2D人的关节点位置(在COCO中,k是17,即每个人有17个关节点)。因此,我们令中心点的姿态是 kx2维的,然后将每个关键点(关节点对应的点)参数化为相对于中心点的偏移。 我们直接回归出关节点的偏移(像素单位) ,用到了L1 loss;我们通过给loss添加mask方式来无视那些不可见的关键点(关节点)。此处参照了slow-RCNN。

            为了refine关键点(关节点),我们进一步估计k 个人体关节点热力图  ,使用的是标准的bottom-up 多人体姿态估计【4,39,41】,我们训练人的关节点热力图使用focal loss和像素偏移量,这块的思路和中心点的训练雷同。我们找到热力图上训练得到的最近的初始预测值,然后将中心偏移作为一个grouping的线索,来为每个关键点(关节点)分配其最近的人。具体来说,令是检测到的中心点。第一次回归得到的关节点为:

    我们提取到的所有关键点(关节点,此处是类似中心点检测用热力图回归得到的,对于热力图上值小于0.1的直接略去): for each joint type j from the corresponding heatmap 

    然后将每个回归(第一次回归,通过偏移方式)位置  与最近的检测关键点(关节点)进行分配 ,考虑到只对检测到的目标框中的关节点进行关联。


    Implementation details

           我们实验了4个结构:ResNet-18, ResNet-101, DLA-34, Hourglass-104. 我们用deformable卷积层来更改ResNets和DLA-34,按照原样使用Hourglass 网络。

    Hourglass

    堆叠的Hourglass网络【30,40】通过两个连续的hourglass 模块对输入进行了4倍的下采样,每个hourglass 模块是个对称的5层 下和上卷积网络,且带有skip连接。该网络较大,但通常会生成最好的关键点估计。

    ResNet

    Xiao et al. [55]等人对标准的ResNet做了3个up-convolutional网络来dedao更高的分辨率输出(最终stride为4)。为了节省计算量,我们改变这3个up-convolutional的输出通道数分别为256,128,64。up-convolutional核初始为双线性插值。

    DLA

    即Deep Layer Aggregation (DLA),是带多级跳跃连接的图像分类网络,我们采用全卷积上采样版的DLA,用deformable卷积来跳跃连接低层和输出层;将原来上采样层的卷积都替换成3x3的deformable卷积。在每个输出head前加了一个3x3x256的卷积,然后做1x1卷积得到期望输出。

    Training

    训练输入图像尺寸:512x512; 输出分辨率:128x128  (即4倍stride);采用数据增强方式:随机flip, 随机scaling (比例在0.6到1.3),裁剪,颜色jittering;采用Adam优化器;

    在3D估计分支任务中未采用数据增强(scaling和crop会影响尺寸);

    更详细的训练参数设置(学习率,GPU数量,初始化策略等)见论文~~

    Inference

    采用3个层次的测试增强:没增强,flip增强,flip和multi-scale(0.5,0.75,1.25,1.5)增强;For flip, we average the network
    outputs before decoding bounding boxes. For multi-scale,we use NMS to merge results.




    Experiments

     

     

     

     

    文章网络结构细节信息见下图:

    展开全文
  • 在DOS窗口、gitbush以及一些可以使用的命令行工具的界面上,输入:net stop mysql、net start mysql时,总是提示:服务名无效。 出现提示如下: 原因是:因为net start +服务名,启动的是win下注册的服务。...

    在DOS窗口、gitbush以及一些可以使用的命令行工具的界面上,输入:net stop mysql、net start mysql时,总是提示:服务名无效。

    出现提示如下:

     

    原因是:因为net start +服务名,启动的是win下注册的服务。此时,系统中并没有注册mysql到服务中。即当前路径下没有mysql服务。

    如何将MySQL注册到win服务里面?!!!(步骤如下)

    1. 来到MySQL的安装路径下bin

     

    2. 在命令行中输入mysqld --install

    成功:出现Service successfully install代表你已经安装成功,

     

    不成功:

     

    如果出现以上文字的时候,你需要用管理员的身份运行DOS窗口,这样就可以成功了

    3. 执行 net start mysql出现:

     

    删除mysql下的data文件,重新执行 mysqld --initialize 就可以在当前路径下生成data文件夹,再执行net start mysql 就可以启动mysql

    快速以管理员身份打开DOS:

    用管理员身份打开DOS命令窗口:在当前文件夹下bin下,先按住Shift+单击鼠标右键以管理员身份运行Dos窗口就可以。

     

    展开全文
  • 此操作系统不支持.netframework4.7.1

    万次阅读 2018-10-02 17:52:16
    在使用.netframework4.7.1安装程序安装的时候出现了错误:此操作系统不支持.netframework,但是其实不是不支持,需要把Windows更新到最新的系统之后那么就可以成功安装了,此时需要使用到一个安装程序,那就是Windows...
  • DenseNet详解

    万次阅读 多人点赞 2018-08-27 16:47:24
    其它机器学习、深度学习算法的全面系统讲解可以...作为CVPR2017年的Best Paper, DenseNet脱离了加深网络层数(ResNet)和加宽网络结构(Inception)来提升网络性能的定式思维,从特征的角度考虑,通过特征重用和旁路(Byp...
  • net start mysql 启动MySQL服务报错 发生系统错误 5 解决方法
  • GoogLeNet系列解读

    万次阅读 多人点赞 2016-02-25 15:56:29
    本文介绍的是著名的网络结构GoogLeNet及其延伸版本,目的是试图领会其中的思想而不是单纯关注结构。GoogLeNet Incepetion V1 Motivation Architectural Details GoogLeNet Conclusion GoogLeNet Inception V2 ...
  • Pytorch复现U-Net, R2U-Net, Attention U-Net, Attention R2U-Net

    千次阅读 热门讨论 2019-01-19 13:52:06
    Pytorch复现U-Net, R2U-Net, Attention U-Net, Attention R2U-Net 项目地址:pytorch Implementation of U-Net, R2U-Net, Attention U-Net, Attention R2U-Net U-Net, R2U-Net, Attention U-Net, Attention R2U-...
  • 其它网页能够打开,github打不开,报错**105 net::ERR_NAME_NOT_RESOLVED** 解决方法: 1、清一下dns缓存,命令:ipconfig /flushdns。 2、修改dns地址。随便一个,例如:8.8.8.8 改好后,github打不开问题解决,...
  • CenterNet

    千次阅读 2019-04-21 15:55:55
    我们介绍一篇很好的 one-stage 目标检测论文:CenterNet: Keypoint Triplets for Object Detection,该论文是由 中科院,牛津大学以及华为诺亚方舟实验室联合提出。截至目前,据我们所知,CenterNet 应该是 one-...
  • CornerNet 算法笔记

    万次阅读 多人点赞 2018-10-12 20:22:08
    论文:CornerNet: Detecting Objects as Paired Keypoints 论文链接:https://arxiv.org/abs/1808.01244 代码链接:https://github.com/umich-vl/CornerNet 这篇发表在ECCV2018上的目标检测文章给人一种眼前一亮...
  • DenseNet

    千次阅读 2017-09-22 19:44:22
    2017CVPR Best Paper: 《Densely Connected Convolutional Networks》Github项目主页: https://github.com/liuzhuang13/DenseNet知乎上的一些讨论: 如何评价Densely Connected Convolutional Networks?DenseNet...
  • 从PointNet到PointNet++理论及代码详解1. 点云是什么1.1 三维数据的表现形式1.2 为什么使用点云1.3 点云上以往的相关工作2. PointNet2.1 基于点云的置换不变性2.1.1 由对称函数到PointNet(vanilla)2.1.2 理论证明2.2...
  • net view

    千次阅读 2019-11-27 17:21:10
    net view 根据主名机查 MAC 地址 nbtstat -a hostname 查看 IP 与 MAC 地址映射表 来获取 IP arp -a 根据 IP 查主机名 nbtstat -A IP net view 提示 6118错误 解决方法 1、win+R ,输入services.msc ...
  • V-Net、U-net、AttentionGatedVNet

    千次阅读 2018-07-24 09:12:06
    Nassir Navab等人发表在IEEE 3D Vison上的论文V-Net,是U-Net[1]的3D版本,其实U-Net作者自己也发表了3D U-Net[2]。 论文贡献:第一,3D图像分割end2ent模型(基于3D卷积),用于MRI前列腺容积医学图像分割。第二...
  • EfficientNet

    千次阅读 2019-07-13 16:49:35
    论文:EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks Github:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet 论文基于深度(depth),宽度(width...
  • GoogLeNet

    千次阅读 2017-10-30 17:50:50
    GoogLeNet最早出现在2014年的《Going deeper with convolutions》,之所以叫GoogLeNet,而不是GoogleNet,文章说是为了向早期的LeNet致敬。GoogLeNet是谷歌团队为了参加ILSVRC 2014(ImageNet Large Scale Visual ...
  • VGGNet介绍

    万次阅读 多人点赞 2018-07-09 17:13:26
    VGGNet介绍1 简要概括 VGGNet由牛津大学计算机视觉组合和Google DeepMind公司研究员一起研发的深度卷积神经网络。它探索了卷积神经网络的深度和其性能之间的关系,通过反复的堆叠3*3的小型卷积核和2*2的最大池化层...
  • 简记SqueezeNet

    千次阅读 2020-07-22 15:32:59
    《SqueezeNet》   对移动端算力有限的情况下对深度学习推理的场景越来越多,模型压缩技术应运而生,同为Deep Compression团队推出的SqueezeNet一经问世就广为流传,奉为经典,到目前为止,这篇论文的影响还是巨大...
  • Pointnet++如何运行

    万次阅读 多人点赞 2018-11-29 21:52:47
    对与Pointnet++这个网络是一个基于和扩展Pointnet网络,pointnet网络(V1模型)可以独立的转换各个点的特征,也可以处理整个点集的全局特征,然而在多数情况下,存在明确定义的距离度量,例如,由3D传感器手机的3D电云...
  • pointnet和pointnet++

    千次阅读 2018-08-17 15:48:11
    pointnet++是pointnet的改进版本,两者都可以做点云分类和点云分割 代码:pointnet系列 pointnet: 分类: 输入:B*N*(d+C) d为坐标xyz,C为点属性(在modelnet40数据集没有点属性)图中为B*N*3 transform:...
  • 千万不要用efficientnet做bone net

    千次阅读 2019-08-14 08:41:41
    前面有写过一篇文章convolution backbone network——EfficientNet解读,说efficientnet很好,然而最近用他做bonenet的时候,发现太消耗GPU显存了,efficient_b4在1080ti测试都out of memorey 了,所以不推荐用,还是...
  • EfficientNet算法笔记

    万次阅读 2019-06-04 19:57:19
    论文:EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks 论文链接:https://arxiv.org/abs/1905.11946 代码链接:...
  • VGGNet

    千次阅读 2017-08-17 21:13:42
    感觉VGGNet就是加深版的AlexNet,都是卷积与池化的叠加,最后再加两层全连接,然后softmax输出。VGGNet有5段卷积,每段卷积由2~3个卷积层后加一个最大池化组成。卷积核的数量也随着层数的增加而增多。VGGNet也沿用了...
  • ElasticNet算法解析

    千次阅读 2019-05-26 21:41:09
    ElasticNet又叫弹性网络回归,要理解ElasticNet回归,首先要理解岭回归和Lasso回归。 线性回归 ElasticNet Sklearn中的ElasticNet回归 Sklearn库中有sklearn.linear_model.ElasticNetCV和sklearn.linear_model....
  • RFB Net算法笔记

    万次阅读 热门讨论 2018-08-10 08:33:35
    论文:Receptive Field Block Net for Accurate and Fast Object Detection 论文链接:https://arxiv.org/abs/1711.07767 代码链接:https://github.com/ruinmessi/RFBNet 这篇是ECCV2018关于目标检测的文章,...
  • Pointnet系列(二)Pointnet++

    万次阅读 2018-08-22 20:02:03
    作者在先前的研究中提出了Pointnet,此论文是Pointnet的改进版Pointnet++。提出改进的理由是因为Pointnet无法很好地捕捉由度量空间引起的局部结构问题,由此限制了网络对精细场景的识别以及对复杂场景的泛化能力。 ...
  • Pytorch中net.eval与net.train

    千次阅读 2019-08-12 13:40:00
    我发现在有些网络中会存在net.eval()与net.train(),但是有一些却没有。查阅了一些说法,现在记录一下。这两个函数只要适用于Dropout与BatchNormalization的网络,会影响到训练过程中这两者的参数 net.train() 这...
  • net语言学习教程_0基础学net语言也可以,空闲时间学习,不耽误上班.2019年net语言新课程已经上线,多种课程任您选,随到随学,互动性强,效果好! NET语言学习介绍 NET学习课程说明 NET视频教程目录 NET学习教程百度网盘...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 276,466
精华内容 110,586
关键字:

net