TowardsDataScience 博客中文翻译 2016~2018(二百四十六)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

CIFAR-10 的结果

原文:https://towardsdatascience.com/resnets-for-cifar-10-e63e900524e0?source=collection_archive---------6-----------------------

这篇文章可以在 PDF 这里下载。

这是关于 CNN 架构的系列教程的一部分

主要目的是当应用于 CIFAR-10 数据集时,深入了解 ResNets。

  • 对于 ResNets 应用于 ImageNet,这是一个更深入的教程,这里还有另一个教程。
  • 还有 PyTorch 实现详细教程这里
  • 在这里还可以找到构建这些架构的代码。

索引

  • 介绍
  • 结构
  • 卷积 1
  • 第一层
  • 第二层
  • 第三层
  • 摘要

介绍

这项工作是之前教程的延续,在之前的教程中,我们对原论文[1]之后的 ResNet 进行了去神秘化。但是,这种结构是为了在 ImageNet 数据集上运行良好而构建的。

ImageNet 数据集由属于 1000 个不同类别的一组大小(224x224)的图像(作者使用了 128 万幅训练图像、5 万幅验证图像和 10 万幅测试图像)组成。但是,CIFAR10 由一组不同的映像(45k 训练映像、5k 验证映像和 10k 测试映像)组成,这些映像分布在 10 个不同的类别中。

因为输入体积(图像)的大小完全不同,所以很容易认为相同的结构不适合在该数据集上训练。我们无法在没有维度不匹配的情况下对数据集执行相同的缩减。

我们将遵循作者提供给 ResNets 的解决方案,在 CIFAR10 上进行训练,这也像 ImageNet 数据集一样很难遵循。在论文[1]的第 节 4.2 CIFAR-10 和分析 中,我们找到了下表:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 1. Schema for ResNet from the paper

让我们按照他们给出的字面解释来构造 ResNet。为简化起见,我们将使用 n=1,结果为 20。

结构

按照之前关于 ResNets 工作的相同方法,让我们先看看整体情况,稍后再一层一层地深入细节。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 2. Scheme for ResNet Structure on CIFAR10

卷积 1

在进入公共层行为之前,ResNet 的第一步是一个带有批处理规范化操作的 3x3 卷积。步幅为 1,填充为 1,以使输出大小与输入大小相匹配。请注意,我们与 ResNet for ImageNet 的第一个重大区别是,我们在第一个块中没有包括最大池操作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 3. Conv1

我们可以通过图 2 来验证 Conv1 的输出音量确实是 32x32x16。

第一层

作者用来构建 ResNet 的其余注释是:

——用 一叠 6 层 3x3 卷积 。的选择将决定我们的网的大小。

特征图大小分别为{32,16,8},每个特征图大小有 2 个卷积。此外,过滤器的数量分别为{16,32,64}。

–通过 ResNet 的 下采样 的卷是将 的步距增加到 2 ,进行每层的第一次卷积。因此,在密集层之前不会使用池化操作。

-对于 旁路连接 ,不使用投影。在卷的形状有所不同的情况下,输入的 会简单地用零 填充,所以 输出的大小与添加 之前的卷的大小相匹配。

这将留下图 4 作为我们第一层的表示。在这种情况下,我们的旁路连接是一个常规的 恒等短连接,因为体的维数在整个层操作中是恒定的。因为我们选择 n=1,所以在层 1 中应用了 2 个卷积。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 4. Layer 1

我们仍然可以从图 2 中看出,第 1 层的输出体积确实是 32x32x16。我们再深入一点!

第二层

我们现在来看看如何处理输入音量的下采样。请记住,我们遵循与 ImageNet 数据集相同的结构和符号。如果没有遵循任何步骤,请务必看一看,因为有更详细的解释。

对于第 2 层和下一个第 3 层,其行为与第 1 层相同,只是第一个卷积使用的步幅为 2,因此输出音量的大小是输入音量的一半(填充为 1)。这意味着快捷连接也需要额外的步骤,以在求和之前调整体积的大小。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 5.Layer 2, Block 1, Convolution

整个层 2 的最终外观如图 6 所示。我们可以看到步长为 2 的卷积是如何用于向下采样的跳过连接以及层的第一个卷积的。此外,我们可以根据文件中的表格检查,我们确实有一个 16x16x32 的体积。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 6. Layer 2

第三层

第 3 层将应用与第 2 层完全相同的原理,导致图 7。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 7. Layer 3

我们可以根据文章中的表格来检查,我们确实有一个 8x8x64 的卷。

摘要

遵循作者建立的解释规则的结果产生以下结构,改变图 1 中的 n 的值:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Table 1. ResNets architectures for CIFAR-10

请注意,直观地说,这些架构与在 ImageNet 的工作结束时展示的 ImageNet 架构并不匹配。

文献学

[1]何国光,张,任,孙军,“深度残差学习在图像识别中的应用”,,2016。

受限玻尔兹曼机器—简化

原文:https://towardsdatascience.com/restricted-boltzmann-machines-simplified-eab1e5878976?source=collection_archive---------1-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Photo by israel palacio on Unsplash

编辑:这几天我在 substack 上写博客,如果你喜欢这篇文章,想了解更多关于科技、生活和生产力的内容,请在这里订阅:tinyurl.com/substackblog

在这篇文章中,我将尝试阐明关于受限玻尔兹曼机器及其工作方式的直觉。这应该是一个简单的解释,用一点数学知识,不要太深入每个概念或方程式。因此,让我们从 RBM 的起源开始,并随着我们的前进而深入研究。

什么是玻尔兹曼机器?

玻尔兹曼机器是能够学习内部表示的随机生成神经网络,并且能够表示和(给定足够的时间)解决困难的组合问题。

它们以玻尔兹曼分布(也称为吉布斯分布)命名,这是统计力学的一个组成部分,有助于我们理解熵和温度等参数对热力学中量子态的影响。这就是为什么它们被称为基于能量的模型(EBM)。它们是 1985 年由卡内基梅隆大学的杰弗里·辛顿和约翰·霍普金斯大学的特里·塞伊诺夫斯基发明的

玻尔兹曼机器是如何工作的?

玻尔兹曼机器看起来像这样:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Author: Sunny vd on Wikimedia

玻尔兹曼机器是非确定性(或随机)生成深度学习模型,只有两种类型的节点— hiddenvisible节点。没有输出节点!这可能看起来很奇怪,但这就是给他们这种不确定性的特征。它们没有典型的 1 或 0 型输出,通过这种输出,可以使用随机梯度下降来学习和优化模式。他们学习模式却没有这种能力,这就是他们如此特别的原因!

这里要注意的一个区别是,与输入节点之间没有任何连接的其他传统网络(A/C/R)不同,玻尔兹曼机器在输入节点之间有连接。从图中我们可以看到,所有节点都与所有其他节点相连,不管它们是输入节点还是隐藏节点。这使他们能够在自己之间共享信息,并自行生成后续数据。我们只测量可见节点上的内容,而不测量隐藏节点上的内容。当输入被提供时,他们能够捕获所有的参数、模式和数据之间的相关性。这就是为什么它们被称为Deep Generative Models并被归入Unsupervised Deep Learning一类的原因。

什么是受限玻尔兹曼机?

RBMs 是一个具有生成能力的两层人工神经网络。他们有能力学习一组输入的概率分布。RBM 是 Geoffrey Hinton 发明的,可用于降维、分类、回归、协同过滤、特征学习和主题建模。

RBM 是一类特殊的波尔兹曼机器,它们受限于可见单元和隐藏单元之间的连接。与玻尔兹曼机器相比,这使得实现它们更容易。如前所述,它们是一个两层的神经网络(一层是可见层,另一层是隐藏层),这两层由完全二分图连接。这意味着可见层中的每个节点都连接到隐藏层中的每个节点,但同一组中没有两个节点相互连接。这种限制允许比一般玻尔兹曼机器更有效的训练算法,特别是基于梯度的对比发散算法。

受限玻尔兹曼机器看起来像这样:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

受限玻尔兹曼机器是如何工作的?

在 RBM 中,我们有一个对称二部图,其中同一组中没有两个单元是相连的。多个 RBM 也可以stacked并可以通过梯度下降和反向传播的过程进行微调。这样的网络被称为深度信念网络。虽然 RBM 偶尔会被使用,但深度学习社区中的大多数人已经开始用一般的敌对网络或变型自动编码器来取代它们的使用。

RBM 是一个随机神经网络,这意味着每个神经元在激活时都会有一些随机行为。RBM 中还有另外两层偏差单位(隐藏偏差和可见偏差)。这就是 RBMs 不同于自动编码器的地方。隐藏的偏置 RBM 在前向传递中产生激活,而可见的偏置帮助 RBM 在后向传递中重建输入。重建的输入总是不同于实际的输入,因为在可视单元之间没有连接,因此,没有办法在它们之间传递信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image Source

上图显示了使用多个输入训练 RBM 的第一步。输入乘以权重,然后添加到偏差中。然后,结果通过 sigmoid 激活函数传递,输出确定隐藏状态是否被激活。权重将是一个矩阵,输入节点的数量作为行数,隐藏节点的数量作为列数。在相应的偏置项被添加到第一隐藏节点之前,第一隐藏节点将接收乘以第一列权重的输入的向量乘法。

如果你想知道什么是 sigmoid 函数,这里有一个公式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image Source: My Blog

所以我们在这一步得到的等式是,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 h(1)v(0) 是隐藏层和可见层的对应向量(列矩阵),上标为迭代(v(0)表示我们提供给网络的输入),而 a 是隐藏层偏置向量。

(注意,我们在这里处理的是向量和矩阵,而不是一维值。)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image Source

现在这个图像显示了相反的阶段或者说是重建阶段。它与第一遍相似,但方向相反。等式结果是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 v(1)h(1) 是可见层和隐藏层的对应向量(列矩阵),以上标为迭代, b 是可见层偏移向量。

学习过程

现在,差异 v(0)-v(1) 可以被认为是我们需要在训练过程的后续步骤中减少的重建误差。因此,在每次迭代中调整权重,以最小化该误差,这就是学习过程的本质。现在,让我们试着用数学术语来理解这个过程,不要太深入数学。在前向传递中,给定输入 v(0) 和权重 W ,我们正在计算输出 h(1) 的概率,表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在后向传递中,在重构输入的同时,我们在给定输入 h(1) 和权重 W 的情况下计算输出 v(1) 的概率,表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

向前和向后传递中使用的权重是相同的。这两个条件概率一起将我们引向输入和激活的联合分布:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

重构不同于回归或分类,因为它估计原始输入的概率分布,而不是将连续/离散值与输入示例相关联。这意味着它试图同时猜测多个值。这被称为生成学习,与分类问题中发生的判别学习(将输入映射到标签)相反。

让我们尝试看看算法如何减少损失,或者简单地说,它如何减少每一步的误差。假设我们有两个正态分布,一个来自输入数据(用 p(x)表示),另一个来自重构的输入近似值(用 q(x)表示)。这两种分布之间的差异是我们在图形意义上的误差,我们的目标是将其最小化,即,使图形尽可能接近。这个想法用一个叫做库尔贝克-莱布勒分歧的术语来表示。KL-divergence 测量两个图形下的非重叠区域,并且 RBM 优化算法试图通过改变权重来最小化该差异,使得重建非常类似于输入。右侧的图表显示了左侧曲线面积差异的积分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image by Mundhenk on Wikimedia

这给了我们一个关于误差项的直觉。现在,为了了解 RBM 实际上是如何做到这一点的,我们必须深入了解损失是如何计算的。给定一些数据,RBM 的所有常见训练算法近似对数似然梯度,并在这些近似上执行梯度上升。

对比分歧

玻尔兹曼机器(和 RBM)是基于能量的模型,可见和隐藏单元的联合配置( v,h )具有由下式给出的能量:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 vi,hj ,是可见单元 i 和隐藏单元 j 的二元状态,ai,bj 是它们的偏差, wij 是它们之间的权重。

网络分配给可见向量 v 的概率通过对所有可能的隐藏向量求和给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Z 这是配分函数,通过对所有可能的可见和隐藏向量对求和得出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这给了我们:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

训练向量相对于权重的对数似然梯度或对数概率的导数非常简单:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中尖括号用于表示由下面的下标指定的分布下的期望。这导致了用于在训练数据的对数概率中执行随机最速上升的非常简单的学习规则:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中α是学习率。有关上述等式的含义或推导方法的更多信息,请参考 Geoffrey Hinton 撰写的RBM 训练指南。这里需要注意的重要一点是,因为 RBM 中的隐藏单元之间没有直接的联系,所以很容易得到 ⟨vi hj⟩data 的无偏样本。然而,获得一个⟨vi hj⟩model 的无偏样本要困难得多。这是因为它需要我们运行马尔可夫链,直到达到稳定分布(这意味着分布的能量最小化——平衡!)来近似第二项。因此,我们没有这样做,而是从分布中执行吉布斯采样。这是一种马尔可夫链蒙特卡罗(MCMC)算法,用于在直接采样困难时(如我们的情况),获得从指定的多元概率分布近似得到的一系列观察值。吉布斯链用训练集的训练样本 v(0) 初始化,并在 k 步后产生样本 v(k) 。每个步骤 t 都包括从 p( h | v(t) )中采样 h(t) 以及随后从 p( v | h(t) )中采样 v(t+1) (值 k = 1 令人惊讶地工作得相当好)。学习规则现在变成了:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

即使只是粗略地近似训练数据的对数概率的梯度,该学习也工作得很好。学习规则更加接近另一个目标函数的梯度,该目标函数称为对比散度,它是两个 Kullback-Liebler 散度之间的差。

当我们应用这个时,我们得到:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中第二项是在吉布斯采样的每个 k 步之后获得的。以下是 CD 算法的伪代码:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image Source

结论

我们在这篇文章中讨论的是一个简单的受限玻尔兹曼机器架构。RBM 和用于训练和优化的算法有许多变化和改进(我希望在以后的文章中涉及)。我希望这有助于你理解和了解这个令人敬畏的生成算法。在下一篇文章中,我们将应用 RBMs 来构建图书推荐系统!

不要犹豫,纠正评论中的任何错误或为未来的帖子提供建议!我喜欢写与人工智能、深度学习、数据科学和机器学习相关的主题(无论是数学、应用还是简化)。

如果你觉得这篇文章有帮助,请随意点击👏s!如果你想看用 Python 实现一个 RBM 的代码,在这里看我的资源库

了解成果管理制的参考资料和一些极好的资源:

零售分析趋势— 2017 年及以后

原文:https://towardsdatascience.com/retail-analytics-trends-2017-and-beyond-374bc6627cb0?source=collection_archive---------1-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A 根据 Markets 和 markets 的数据,2015 年至 2020 年期间,全球零售分析市场的规模可能会翻一番以上,在预测期结束时总额约为 51 亿美元。随着全球越来越多的企业从使用商业智能和分析平台及服务中获得巨大回报,对分析解决方案的采用正在增加。

最近,许多零售商似乎都在追赶人工智能的潮流,以改善他们的营销工作。营销技术公司 Sailthru 公布了一项研究,其中包括一项对 200 多名零售营销人员的调查。在 2017 年期间,这些零售商计划利用人工智能来扩展他们的移动和社交媒体营销策略,除了改善客户旅程。

根据 Gartner 的一项研究,零售公司采用的人工智能解决方案可能会自动管理高达 85%的所有客户交互。尽管这个数字可能应该有所保留,但没有人能真正否认人工智能和机器学习在零售领域的应用日益增长。尽管如此,让我们来讨论一下影响行业并将在未来几年继续占据显著地位的六大零售分析趋势。

采用机器视觉和深度学习算法

这些年来,人工智能在深度学习方面取得了相当大的进展。深度学习算法将使人工智能的好处在 2017 年和未来几年变得更加明显和有形。

例如,零售巨头亚马逊去年年底在西雅图开设了第一家亚马逊 Go 商店。Amazon Go 的计划显然已经酝酿了好几年了。目标是利用计算机视觉、深度学习算法和传感器融合等技术来改善购物体验。人们可以从 Amazon Go 商店购买杂货,而不必排队或通过结账流程。该公司将这种创新称为“走出去”技术,这基本上是其关键卖点。

然而,根据摩根士丹利的一份包括消费者调查的报告,只有 30%的人认为快速结账很重要;50%的人说他们更关心价格,70%的人更喜欢便利的商店位置。尽管如此,美国的杂货市场价值 7700 亿美元,Amazon Go 在未来有巨大的增长潜力。我们可以期待在不久的将来,机器视觉和深度学习也会有类似的应用。

使用微细分进行更好的决策

虽然长期以来,细分一直是零售商利用的核心机制之一,但他们可能会利用更先进的方法来促进业务战略和提高客户满意度。细分有助于定价、促销、库存管理和产品分类等功能。它使用数据挖掘和工程技术在产品和商店层面创建有意义的群体。该技术可以考虑几个参数,例如:

  • 商店绩效
  • 产品性能
  • 产品属性
  • 存储属性
  • 客户细分或人口统计数据

零售商可以为不同的集群开发和测量多个假设场景。这一过程有助于确定最有可能改进规划、决策和执行的最佳集群。

具有高级集群和其他功能的分析平台变得更加产品化。这意味着零售商不一定需要各自的托管分析提供商来满足各种平台需求。这些平台在可用性方面是可伸缩的、灵活的和简单明了的。

全渠道数据集成和支出优化

全球越来越多的零售商意识到全渠道数据集成解决方案的重要性,因为它们具有高度的可扩展性和健壮性。这些解决方案对于希望在更多地理位置扩大品牌知名度和销售额的零售商来说非常重要。

根据埃森哲和阿里巴巴集团的研究,到 2020 年,全球跨境电子商务销售额可能会达到1 万亿美元。这一数字表明,与 2014 年相比,增长率高达 335%。国际邮政公司的另一份报告显示,63%的跨境购物者每月至少进行一次国际购物。鉴于跨境购物和整体电子商务销售的增长趋势,零售商无论规模大小,都必须专注于全球扩张,才能在竞争激烈的市场中站稳脚跟。

在这种情况下,全渠道数据集成解决方案为零售商提供了竞争优势,因为它们与在线市场无缝集成。零售商可能会同时优化跨渠道和媒体的投资,并在线下和线上渠道提供一致的客户体验。

至于全渠道支出管理,归因建模是关键解决方案之一。零售商倾向于在营销策略上花很多钱。但总的来说,对于哪些策略有效以及有效到什么程度,似乎还不太清楚。在这种情况下,归因建模有助于零售商了解如何根据客户如何访问和浏览他们的网站来优化他们的营销支出。

具体来说,客户可以通过多种方式访问零售网站:

  • 直接网址:客户输入网站网址进行访问。这可能会受到各种线下项目的影响,如电视广告、印刷品等。
  • 有机搜索:客户搜索一个关键词,点击一个结果就可以到达网站。
  • 付费广告:客户点击点击付费链接。
  • 转介:客户点击另一个网站上的链接到达零售网站。
  • 社交媒体:客户点击脸书和推特等各种社交媒体平台上发布的网站链接。

现在,归因模型通过转化过程确定每个渠道和每个客户接触点的有效性。这些分析见解有助于零售商更有效地锁定客户,从而提高销售额。

当我们考虑建立一个全渠道时,做出营销决策会变得更加复杂,因为线下支出也同样需要考虑。尽管如此,分析确实有助于整个决策过程。

通过物联网增强数据和高级分析

使用来自 Wi-Fi、信标和 RFID 标签的强大数据正在帮助零售商改善各种各样的运营,无论是在整个供应链周期中跟踪商品还是管理库存。从这些技术中生成的物联网数据有助于确定客户行为,创建有效的店内营销策略,并改进货架图。

例如,RFID 数据流可以帮助零售商根据产品在商店中的移动情况来确定产品的销售业绩和受欢迎程度。它们有助于识别销售一空的产品,剔除滞销商品。因此,这些数据流揭示了客户偏好和库存需求。

零售店中的 Wi-Fi 传感器可以与客户支持 Wi-Fi 的移动设备进行交互,并生成与以下各项相关的数据:

  • 商场内的热门区域
  • 商店里顾客流动的顺序
  • 顾客在特定商店花费的时间
  • 客户的重复访问

因此,零售商可以优化商店布局,增强商品销售,评估产品性能,并改善客户体验。

信标是利用蓝牙低能量工作的传感器,有助于近距离营销策略。它们能够连接客户的蓝牙设备。信标根据顾客在商店中的确切位置向顾客发送有针对性的信息,包括促销、折扣、优惠券。与 Wi-Fi 传感器类似,信标可以显示顾客的活动和停留时间。此外,分析来自 beacons 的数据有助于零售商衡量广告的成功率,并相应地优化营销策略。另一个好处当然是改善客户体验和忠诚度。

物联网传感器还可以帮助零售商管理和优化基于温度控制、照明管理等的电力和公用事业消耗。

提高销售额的动态定价

如今,大多数人都倾向于进行大量的网上购物。毕竟简单、快捷、方便。然而,对于在线零售商来说,事情并不那么乐观。他们面临着激烈的竞争,还要迎合善变的顾客。网上购物者有很多零售商可供选择。当然,他们在做出购买决定时首先考虑的是价格。这就是动态定价——零售商重要的零售分析解决方案之一——的用武之地。

动态定价一直是推动零售销售的常用方法,尤其是在竞争激烈的电子产品领域。零售商在设计动态定价模型时考虑了许多内部和外部因素。内部因素包括供应、销售目标、利润等。外在因素有流量、转化率、产品受欢迎程度等。零售商通常使用这些因素的组合来优化他们的定价模型。

零售商使用来自价格弹性和集合模型等分析模型的数据,根据市场情况提高或降低产品价格。像亚马逊这样的公司通常会选择降价模式,以较低的价格出售主要产品,并以一定的利润提供相关产品。这个想法是在利润而不是市场份额上稍作妥协。其他公司倾向于利润驱动的价格上涨策略。

只需点击几下,客户就可以轻松地比较不同网站上的产品价格,找到最划算的交易。零售商需要实时了解竞争对手的价格变化,以提供最佳价格。这就是动态定价的症结所在。公司使用动态定价策略的其他垂直行业包括出租车服务,如优步和航空公司。

改善产品组合管理,提升客户体验

许多大型零售商已经开始通过利用分析见解来改善产品组合规划。零售商正在使用预测和说明性分析来改善商品销售——在商店内的何时何地对哪种产品进行分类。这种做法极大地改善了客户体验并留住了客户。

例如,沃尔玛根据当地社区的需求模式对其产品进行分类。这意味着,根据不同地区顾客的需求,不同商店的产品组合会有所不同。沃尔玛还利用店内和在线交易数据为顾客提供便捷的支付和送货选择。顾客甚至可以“扫描即走”,通过电子邮件接收发票或使用沃尔玛支付。

除了历史交易,零售商在获取数据进行分析时还会考虑更多因素,如天气、当地事件数据和人口统计数据。使用内部和外部数据的组合已经变得势在必行,因为它有助于企业预测客户对特定产品类别的需求。这种分析使零售商能够更好地管理他们的库存,使他们永远不会缺货。

这些可能只是几个主要趋势。随着零售行业继续努力提高竞争力,并面临无数的成本和增长挑战,分析创新似乎是保持市场领先地位的最重要支柱。

案例研究:客户分析

一家全球领先的财富 50 强 IT 公司希望分析客户的购买行为,以优化数字营销支出。

分析和技术解决方案提供商 BRIDGEi2i Analytics Solutions 帮助该公司的营销团队:

  • 根据客户和潜在客户的浏览和购买行为,确定横幅广告活动的目标细分市场
  • 优化数字横幅广告的营销支出和绩效

关于所有方法,请阅读完整的客户分析案例研究

参考文献:

  1. http://www . barrons . com/articles/do-people-really-want-amazons-latest-innovation-1489772680
  2. https://virtuallogistics . ca/blog/the-state-of-omni-channel-data-integration-in-the-uk-March-2016/
  3. http://www . essential retail . com/news/marketing-ecomm/article/56b 86b 47723 ce-global-online-market places-unlock-a-world-of-opportunity
  4. https://www . intellectyx . com/博客/retail-analytics-in-dynamic-pricing/
  5. https://www . LinkedIn . com/pulse/attribution-modeling-retail-what-why-how-Andy-Donaldson
  6. http://analyticsindiamag . com/inside-walmartlab-Indian-operations-fulling-online-growth-global-retail-giant/

(本文特写首次出现在 BRIDGEi2i 博客 )

非常感谢您的阅读!如果你觉得这篇文章有用,请点击“鼓掌”按钮——(1)我会知道你是谁,以及(2)这篇文章会被更多的人看到。

重新思考自主代理

原文:https://towardsdatascience.com/rethinking-the-autonomous-agent-a-q-learning-behavior-system-8839a07c10b6?source=collection_archive---------15-----------------------

一个面向具身智能体的 Q 学习行为系统

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image courtesy of Eric Kilby

本文介绍了一个基于 Q 学习的行为系统,用于包括机器人和视频游戏角色在内的具身智能体。

大多数最近的强化学习(RL)成功案例都专注于在一些虚拟任务中实现超人水平的表现——无论是视频游戏还是机器人控制测试。强化学习的一个独立的、不那么耸人听闻的分支是所谓的规范强化学习,它试图模仿人类或动物行为的主观概念。这里的目标不是优化到一个任意的完美水平,而是复制一些“像人”或“像动物”的东西。虽然这种方法还没有像 RL 的其他例子一样成为头条新闻,但它无疑会在未来产生许多重要的用例。想想开放世界视频游戏的出现,这种游戏要求高度逼真地再现人类和动物的行为,或者老年护理机器人的情况,在这种情况下,超人的表现水平可能会感到陌生和迷失方向。

AI Agent using Q Learning to succeed at a Match To Sample Task

在这篇文章中,我介绍了一个行为系统的具身代理使用流行的 Q 学习算法,旨在规范强化学习。虽然面向游戏引擎,但直觉可以扩展到其他平台,并有望激发各种用例。Q-learning 也是更高级的智能行为系统的基础,比如在自主情绪工具包中发现的那些,我在别处写过关于。在这篇文章中,我将对行为系统进行一个高层次的介绍,那些想要更深入了解的人可以下载行为系统的项目文件,并附带一个教程。

q 学习是许多强化学习技术中的一种,与类似的算法相比,它有许多优点——也就是说,它简单而健壮。下面是对 Q 学习的粗略介绍。学习可以分为训练阶段和活动开发阶段。在训练阶段,代理探索其环境,采取随机行动。在此期间,它会填充一个名为 Q 表的表,其中包含关于它所采取的行动和收到的奖励的值关联。然后,这成为代理人在其活动的开发阶段如何选择决策的基础。导致奖励的行为会在开发阶段重复出现。如果希望代理人避免某些行为,奖励也可以取负值。因此,Q 学习提供了大棒和胡萝卜来驱动角色行为,其方式与人类和许多其他动物的学习方式一致。它可以用来取代或补充基于效用的计算,以前赋予人工智能体动态逼真的行为。

在所展示的行为系统中,我利用 Q 学习及其表格来驱动合成代理或 NPC(非玩家角色)的学习。Q 学习算法基本上是一种逆向归纳的方法,允许代理在状态和动作之间及时地逆向重新分配奖励信息,使其到达期望的位置。因此,需要一长串任意动作的奖励,可以按照行动者到达目的地之前的状态来分配。当这个过程重复足够多次时,就像奶油浮出水面一样,代理人就知道哪些行为和环境线索对获得奖励有帮助,哪些没有。

下面给出 Q 学习方程,其中状态和动作对分别指 Q 表和奖励表中的坐标,γ是 0 和 1 之间的固定贴现率。Gamma 控制代理人对当前奖励和未来奖励的重视程度。

Q(状态,动作)= R(状态,动作)+ Gamma * Max[Q(下一个状态,所有动作)]

在所展示的行为系统中,Q 学习被用于解决样本匹配任务,在该任务中,NPC 学习到它必须在灯打开的同时激活游戏环境中的开关,以便接收“食物奖励”。与样本匹配的任务已经被广泛应用于探索联想学习和工作记忆的动物学习实验中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个在灵长类动物身上进行的真实匹配样本任务的例子。图片引用: Porrino LJ,Daunais JB,Rogers GA,Hampson RE,戴德韦勒 SA (2005)在非人类灵长类动物中促进任务执行和消除安巴金(CX717)睡眠剥夺的影响。PLoS Biol 3(9): e299。

关键是代理人必须学会预测,只有在特定的情况下,它才能采取行动以获得报酬。在测试 Q 学习行为系统的“与样本匹配”任务中,代理了解到,当灯亮时,它可以收到奖励,它首先触摸开关,然后前进到金碗。绿灯熄灭时采取的相同行动不会产生奖励。

任务的设置从训练阶段开始,在该阶段中,代理随机地在四个位置之间移动,三个食物碗和一个开关,分别由球和圆锥表示。在训练期间,它学习关于这些元素中每一个的值的关联,它们如何受周期性打开和关闭的光的影响,以及它自己的动作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当代理学习解决匹配样本任务时,Q 学习行为系统的屏幕截图。

在探索足够长的时间后,代理将显示有意的行为,首先去开关(圆锥体),然后在灯亮时去食物碗,以便获得奖励。相同的系统可以用于提供各种各样的有意行为,包括避开敌方玩家、收集生命点以及人类或动物能够在游戏环境中表现的许多行为。在这个例子的修改版本中,代理学习接近玩家的角色以获得“食物奖励”,就像狗或猫可能学习接近人类主人以获得奖励一样。

与其他强化学习任务不同,这个任务可以被校准以产生模拟真实世界认知代理的结果。将简单的学习速率添加到 Q 算法中,可以产生模拟动物测试对象的学习曲线。因此,匹配样本任务提供了一种微调智能体“大脑”的方法,并产生与相似条件下许多动物行为的例子相一致的规范性结果。

[亚伦·克鲁明斯](mailto: aaron.krumins@gmail.com) 是 AI 相关软件的自由开发者。

RetinaNet:焦点损失如何修正单次探测

原文:https://towardsdatascience.com/retinanet-how-focal-loss-fixes-single-shot-detection-cb320e3bb0de?source=collection_archive---------3-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The Calling of St Matthew by Caravaggio, in case you like art 😃

目标检测是自动驾驶、视频监控、医疗应用和许多其他领域所需的计算机视觉中的一个非常重要的领域。你听说过 YOLO 或固态硬盘这样的流行词吗?在本文中,我将向您解释最近在使用深度学习的最新物体检测方面取得的几项重要进展,并向您介绍演示如何实现它们的重要资源。读完这篇文章后,你会对这个领域有一个很好的了解,不需要物体检测方面的先验知识。

本文组织如下:

首先,我向你解释一个简单的模型,它能够检测和分类图像中的一个单独的物体。然后,我总结了用于对一幅图像中的多个目标进行检测和分类的不同方法,重点比较了区域提议单次拍摄方法。之后,我会详细解释SSDYOLO 这样的检测器是如何工作的,为什么它们比区域提议方法更快但准确性更低,最后是最近开发的 RetinaNet 如何解决这些问题。

单一目标检测

神经网络可用于解决分类问题*(预测类别)和回归问题(预测连续值)。今天我们将同时做这两件事。我们从一个简化的任务开始:检测和分类图像中的一个*单个对象,而不是几个对象。**

数据

对象检测数据集看起来像什么?当然,我们的模型的输入是图像,标签通常是四个值,它们描述了一个真实边界框,加上这个框中的对象所属的类别。

例如,这四个值可以描述边界框左下角和右上角的 xy 坐标。或者一个特定角的坐标和边界框的高度和宽度。

体系结构

将图像作为输入的我们的神经网络必须预测代表预测的边界框坐标的四个值*,并且我们将与四个地面真实值边界框坐标(标签)进行比较。*

除此之外,神经网络还必须预测我们想要分类的 n 个类别中的每一个类别的概率。这给了我们网络必须预测的总共 4 + n 个值。

为了构建我们的单个对象检测器*,我们可以采用任何卷积图像分类器网络,如 VGG-16 或 ResNet(理想情况下经过预训练),并移除网络顶部的任何分类层,平坦化截断的基础网络的输出,并添加一个或两个线性层,最终输出 4 + n 个值。您还应该在分类图层之前移除任何(自适应)池图层,因为它们会破坏我们回归边界框边缘坐标所需的空间信息。*

失败

那么我们将如何训练这样一个产生 4 + n 个值的单个物体检测网络呢?预测物体的类别( n 类别概率)是一个分类问题。预测包围盒的四个坐标是一个回归问题。我们需要一个结合这两个问题的损失函数。

让我们从边界框开始:定位损失可以是预测边界框坐标 x_pred 和地面真实边界框坐标 x_labelL1 损失:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是四个预测和四个地面真实边界框坐标之间的所有绝对差值的总和。预测框与地面真实边界框的差异越大,这种损失就越大。您也可以使用 L2 损失,但是,该模型将对异常值更加敏感,并将调整以最小化单个异常值情况,代价是具有小得多的误差的正常示例。

我们如何处理网络输出的类别概率值?首先,为了将这些 n 值转换成概率,我们对它们应用 softmax activation 函数。然后我们使用交叉熵损失函数将它们与标签进行比较。我们称之为信心丧失。**

组合损失函数简单地是定位损失*(边界框)和置信度损失(类别)的加权和:*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Examples from the Pascal VOC 2007 dataset with a single detected object

什么是 a ?原则上,定位损失可能远大于置信度损失(反之亦然)。在这种情况下,网络将只专注于学习预测边界框,而完全忽略分类任务。因此,你必须查看两个损失的值,并将其中一个乘以一个系数 a ,使它们的数量级大致相同。

我们现在知道了对象检测数据集可能是什么样子,我们如何建立一个单对象检测架构,以及如何制定损失函数。我们有训练网络所需的一切。如果你想训练这样一个模型,我建议你按照 fastai 第八课:)开始编码

好了,我们讨论了检测图像中的单个对象所需的最少步骤。但这还不够,对吗?在现实世界的场景中,我们可能需要在一幅图像中检测许多对象(数量未知)。我们如何做到这一点?

经典的计算机视觉经常使用一种叫做滑动窗口的方法。检测器在图像上滑动,一旦检测到物体,就会在检测器当前正在查看的区域周围绘制一个边界框。

随着深度学习的兴起,所谓的两阶段区域提议方法开始占据主导地位:第一阶段预测一组候选对象位置*,其应该包含所有对象,但过滤掉大部分背景。第二阶段,一个 convnet ,然后将这些候选位置中的对象分类为搜索类别之一或背景。如果你对这项技术感兴趣,可以在谷歌上搜索 R-CNN。*

区域提议方法产生最先进的结果,但是对于实时对象检测,尤其是在嵌入式系统上,通常计算量太大。

你只看一次 ( Redmon et al. 2015 )和SSD-Single Shot multi box Detector(Liu et al . 2015)是旨在通过在通过网络的单次向前传递中预测不同类别的边界框坐标和概率来解决该问题的架构。它们是以牺牲准确性为代价来优化速度的。

林等(2017) 最近发表了一篇漂亮的论文:他们解释了为什么像 SSD 这样的方法不如两阶段方法准确,并提出通过重新调整损失函数来解决这个问题。通过这种改进,单次方法不仅比两阶段方法更快,而且现在也一样准确,允许实时对象检测的令人敬畏的新现实世界应用。

现在,我将向您详细解释 SSD 的工作原理,为什么单次拍摄方法不如两阶段方法准确,以及 RetinaNet 和焦损如何修复这个问题。

SSD:单次多盒探测器

让我们看看 SSD 的架构(类似于 fastai 中的实现),并讨论激活的感受域的概念。YOLO 的工作方式与 SSD 类似,不同之处在于它在网络顶部使用全连接层,而不是卷积层。我们将专注于卓越的固态硬盘。**

图像被馈送到用于高质量图像分类的标准架构。网络末端的任何分类层再次被截断*。SSD 论文使用了 VGG-16 网络,但其他网络如 R esNets 也可以工作。*

例如,假设输入图像具有形状[3,224,224],截断网络的输出具有形状[256,7,7]。通过三次以上的卷积,我们在网络顶部创建了三个特征图*,分别是形状【256,4,4】(蓝色)、【256,2,2】(黄色),最后是【256,1,1】(绿色)😗

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SSD 白皮书中的架构在网络顶部有更多功能图,但出于演示目的,我们坚持使用三层。原理完全一样。

让我们来看看这些不同层中激活的感受野*😗

我们从最后一层(绿色)开始。最终绿色层中的激活依赖于先前层中的所有激活,因此感受野是整个输入图像:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在让我们看看倒数第二层(黄色)。注意,黄色层激活的感受野只有输入图像的四分之一:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

蓝色层中激活的感受野是输入图像的十六分之一。

请注意,我所做的说明是出于演示目的而简化的,例如,没有考虑到这样一个事实,即与周围区域相比,激活对来自其感受野中心的依赖更多。请看 这里 有很棒的解释。

然而,我想要表达的想法是,几乎填满整个图像的对象应该通过最后一层(绿色层)的激活来检测,而大约填满输入图像左下四分之一的对象应该通过黄色层的激活来检测,这是有意义的。

因此,我们定义了一些所谓的默认框锚框*😗

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这些点就是所谓的并且标记了它们各自的默认锚盒的中心。中间的绿色锚点是整个图像周围绿色框的中心,这是对应于最后一个卷积层(绿色)的默认框。

黄色/橙色锚点定义了属于倒数第二个卷积层(黄色)的四个黄色/橙色框的中心,16 个蓝色默认框属于所示 SSD 架构中的蓝色层。

你可能会问自己这在代码中会是什么样子。例如,您可以创建一个数组,其中每一行定义一个默认框,有四列,例如左下角和右上角的 x 和 y 坐标或一个角的坐标加上高度和宽度。

我们下一步做什么?当我们研究如何检测图像中的单个对象时,我们预测了边界框坐标的 4 个值和每个 n 类的一个概率,从而给出了我们的神经网络返回的总共 4 + n 个数字。请记住,我们现在还想对背景进行分类,因此 n 应该是您的数据集中的类别数+ 1。

这就是我们现在对每个缺省框所需要的:每个缺省框需要 n 个值,它们表示在该框中检测到某个类的概率,以及 4 个值,它们现在不是预测边界框的绝对坐标,而是到相应缺省框的偏移量。**

对于 4x4 蓝色默认框,我们需要总共 16 乘以 4 的值来计算预测边界框的坐标,以及我们试图分类的 n 个类别的 16 乘以 n 个概率。

对于 2x2 黄色默认框,我们总共需要 4 乘 4 的坐标值和 4 乘 n 类的 n 概率。

我们如何做到这一点?更多卷积层!

草图 SSD 架构中的最后三个功能图(蓝色、黄色和绿色层)具有形状[256,4,4]、[256,2,2]和[256,1,1]。它们对应于蓝色默认框的 4x4 网格、黄色默认框的 2x2 网格和一个跨越上图所示网格中整个图像的绿色默认框。

三个特征图中的每一个都被输入到另外两个卷积层。我知道这很令人困惑,但请耐心等待,我们就快成功了:)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们来看看黄色的特征图(2x2 网格)。我们有[256,2,2]个激活,需要 shape [4,2,2]的输出和 shape[n,2,2]的第二个输出(其中n是类的数量)。因此特征图的宽度和高度不能改变,但是两个卷积输出层需要分别将特征图从 256 减少到 4 和 n 个滤波器。

对于蓝色特征地图(对应于 4x4 网格),我们需要两个输出图层,将[256,4,4]特征地图简化为[4,4,4]和[n,4,4]张量。

查看整个图像的绿色默认框对应于形状为[256,1,1]的绿色特征地图。我们最后还需要两个卷积输出层,它们将绿色特征图作为输入,产生[4,1,1]和[n,1,1]形状的输出。

我知道这是很多。重要的想法是,我们对不同大小的网格中的每个默认框都做了我们在预测图像中的单个对象时所做的事情。

好了,我们总结一下:

  1. 我们定义了几个不同大小默认框的网格,这将允许我们在一次向前传递中检测不同比例的对象。许多以前的体系结构检测不同比例的物体,例如通过将相同图片的不同大小的版本传递到检测器,这在计算上更昂贵。
  2. 对于每个网格中的每个缺省框,网络输出 n 个分类概率和 4 个到相应缺省框坐标的偏移,这给出了预测的边界框坐标。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Ground truth bounding boxes

那么我们如何训练网络呢?

在左侧,您可以看到一个来自 Pascal VOC 2007 数据集的对象检测示例。一张餐桌和两把椅子有三个地面真实边界框。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4x4 grid of default boxes

在下图中,您可以看到默认框的 4x4 网格(2x2 和 1x1 网格未显示)。

网络为 16 个默认框中的每一个预测 4 个坐标(偏移)和 n 类概率。但是,在训练时,我们应该将这些预测中的哪些与损失函数中的基本事实默认框进行比较呢?

我们需要将训练示例中的每个基本事实边界框与(至少)一个默认框进行匹配。

匹配问题

我们希望将地面真实边界框与一个默认框匹配,这个默认框与它尽可能“相似”。我说的相似是什么意思?当两个盒子尽可能多地重叠,同时尽可能少地具有不重叠的区域时,它们是相似的。这由 Jaccard 索引或 IoU 索引定义:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source

让我们看几个例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 重叠区域(交叉点)是整个橙色区域,因此重叠达到最大值。但是联盟(蓝色区域)要大得多。这不是一个很好的匹配,会导致较低的 Jaccard 指数。
  2. 这是最佳匹配:重叠区域和联合区域几乎具有相同的大小。Jaccard 指数应该接近 1。
  3. 这里,重叠也比两个盒子(联合)的整个面积小得多,这给出了低的 Jaccard 指数。

在我们的训练示例中,我们使用 4x4、2x2 和 1x1 网格中的 every default box 来计算everyground truth bounding box 的 Jaccard 索引。

基础事实边界框与其共享最高 Jaccard 索引的默认框相匹配,并且与其具有大于特定阈值的 Jaccard 索引的每个其他默认框相匹配。

我知道这些细节可能听起来令人困惑。重要的想法是,我们希望将训练示例中的基本事实边界框与默认框所做的预测进行比较,默认框已经与基本事实边界框非常相似。

我们现在知道…

  1. … 4 个预测坐标(默认框的偏移量)和每个默认框的n 预测类别概率和…**
  2. …哪个基本事实边界框与哪个默认框匹配。

现在,我们做同样的事情,当我们想检测一个单一的对象。

损失再次是定位损失*(边界框)和置信度损失(类)的加权和:我们计算预测的边界框(默认框坐标+预测的偏移)与匹配的地面真实边界框(L1 损失)有多大差异,以及默认框预测类的正确程度(二进制交叉熵)。我们将每个匹配的默认框和基本事实边界框对的这两个值加在一起,并有一个损失函数,当预测框更接近基本事实边界框时,以及当网络在分类对象方面做得更好时,该损失函数将返回更低的值。*

当没有一个类别概率超过某个阈值时,网络会将该框中的对象视为背景。在现实中,你会发现,对于图像中的每个真实对象,网络都会产生几个几乎相互重叠的边界框。一种称为非最大值抑制的技术用于将预测相同类别并且具有大于特定阈值的 Jaccard 索引的所有框减少到每个检测到的对象一个预测框。

为了便于理解,我省略了一个小细节。对于每个锚点,SSD 定义了不同纵横比和大小的 k 默认框,而不是本文中讨论的一个。这意味着我们还需要 4 倍于 k 的相对于各自默认框坐标的预测偏移量,而不是 4 和 n 倍于 k 的类概率,而不是 n 。更多不同尺寸和长宽比的盒子=更好的物体检测。这个细节对于一般的理解来说并不是太重要,但是如果你对这个细节感兴趣的话,可以看看刘等人 2015 中的图 1 进行说明。

SSD 和 YOLO 只需要通过网络向前传递一次来预测对象包围盒和类别概率。与滑动窗口区域提议方法相比,它们要快得多,因此适合于实时物体检测。SSD(在网络顶部使用多尺度卷积特征地图,而不是像 YOLO 那样使用全连接层)比 YOLO 更快更准确。

唯一剩下的问题:**区域提议方法如 R-CNN 更准确

焦点损失

两阶段方法的优势在于,它们首先预测几个候选物体位置,然后使用卷积神经网络将这些候选物体位置中的每一个分类为类别之一或背景。这里的重点是几个候选位置*。*

像 SSD 或 YOLO 这样的方法遭受极端的类别不平衡*:检测器评估大约一万到十万个候选位置(比我们这里的例子中的 4x4、2x2 + 1 默认框多得多),当然这些框中的大多数不包含对象。即使检测器容易地将这些大量的盒子分类为底片/背景,仍然存在问题。*

我会向你解释原因:

这是交叉熵损失函数,其中 i 是类的索引, y_i 是标签(如果对象属于类 i 则为 1,否则为 0),而 p_i 是对象属于类 i 的预测概率。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们会看剧情,不用太担心方程:)

假设一个盒子包含背景,网络 80%确定它实际上只是背景。这种情况下 y(背景)=1 ,其他所有 y_i 都是 0, p(背景)=0.8

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以看到,在 80%确定盒子只包含背景的情况下,损失仍然是~0.22。

例如,假设图像中有 10 个实际对象,网络并不确定它们属于哪一类,因此它们的损失为 3。这将为我们提供大约 30 个(顺便说一下,所有数字都是虚构的,是为了演示目的而选择的)

所有其他约 10,000 个默认框都是背景,网络 80%确定它们只是背景。这样我们的损失在 10000 * 0.22 = 2200 左右。

告诉我,什么占主导地位?网络很难对少数真实对象进行分类?还是网络容易归类为背景的所有框?

好吧,大量容易分类的例子绝对支配了损失,从而支配了梯度,因此压倒了网络仍然有困难并应该从中学习的少数有趣的例子。

那我们该怎么办?林等人(2017) 有一个很好的想法,缩放交叉熵损失,以便网络已经非常确定的所有简单示例对损失的贡献更小,以便学习可以集中在少数有趣的案例上。作者称他们的损失函数为焦点损失和他们的架构 RetinaNet (注意 RetinaNet 还包括特征金字塔网络(FPN),这基本上是 U-Net 的新名称)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据该论文,γ= 2 效果最佳。还是那句话,如果你不愿意,也不要太担心这个等式,一旦你看到这个情节,你就会明白这有什么不同了:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

请注意,当网络对预测非常确定时,损失现在明显降低了。在我们之前 80%确定性的例子中,交叉熵损失的值约为 0.22,现在焦点损失的值仅为 0.009。对于网络不太确定的预测,损耗减少了一个小得多的系数!

通过这种重新调整,大量容易分类的例子(主要是背景)不再主导损失,学习可以集中在少数有趣的案例上。

通过这种强大的改进,只需要通过网络进行一次前向传递的对象检测器突然能够在准确性方面与两阶段方法竞争,同时在速度方面轻松击败它们。这为甚至在嵌入式系统上进行精确的实时对象检测开辟了许多新的可能性。厉害!

如果你和我一样对这种东西着迷,我强烈建议你自己实现一个单次对象检测网络。我建议你跟着伟大的课程fastai——程序员的前沿深度学习第 8 课和第 9 课一起编码。你在这里找到相应的笔记本。在这个笔记本中,所有关于匹配问题的函数都写在一个单元格中,它们的输出稍后才显示。这大大降低了代码的可理解性。我重新实现了笔记本,添加了更多的注释,并把所有东西(尤其是匹配问题)按顺序排列,希望能让你从上到下阅读笔记本,同时在继续实现用于此目的的功能之前,逐渐建立对基础事实边界框如何与默认框匹配的理解。也可以随意使用我的笔记本作为额外参考。

我希望你从这篇文章中学到了一些有趣的东西:)如果任何部分不清楚或者你需要额外的解释,请留下评论,我很乐意帮助你理解。

逆向工程反向传播

原文:https://towardsdatascience.com/reverse-engineering-back-propagation-8ecbc94ad36c?source=collection_archive---------18-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有时候,从例子开始可能是一种更快的学习方法,而不是在进入详细的例子之前先学习理论。这就是我将在这里尝试做的,使用一个来自官方 PyTorch 教程的例子,它实现了反向传播和反向工程数学及其背后的概念。

下面是教程(https://py torch . org/tutorials/beginner/py torch _ with _ examples . html # warm-up-numpy)的快照,其中 numpy 被用来实现一个具有一个隐藏层的网络。

*# -*- coding: utf-8 -*-*
**import** numpy **as** np

*# N is batch size; D_in is input dimension;*
*# H is hidden dimension; D_out is output dimension.*
N, D_in, H, D_out **=** 64, 1000, 100, 10

*# Create random input and output data*
x **=** np**.**random**.**randn(N, D_in)
y **=** np**.**random**.**randn(N, D_out)

*# Randomly initialize weights*
w1 **=** np**.**random**.**randn(D_in, H)
w2 **=** np**.**random**.**randn(H, D_out)

learning_rate **=** 1e-6
**for** t **in** range(500):
    *# Forward pass: compute predicted y*
    h **=** x**.**dot(w1)
    h_relu **=** np**.**maximum(h, 0)
    y_pred **=** h_relu**.**dot(w2)

    *# Compute and print loss*
    loss **=** np**.**square(y_pred **-** y)**.**sum()
    print(t, loss)

    *# Backprop to compute gradients of w1 and w2 with respect to loss*
    grad_y_pred **=** 2.0 ***** (y_pred **-** y)
    grad_w2 **=** h_relu**.**T**.**dot(grad_y_pred)
    grad_h_relu **=** grad_y_pred**.**dot(w2**.**T)
    grad_h **=** grad_h_relu**.**copy()
    grad_h[h **<** 0] **=** 0
    grad_w1 **=** x**.**T**.**dot(grad_h)

    *# Update weights*
    w1 **-=** learning_rate ***** grad_w1
    w2 **-=** learning_rate ***** grad_w2

在此示例中,每个输入都是大小为 1000 的一维数组,输出也是一维的,大小设置为 10。除了每个 NN 将具有的输入和输出层之外,还有一个隐藏层,该隐藏层在示例中被设置为大小为 100。

这是一个简单的例子,如果大小为 64,我们有 1 批训练数据。换句话说,我们有 64 组大小为 1000 的随机初始化输入和大小为 100 的输出。目标是使用这 64 个随机初始化的训练数据来训练网络。

让我们看看向前传球。与连接输入和隐藏层相关联的权重矩阵的大小为 1000×100(即输入维度大小×隐藏维度大小)。并且 1000 大小的输入和权重矩阵之间的矩阵乘法将导致 100 大小的隐藏层。我们不是真的一个一个地做,而是对整批做,就像这里看到的:“h = x **。**点(w1)”。对得到的 64 x 100 应用 ReLU 函数来去除负数,但是这一步不会以任何方式影响尺寸。得到的 64×100 矩阵乘以大小为 100×10 的第二个权重矩阵,得到大小为 10 的输出。损失计算看起来也很简单,是误差平方和。

在进入反向投影步骤之前,我们先来看一下这个设置。让我们从输出层开始。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Note: I am not using the variable names but different notations like “a” and “f” as this will help get a better general understanding of back propagation (and to make the equations look less congested).

我没有使用变量名,而是使用不同的符号,如“a”和“f ”,因为这将有助于更好地理解反向传播(并使方程看起来不那么拥挤)。我还把最后一层表示为“l+1”,这样前一层就可以用“l”来表示了。这是因为我们需要再返回一层,以获得一个概括的理解,并获得一个可重复调用的反向传播函数,我希望这一层的索引为“l”。

损失函数定义为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是在下面几行代码中计算的。

*# Compute and print loss*
loss **=** np**.**square(y_pred **-** y)**.**sum()

现在我们的目标是找出这种损失相对于网络中的权重的变化率,以便我们可以相应地调整权重并使损失最小化。让我们从最后一层开始。我们的目标是确定:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是我们现在只知道损失的价值。所以让我们扩展一下,让它发挥作用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们上面所做的是,保持因变量被微分(在这种情况下“C”的损失)固定,我们试图找到导数 wrt 它的子表达式递归。换句话说,因为我们知道“C”是输出激活“a”的函数,所以我们利用“链规则”重写以找到“C”wrt 对“a”的导数,然后找到“a”wrt“w”的导数——这种通过函数的子表达式递归向后移动以导出损耗 wrt 对函数输入的导数的逻辑,假定损耗 wrt 对函数输出的导数被称为“反向传播”或“反向模式自动差分”(反向累加 AD )。一般来说,从最后一个输出层开始,通过神经网络的所有层,一层一层地重复这个逻辑。

回过头来,我们实际上知道了等式的第一部分,因为这可以使用幂法则来推导。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是示例中得出的结果:

grad_y_pred **=** 2.0 ***** (y_pred **-** y)

让我们解决第二部分:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将所有这些放在一起,最后一层的损耗 wrt 对 w 的偏导数可以写成:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

计算结果如下:

grad_w2 **=** h_relu**.**T**.**dot(grad_y_pred)

虽然这是在每个图层中计算权重梯度的方式,但输出图层得到了简化,因为激活函数只是一个点积。在前一层中,我们在产品上使用了一个整流线性单元(ReLU)。示例中的代码片段是:h = x **。**圆点(w1);h_relu = np **。**最大值(h,0)。Sigmoid 函数也是常用函数,两种函数同时使用也很常见。让我们直观地表现这一层,并获得 w1 的梯度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就像上一层一样,让我们展开损失 wrt 对权重的偏导数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

让我们处理第一部分。在输出层,我们知道损耗对输出激活的偏导数,因为我们将损耗定义为激活(也称为预测输出和实际值)之间的差值。但是对于这一层,我们需要推导出来。因为我们知道下一层的损耗输出激活的导数,所以让我们使用它并将第一部分重写为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下一层的输出激活的偏导数 wrt 该层的输出激活可以求解如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所以第一部分是,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是教程代码中的计算结果:

grad_h_relu **=** grad_y_pred**.**dot(w2**.**T)

插回去:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这留给我们第二部分,这是这一层的输出激活相对于这一层的权重的偏导数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里的激活功能是一个两步功能。首先,我们将权重乘以前一层的输出。接下来,我们应用一个 ReLU 函数。应用反向传播的原理,这可以重写如下。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第一部分是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

让我们放大 ReLU 函数及其导数。ReLU 的导数恰好是一个单位阶跃函数,所有“x <0” “1”s for all other values of “x”.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The second part of the equation can be solved as:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Bringing both together:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Plugging it back to our goal of finding the partial derivative of loss wrt weights in this layer,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

There are four terms being multiplied above. As seen earlier, the first product is what is calculated in the tutorial code as “grad_h_relu = grad_y_pred **都是“0”。**点(w2 )。 T)”。第二个产品具有单位阶跃函数,当 z 小于 0 时为 0,否则为 1。最后一部分是具有输入激活的产品,在我们的示例中是“x”输入层。下面是完成所有这些工作的三行代码:

grad_h **=** grad_h_relu**.**copy()
grad_h[h **<** 0] **=** 0
grad_w1 **=** x**.**T**.**dot(grad_h)

前两行代码表示前三项之间的乘积,最后一行代码表示输入值的最终乘积。下面的映射将有助于匹配代码和派生。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前所述,通常也使用 sigmoid 函数进行激活,我们将使用 sigmoid 函数的导数来代替上述计算中的单位阶跃函数。因此,如果我们要编写一个独立的反向传播函数,它会将损耗 wrt 对输出激活的导数作为输入,并且必须从中计算两个值。首先,将是损失对权重的导数。这将在梯度下降计算中用于更新权重。第二,该函数应计算输入激活的损耗导数。这将必须被返回以便继续反向传播,因为这一层的输入激活只不过是前一层的输出激活。调用函数可以使用这个返回值为前一层再次调用 backprop 函数,但这次将返回值作为输入传递给函数。

虽然我花了一些时间试图通过教程了解 backprop、自动微分和 PyTorch,但很快就发现,并行使用一个解释另一个是比单独使用更有效的了解这些主题的方法。希望这有所帮助。

综述:ARCNN —减少伪影 CNN(编解码器滤波)

原文:https://towardsdatascience.com/review-arcnn-deblocking-denoising-a098deeb792?source=collection_archive---------6-----------------------

在这个故事中,神器还原 CNN (ARCNN) 被回顾。ARCNN 用于减少以下图像伪影:

  • 分块伪像: JPEG 图像由 8 个 × 8 个不重叠块压缩而成。块效应是沿着 8×8块边界的不连续性
  • 沿锐边的振铃效应:为了有效地压缩图像,对高频分量进行量化,以从图像中去除一些高频信号。然而,当边缘尖锐时,当量化太强时,在尖锐边缘附近存在像波一样的环状伪像。
  • **模糊:**高频成分的损失也会引起模糊。这些伪像会影响其他程序,例如超分辨率和边缘检测。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Original JPEG (left) JPEG After ARCNN (Right)

ARCNN 已经在 2015 ICCV 发表,一个改良的 fast ARCNNarXiv 2016发表。由于 ARCNN 是基于 SRCNN 构建的,并且 SRCNN 有浅层 CNN 架构,ARCNN 涉及迁移学习概念,所以学习 CNN 是一个良好的开端。( Sik-Ho Tsang @中)

涵盖哪些内容

  1. 快速回顾 SRCNN
  2. ARCNN
  3. ARCNN —易到难转
  4. 快速 ARCNN

1.SRCNN 快速回顾

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SRCNN (9–1–5)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Feed Forward Functions (Left) Loss Function (Right)

上图是 SRCNN 架构。图像经过 9×9、1×1、5×5 变换,得到输入图像的超分辨率。

注意,在网络中的网络(NIN)中使用 1×1 conv。在 NIN 中,1 × 1 conv 被建议引入更多的非线性以提高精度。GoogLeNet [4]中也建议减少连接数。

损失函数就是输入图像和超分辨率输出图像之间的误差。

SRCNN 只有 3 个 conv 层。这是学习深度学习的入门文章之一。

(如有兴趣,请访问我在 SRCNN 上的评论。)

2.ARCNN

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ARCNN (9–7–1–5)

与 SRCNN 相比,ARCNN 多了一层 7×7 的滤波器。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

JPEG Images compressed with Quality Factor of 10

带原 JPEG :平均 PSNR 为 27.77 dB

使用Sr CNN(9–1–5):28.91 dB,意味着图像质量提高。

使用更深的 Sr CNN(9–1–1–5):28.92 dB,多一层 1×1 的滤镜帮助不大。

使用 ARCNN(9–7–1–5):得到 28.98 dB。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Average PSNR along the number of backprops

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ARCNN has a better visual quality

3.ARCNN —由易到难的转移

3.1 由浅入深的转移

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Transfer from Shallower to Deeper

  • 首先学习 ARCNN(9–7–1–5 ),然后保留前两层。
  • 并在 ARCNN(9–7–3–1–5)学习第 3 层到第 5 层。

由于已经学习了前两层,这比随机初始化好得多,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Average PSNR along the number of backprops (He [9] is one kind of random initialization)

3.2 从高质量向低质量转移

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Transfer from higher to lower quality

  • 同样,先用更高质量的样本进行训练。
  • 然后转移第一层或前 2 层。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Average PSNR along the number of backprops

3.3 从标准到真实案例的转换

在 Twitter 中,3264×2448 的图像会被重新缩放和压缩成 600×450 的图像。因此,

  • 学习网络使用标准图像,传输第一层。
  • 然后用 40 张 Twitter 照片进行训练(335209 个样本)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Average PSNR along the number of backprops

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Twitter Image Visual Quality

4。快速 ARCNN

4.1 层分解

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

one more layer with a 1×1 filter is added for Fast ARCNN, (number of filters(filter size))

通过在两个空间卷积之间添加 1×1 卷积,可以减少参数的总数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

N: Total Number of Parameters of a Model

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ARCNN

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fast ARCNN

  • ARCNN 在第二层有 100,352 个参数,总共有 106448 个参数
  • Fast ARCNN 只有第二层和第三层的 51200 个参数,总共只有 57296 个参数!!!

使用 1×1 卷积来减小模型尺寸实际上已经在 GoogLeNet 中提出。

4.2 第一层的步幅较大,最后一层的过滤器较大

  • 将第一卷积层中的步长从 1 增加到 2。
  • 将最后一个卷积层中的滤波器大小从 5 增加到 9。

参数数量(N)仍然只有 56496。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Results

  • ARCNN: 29.13 分贝
  • 快速 ARCNN (s=2): 29.07 dB 下降很少。

通过比较速度

  • ARCNN 中每幅图像 0.5 秒
  • 快速 ARCNN 中每幅图像 0.067 秒,这是一个 7.5 的加速比!!

参考

  1. 【2015 ICCV】【ARCNN】
    深度卷积网络压缩伪像还原
  2. 【2016 arXiv】【快速 ARCNN】
    用于压缩伪像减少的深度卷积网络

我的评论

[Sr CNN][Google net]

回顾:2018 年的人工智能

原文:https://towardsdatascience.com/review-artificial-intelligence-in-2018-403ca386980f?source=collection_archive---------9-----------------------

人工智能不再是一个时髦的词。截至 2018 年,它是大数据分析的一个发展良好的分支,拥有多个应用程序和活跃的项目。以下是对该主题的简要回顾。

人工智能是各种大数据分析方法的总称,如机器学习模型和深度学习网络。我们最近揭开了 AI、ML 和 DL 的神秘面纱,以及它们之间的区别,所以请随意查看。简而言之,人工智能算法是各种数据科学数学模型,有助于改善特定过程的结果或自动化一些日常任务

然而,该技术现在已经足够成熟,可以将这些数据科学进步从试点项目阶段转移到大规模生产就绪部署阶段。下面是 2018 年整个 IT 行业人工智能技术采用的各个方面的概述。

我们来看看这些参数,比如:

  • 最广泛使用的人工智能算法,
  • 公司应用人工智能的方式,
  • 人工智能实施将产生最大影响的行业
  • 用于人工智能开发的最流行的语言、库和 API

因此,本文中使用的数字来自各种公开来源,如 Statista、Forbes、BigDataScience、 DZone 等。

最广泛使用的人工智能算法类型

有多种类型的 ML 模型适用于不同的目的。各种算法被用于有监督的、无监督的和强化的机器学习、光学字符识别、语音和文本识别等。四种最流行的算法是决策树、自然语言处理(NLP)工具、线性回归和神经网络。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

公司使用人工智能的方式

人工智能算法大多已经超过了试点项目的阶段,目前正处于全公司采用的不同阶段。 36% 的美国和欧盟企业正在积极投资他们的人工智能计划, 31%的企业正计划在不久的将来这样做,而 17% 的企业已经开始了他们的数字化转型之旅,现在已经收获了收益。只有 16%的公司没有投资人工智能技术的计划。正如美国伟大的工程师和演说家威廉·爱德华兹·曼宁所说的那样,没有必要去适应。你的生存不是必要的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

人工智能将最大程度颠覆的行业

行业渐变呢?说人工智能将使任何商业受益,这很好也很简单,但是如何指出特定行业的好处呢?这很容易做到,因为几乎任何从事大数据分析的公司都可以从人工智能算法的数据分析增强中受益匪浅。360 度客户视角同样有益于医疗保健、金融、银行、保险、营销、旅游等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最流行的人工智能语言、库和 API

正如我们之前提到的,在各种规模的公司中,投资开发人员培训是使用人工智能算法的最受欢迎的方式之一。事实上,近 75%的调查受访者从事某种软件开发,其中 56% 培训他们的开发人员使用另一种语言来创建和训练机器学习模型以满足他们的需求。用于人工智能开发的三种主要编程语言是 Java、Python 和 R,下表重点介绍了它们在 IT 行业的使用情况。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关于 2018 年人工智能状况的最终想法

正如你所看到的,Python 显然正在成为 AI/ML 开发的领导者,无论是业务部署还是爱好项目。r 也是领先的三种语言之一,主要是因为 JuPyteR 笔记本的强大功能,它与 Python 协同工作。尽管如此,Java 仍然是企业级软件开发的堡垒,而且不会被抛弃。

因此,投资 AI/ML/DL 项目对任何企业来说都无疑是非常有利可图的。成本优化、客户数据处理、服务个性化、大数据挖掘和分析——所有这些都是永无止境的业务改进和增长过程中同等重要的部分。

你的公司在日常运营中使用人工智能吗?请和我们分享你的经历!

数据科学家的工具箱(JHU Coursera,课程 1)

原文:https://towardsdatascience.com/review-course-1-the-data-scientists-toolbox-jhu-coursera-4d7459458821?source=collection_archive---------1-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image from Quiz 3 in Data Scientist’s Toolbox

数据科学专业的第一门课程“数据科学家的工具箱”是一门非常入门的课程,旨在帮助学生设置成为数据科学家所需的一些工具(R、RStudio 和 Git)。像往常一样,测验和作业的代码位于我的 github 上。

**第一周回顾:**第一周主要是介绍专门化以及如何安装用于整个专门化的 R。测验是一系列非常基本的问题。这让我有点失望。

Data Scientist’s Toolbox John Hopkins Quiz 1

**第二周回顾:**本周远远好于第一周。这么多有用的东西在短时间内涵盖了。git、markdown 和命令行的基础是必不可少的。Git 和命令行基础是我每天都要用到的技能。Markdown 用得比较少,但是它出现在这篇文章的所有测试题中。

Data Scientist’s Toolbox John Hopkins Quiz 2

第三周:第二周很棒。第三周更加概念化。研究设计和将数据转化为知识背后的问题很好了解,但并不那么令人兴奋。

Data Scientist’s Toolbox John Hopkins Quiz 3

第四周复习:本周只是一个简单的作业。下面的任务只是为了确保每个人都知道如何使用 git(制作一个 repo,创建一个 markdown 文件,并分叉),以及确保每个人都安装了 R 和 RStudio。

Data Scientist’s Toolbox John Hopkins Project

总的来说,这个课程有点令人失望。这门课的大部分内容都是在谈论其他课程,复习极端的 git 基础知识。如果我还没有对数据科学专业接下来的几门课程写一篇积极的评论,我不会建议继续下去。然而,专业化的其余部分对工业非常有用。接下来的几门课程将教授如何获取数据文件,操作它们,并提供有用的见解。请看我的课程 2 R 编程复习

回顾:de convnet-un pooling 层(语义分段)

原文:https://towardsdatascience.com/review-deconvnet-unpooling-layer-semantic-segmentation-55cf8a6e380e?source=collection_archive---------7-----------------------

在这个故事中,反褶积网络被简单回顾,反褶积网络(DeconvNet)是由反褶积层和反褶积层组成的**。**

对于传统的 FCN,输出是通过高比率(32 倍、16 倍和 8 倍)上采样获得的,这可能导致粗糙的分割输出(标签图)。在这个去卷积网络中,通过逐步去卷积和去卷积来获得输出标签图。而且是我写这个故事的时候在 2015 ICCV 发表的一篇论文【1000 多篇引用。( Sik-Ho Tsang @中)

涵盖哪些内容

  1. 解卷积和去卷积
  2. 实例式分割
  3. 两阶段训练
  4. 结果

1.去极化和去卷积

以下是 DeconvNet 的整体架构:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DeconvNet Architecture

正如我们所见,它使用 VGGNet 作为主干。第一部分是一个卷积网络,通常像 FCN,conv 和池层。第二部分是反卷积网络,这是本文的一个新部分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Remember positions when Pooling (Left), Reuse the position information during Unpooling (right)

要执行取消池化,我们需要在进行最大池化时记住每个最大激活值的位置,如上所示。然后,如上所示,记忆的位置被用于取消绕线。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Convolution is to conv the input to smaller size (Left) Deconvolution is to conv the input back to larger size (Right)

反卷积只是将 conv 输入恢复到更大的尺寸。(如有兴趣,请阅读我的 FCN 评论了解详情。)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

An example of Deconvolution and Unpooling

上图就是一个例子。(b)是 14×14 解卷积层的输出。©是取消轮询后的输出,依此类推。我们可以在(j)中看到,自行车可以在最后的 224×224 解卷积层中重建,这表明学习过的滤波器可以捕捉特定于类的形状信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Input Image (Left), FCN-8s (Middle), DeconvNet (Right)

如上所示的其他示例表明,DeconvNet 可以重建比 FCN-8s 更好的形状。

2。实例式分割

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Bad Examples of Semantic Segmentation Without Using Region Proposals

如上所示,比感受野大得多或小得多的对象可能被分割或错误标记。小物体经常被忽略,被归类为背景

语义分割被提出为基于实例的分割问题。首先,2000 个区域提议(边界框)中的前 50 个由对象检测方法 EdgeBox 检测。然后, DeconvNet 应用于每个提议,并将所有提议的输出聚合回原始图像。通过使用建议,可以有效处理各种规模。

3。两阶段训练

第一阶段培训

使用地面实况注释裁剪对象实例,以便对象在裁剪的边界框处居中,然后执行训练。这有助于减少对象位置和大小的变化。

第二阶段培训

使用了更具挑战性的例子。这些示例是由与基本事实分段重叠的建议生成/裁剪的。

一些其他细节

  • 使用批量标准化。
  • conv 部分使用 VGGNet 中的权重进行初始化。
  • deconv 部分用零均值和高斯函数初始化。
  • 每批 64 个样品。

4.结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

mean IoU results

  • FCN-8s 的平均欠条只有 64.4%。
  • 下降率 : 69.6%
  • DeconvNet+CRF : 70.5%(其中 CRF 只是一个后处理步骤)
  • EDeconvNet:71.5%(EDeconvNet 表示用 FCN-8 组合的结果)
  • EDeconvNet+CRF : 72.5%,平均 IoU 最高。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Benefits of Instance-wise segmentation

从上图可以看出,基于实例的分段有助于逐个实例地进行分段,而不是一次对所有实例进行分段。

应当注意,DeconvNet 的增益不仅仅来自于逐渐的 deconv 和 unpooling,还可能来自于实例式分割和两阶段训练。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Some Visualization Results

EConvNet+CRF 通常有好的结果,即使比 FCN 差。

参考

  1. 【2015 ICCV】【de convnet】
    用于语义切分的学习反卷积网络

我的评论

[FCN][VGGNet]

复习:DeepID-Net-Def-Pooling 层(对象检测)

原文:https://towardsdatascience.com/review-deepid-net-def-pooling-layer-object-detection-f72486f1a0f6?source=collection_archive---------3-----------------------

在这个故事里, DeepID-Net 简单回顾一下。介绍了一种基于可变形零件的细胞神经网络。一个新的可变形约束池(def-pooling)层被用于建模具有几何约束和惩罚的物体部分的变形。

这意味着,除了直接检测整个对象之外,检测对象的部分也是至关重要的,然后这些部分可以帮助检测整个对象。是 ILSVRC 2014 中 任务亚军。并在2015 CVPR**【1】和2017 TPAMI【2】发表论文,共引用约 300 篇。( Sik-Ho Tsang @中)**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DeepID-Net

黑色彩色的台阶实际上是 R-CNN 中存在的老东西 红色颜色的步骤实际上是没有出现在 R-CNN** 中。**

我会提到上图中的每一步,并在故事的结尾给出结果。

步伐

  1. 选择性搜索
  2. 箱子拒收
  3. 使用对象级注释进行预训练
  4. 定义池层
  5. 情境建模
  6. 模型平均
  7. 包围盒回归

1。选择性搜索

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Selective Search

  1. 首先,颜色相似性、纹理相似性、区域大小和区域填充被用作非基于对象的分割。因此,我们得到了许多小的分割区域,如上图左下方所示。
  2. 然后,使用自下而上的方法,将小的分割区域合并在一起,形成更大的分割区域。
  3. 因此,如图像所示,生成了大约 2K 个 区域提议(边界框候选)。****

2.盒子拒绝

R-CNN 用于拒绝最有可能是背景的包围盒

3.使用对象级注释进行预训练

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Object-Level Annotation (Left), Image-Level Annotation (Right)

通常,预训练在图像级注释上进行。当图像中的对象太小时是不好的,因为对象应该在选择性搜索创建的边界框中占据大的区域。****

因此,预训练是在对象级注释上进行的。而深度学习模型可以是 ZFNet、VGGNet、GoogLeNet 等任何模型**。**

4。Def-Pooling 层

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Overall Architecture with More Details

例如,我们使用 ZFNet,在 conv5 之后,输出将经过原始 FC 层 fc6 和 fc7,以及一组 conv 和建议的 def-pooling 层。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Def-Pooling Layers (Deformable Constrained Pooling), High Activation Value for the Circle Center of Each Light

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Def-Pooling Equations

对于 def-pooling 路径,conv5 的输出经过 conv 层,然后经过 def-pooling 层,最后是 max pooling 层。

简而言之,AC 乘以 dc,n 的总和就是上图中的 5×5 变形罚分惩罚是从假定的锚位置放置目标部分的惩罚。

def-pooling 层学习具有不同大小和语义含义的对象部分的变形。****

通过训练该 def-pooling 层,要检测的对象的对象部分将在 def-pooling 层之后给出高的激活值,如果它们靠近它们的锚位置的话。并且这个输出将连接到 200 级分数以进行改进。

5.情境建模

在 ILSVRC 的目标检测任务中,只有 200 个类。并且在 ILSVRC 中还有一个分类竞争任务,用于对 1000 类对象进行分类和定位。与目标检测任务相比,内容更加多样化。因此,通过分类网络获得的 1000 类分数被用于细化 200 类分数。

6.模型平均

使用多个模型来提高精确度,并且对所有模型的结果进行平均。这种技术从 LeNet、AlexNet 等开始使用。

7.包围盒回归

包围盒回归只是为了微调包围盒位置**,在 R-CNN 中已经使用。**

结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Incremental Results

  • 具有选择性搜索的 R-CNN(步骤 1): 29.9% mAP(平均平均预测)
  • + 包围盒拒绝(第二步):30.9%
  • 从 AlexNet 改为 ZFNet(第三步):31.8%
  • 从 ZFNet 更改为 VGGNet(步骤 3): 36.6%
  • 从 VGGNet 更改为 GoogLeNet(第三步):37.8%
  • + 对象级标注的预处理(第三步):40.4%
  • +边缘有更多的边界框建议来自[参考文件 60]: 42.7%
  • + Def-Pooling 层(第 4 步):44.9%
  • +建议在 VGGNet 进行多尺度培训:47.3%
  • + 情境建模(第五步):47.8%
  • +边界框回归(第 7 步):48.2%
  • +模型平均(第六步): 50.7%!

与多模型多作物 GoogLeNet 相比,DeepID-Net 的地图高出 6.1%。然而,正如我们所看到的,有些投稿实际上来自其他论文。然而,有两个最新颖的想法是对对象级注释进行预处理,以及定义池层。

参考

  1. 【2015 CVPR】【DeepID-Net】
    DeepID-Net:用于物体检测的可变形深度卷积神经网络
  2. 【2017 TPAMI】【DeepID-Net】
    DeepID-Net:用于物体检测的可变形深度卷积神经网络

我的评论

[R-CNN][AlexNet][ZFNet][VGGNet][Google net]

复习:DeepLabv1 和 DeepLabv2 —阿特鲁卷积(语义分割)

原文:https://towardsdatascience.com/review-deeplabv1-deeplabv2-atrous-convolution-semantic-segmentation-b51c5fbde92d?source=collection_archive---------4-----------------------

在这个故事中, DeepLabv1DeepLabv2 被放在一起回顾,因为它们都使用了阿特鲁卷积全连通条件随机场(CRF) ,除了 DeepLabv2 多了一项技术叫做 Atous 空间金字塔池(ASPP) ,这是与 DeepLabv1 的主要区别。(当然也有其他的区别,比如:DeepLabv2 用 ResNetVGGNet 做实验,而 DeepLabv1 只用 VGGNet 。)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DeepLab Model

上图是 DeepLab 模型架构。首先,输入图像通过使用 atrous 卷积和 ASPP 的网络。然后对网络输出进行双线性插值,并通过全连接 CRF 对结果进行微调,得到最终输出。

DeepLabv1 和 DeepLabv2 已经发表在 2015 ICLR 和 2018 TPAMI 上,分别有大约 400 次和 2000 次引用在我写这个故事的时候。( Sik-Ho Tsang @中)

涵盖哪些内容

  1. 阿特鲁卷积
  2. 阿特鲁空间金字塔汇集(ASPP)
  3. 全连通条件随机场
  4. 结果

1。阿特鲁卷积

术语“阿特鲁”确实来源于法语“ à trous ”意思是洞。因此,它也被称为“算法à trous ”和“洞算法”。有些论文还称之为“膨胀卷积”。它通常用于小波变换,现在它被应用于深度学习的卷积中。

下面是 atrous 卷积的等式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1D Atrous Convolution (r>1: atrous convolution, r=1: standard convolution)

  • 当 r=1 时,就是我们通常使用的标准卷积。
  • 当 r > 1 时,为 atrous 卷积,即卷积过程中对输入样本进行采样的步长。

下图说明了这个想法:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Standard Convolution (Top) Atrous Convolution (Bottom)

阿特鲁斯卷积的思想很简单。上图顶部,是标准卷积。

在图的底部,是阿特鲁斯卷积。我们可以看到,当 rate = 2 时,输入信号是交替采样的。首先,pad=2 意味着我们在左右两边都填充 2 个零。然后,当 rate=2 时,我们每隔 2 个输入对输入信号进行采样以进行卷积。因此,在输出端,我们将有 5 个输出,使输出特征图更大。

如果我们还记得 FCN ,一系列的卷积和池化使得输出的特征图非常小,需要 32 倍的上采样,这是一种激进的上采样。

此外,atrous 卷积**允许我们扩大过滤器的视野,以纳入更大的背景。**因此,它提供了一种有效的机制来控制视野,并在精确定位(小视野)和上下文同化(大视野)之间找到最佳折衷。

在 DeepLab 中,使用 VGG-16 或 ResNet-101,最后一个池(pool5)或卷积 conv5_1 的步幅分别设置为 1,以避免信号抽取过多。并且使用 rate = 2,使用 atrous 卷积来替换所有后续的卷积层。产量大很多。我们只需要 8 倍上采样来对输出进行上采样。而双线性插值对于 8 倍上采样有相当不错的表现。

2。阿特鲁空间金字塔池(ASPP)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Atrous Spatial Pyramid Pooling (ASPP)

ASPP 实际上是 SPP 的一个老版,其中的概念已经在 SPPNet 中使用。在 ASPP,不同速率的并行 atrous 卷积应用于输入特征图,并融合在一起。

由于同一类别的对象在图像中可能具有不同的比例, ASPP 有助于说明不同的对象比例,这可以提高准确性。

3.全连通条件随机场

双线性插值后,全连接 CRF 应用于网络输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fully Connected CRF

x 是像素的标签分配。P(xi)是像素 I 处的标签分配概率。因此,第一项θi 是对数概率。

对于第二项,θij,它是一个滤波器。= 1 当 xi!= xj。当 xi = xj 时= 0。在括号中,它是两个核的加权和。第一核依赖于像素值差和像素位置差,这就是一种双边滤波器。双边滤波器具有保持边缘的特性。****第二核只依赖像素位置差,是一个高斯滤波器。σ和 w 是通过交叉验证得到的。迭代次数为 10 次。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Top: Score map (input before softmax function), Bottom: belief map (output of softmax function)

使用 10 倍的 CRF,飞机周围那些不同颜色的小区域被平滑掉了。

但是,CRF 是一个后处理过程使得 DeepLabv1 和 DeepLabv2 成为而不是一个端到端的学习框架。而且是在 DeepLabv3 和 DeepLabv3+已经不使用

4.结果

4.1.消融研究

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DeepLab-LargeFOV (Left: i.e. only single atrous conv), DeepLab-ASPP (Right, i.e. ASPP)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Results of Each Component Using ResNet-101 in PASCAL VOC 2012 Validation Set

  • 最简单的 ResNet-101 : 68.72%
  • MSC :多刻度输入
  • COCO:COCO 数据集预处理的模型
  • Aug :通过随机缩放输入图像(从 0.5 到 1.5)进行数据扩充
  • LargeFOV :使用单遍 atrous 卷积的 DeepLab
  • ASPP: 使用并行 atrous 卷积的深度实验室
  • CRF :后处理全连接 CRF。

最后得到了 77.69% 。可以看出,MSC、COCO 和 Aug 贡献了从 68.72%到 74.87%的提高,这与 LargeFOV、ASPP 和 CRF 同样重要。

4.2.与最先进方法的比较

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PASCAL VOC 2012 Test Set (Leftmost) PASCAL-Context (2nd Left) PASCAL-Person-Part (2nd Right) Cityscape (Rightmost)

也如上测试了四个数据集。结果表明,与最先进的方法相比,DeepLabv2 具有竞争力的结果。

4.3.定性结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Qualitative Results: PASCAL-Context

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Qualitative Results: Cityscape

但 DeepLab 也有一些失败的例子,其中自行车和椅子由多个薄零件组成,如自行车和椅子腿的零件:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Failure Examples

希望以后能覆盖 DeepLabv3 和 DeepLabv3+。

参考

  1. 【2015 ICLR】【DeepLabv1】
    深度卷积网和全连通 CRF 的语义图像分割
  2. 【2018 TPAMI】【deeplabv 2】
    DeepLab:深度卷积网、阿特鲁卷积、全连通 CRFs 的语义图像分割

我的相关评论

[SPPNet][VGGNet][ResNet][FCN]

复习:深度遮罩(实例分段)

原文:https://towardsdatascience.com/review-deepmask-instance-segmentation-30327a072339?source=collection_archive---------5-----------------------

一种卷积神经网络驱动的实例分段建议方法

T 他的时代, DeepMask ,由脸书 AI Research (FAIR) 点评。从 AlexNet 开始,卷积神经网络(CNN)获得了图像分类的高精度,许多 CNN 方法被开发用于其他任务,如对象检测、语义分割和实例分割。DeepMask 是用于实例分割的 CNN 方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Semantic Segmentation vs Instance Segmentation

  • 图像分类:对图像内的主要物体类别进行分类。
  • 对象检测:识别对象类别,并使用图像中每个已知对象的边界框定位位置。
  • 语义分割:识别图像中每个已知物体的每个像素的物体类别。标签是类感知的。
  • 实例分割:识别图像中每个已知对象的每个像素的每个对象实例。标签是实例感知的。

与语义分割的一些区别

  • 对实例个体的更多理解。
  • 关于遮挡的推理。
  • 对于计算物体数量等任务至关重要。

与对象检测的一些区别

  • 边界框是一个非常粗糙的对象边界,许多与被检测对象无关的像素也被包含在边界框中。
  • 而非最大抑制(NMS)将抑制遮挡对象或倾斜对象。

因此,实例分段在难度上增加了一个级别!!!

而 DeepMask 是 2015 NIPS 论文,引用 300 多。虽然这是一篇发表于 2015 年的论文,但它是最早使用 CNN 进行实例分割的论文之一。为了了解基于深度学习的实例切分的发展,有必要对其进行研究。( Sik-Ho Tsang @中)

因为可以基于预测的分割掩模生成区域提议,所以也可以执行对象检测任务。

涵盖哪些内容

  1. 模型架构
  2. 联合学习
  3. 全场景推理
  4. 结果

1.模型架构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Model Architecture (Top), Positive Samples (Green, Left Bottom), Negative Samples (Red, Right Bottom)

左下方:阳性样本

k 个阳性样本被赋予标签 yk =1 。要成为阳性样本,需要满足两个标准:

  • 面片包含一个大致位于输入面片中心的对象
  • 物体完全包含在面片中,并在给定的比例范围内。

yk =1 时,地面真实遮罩 mk 对于属于位于图像块中心的单个物体的像素具有正值

右下方:阴性样本

否则,即使物体部分存在,阴性样本也会被赋予标签 yk =-1yk =-1 时,不使用掩膜。

顶层,模型架构:主分支

如上图所示的模型,给定输入图像块 x ,经过 VGGNet 的特征提取后,去除源于 VGGNet 的全连通(FC)层。 VGGNet 中的最后一个 max pooling 层也被删除,因此在分成两路之前的输出是输入的 1/16。例如如上,输入是 224×224 (3 是输入图像的通道数,即 RGB),主分支末端的输出是(224/16)×(224/16) =14×14。(512 是卷积后的特征图个数。)

VGGNet 之后有两条路径:

  • 第一条路径是预测类别不可知的分割掩码,即 fsegm ( x )。
  • 第二条路径是分配一个分数,该分数对应于补丁包含一个对象的可能性,即fs core(x)

顶部,第一条路径:预测分段图

先进行 1×1 卷积而不改变特征图的数量,这里进行的是没有降维的非线性映射。之后,执行两个 FC 层。(注意,在这两个 FC 层之间没有 ReLU!)

与语义分割不同,即使存在多个对象,网络也必须输出单个对象的掩码。(就像上图输入图像中央的大象一样。)

最后,生成一个 56×56 的分割图。而一个简单的双线性插值就是将分割图上采样到 224×224

顶部,第二条路径:预测对象得分

2×2 最大池,后跟两个 FC 层。最后,获得一个单值预测对象分数, fscore ( x )。由于正样本是基于上述两个标准给出的, fscore ( x )用于预测输入图像是否满足这两个标准。

2.联合学习

2.1.损失函数

对网络进行训练,共同学习每个位置(I,j)的逐像素分割图fsegm(xk)和预测对象得分fs core(xk)。**损失函数如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

简言之,损失函数是二元逻辑回归损失的和,一个用于分割网络fsegm(xk)的每个位置,一个用于对象分数fs core(xk)**。第一项意味着如果 yk =1,我们仅在分割路径上反向传播误差。

如果 yk =-1,即负样本,第一项变为 0,不会造成损失。只有第二项造成了损失。

为了数据平衡,使用相同数量的阳性和阴性样本。

2.2.其他详细信息

使用 32 的批量。使用预训练的 ImageNet 模型。总共有 75M 个参数。该模型需要大约 5 天在 Nvidia Tesla K40m 上进行训练。

3.全场景推理

3.1.多个位置和规模

推理(测试)时,模型在多个位置密集应用,步长为 16 个像素,从 1/4 到 2 的多个尺度,步长为 2 的平方根。这确保了至少有一个完全包含图像中每个对象的测试图像块。

3.2.精细步幅最大汇集

由于输入测试图像大于训练输入小块尺寸,我们需要一个相应的 2D 评分图作为输出,而不是一个单一的评分值。在评分分支的最后一个最大池层之前使用了一个交织技巧,即over fat中提出的精细步长最大池

简而言之,多最大池是在特征图上完成的。在每次最大汇集之前执行像素移动。

4.结果

4.1.可可女士(盒子和分段遮罩)

80,000 幅图像和总共近 500,000 个分割对象用于训练。2014 年可可小姐的前 5000 张照片用于验证。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Average Recall (AR) Detection Boxes (Left) and Segmentation Masks (Right) on MS COCO Validation Set (AR@n: the AR when n region proposals are generated. AUCx: x is the size of objects)

  • DeepMask20 :只对属于 20 个帕斯卡类别之一的对象进行训练。与 DeepMask 相比,AR 较低,这意味着网络没有推广到看不见的类。(看不到的课分数低。)
  • DeepMask20* :类似于 DeepMask,但评分路径使用原始的 DeepMask。
  • DeepMaskZoom :额外的小尺度提升 AR,但代价是增加了推理时间。
  • DeepMaskFull :预测分割掩膜路径上的两个 FC 层被一个从 512×14×14 特征图直接映射到 56×56 分割图的 FC 层代替。整个架构有超过 300 米的参数。比 DeepMask 略逊一筹,慢很多。

4.2.PASCAL VOC 2007(盒子)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Average Recall (AR) for Detection Boxes on PASCAL VOC 2007 Test Set

  • 基于预测的分割掩模产生区域提议,其可以用作目标检测任务的第一步。
  • 使用深度屏蔽的快速 R-CNN优于使用选择性搜索的原始快速 R-CNN 以及其他最先进的方法。

4.3.推理时间

  • 《可可小姐》中的推理时间是每张图片 1.6s。
  • PASCAL VOC 2007 中的推理时间是每张图片 1.2s。
  • 通过在单个批次中并行化所有秤,推断时间可以进一步下降约 30%。

4.4.定性结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DeepMask proposals with highest IoU to the ground truth on selected images from COCO. Missed objects (no matching proposals with IoU > 0.5) are marked with a red outline.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

More Results from COCO. Missed objects (no matching proposals with IoU > 0.5) are marked with a red outline.

DeepMask 已经更新,在 GitHubVGGNet 主干被 ResNet 取代。

继 DeepMask 之后,FAIR 还发明了 SharpMask。希望我以后也能报道它。

参考

【2015 NIPS】【deep mask】
[学习分割对象候选](http://Learning to Segment Object Candidates)

我的相关评论

)(我)(们)(都)(不)(想)(到)(这)(些)(人)(,)(我)(们)(都)(不)(想)(要)(到)(这)(些)(人)(,)(但)(是)(这)(些)(人)(还)(不)(想)(到)(这)(些)(人)(,)(我)(们)(还)(没)(想)(到)(这)(些)(事)(,)(我)(们)(就)(想)(到)(了)(这)(些)(人)(们)(,)(我)(们)(们)(都)(不)(想)(要)(到)(这)(些)(人)(,)(但)(我)(们)(还)(没)(想)(到)(这)(些)(事)(,)(我)(们)(还)(没)(想)(到)(这)(里)(来)(。 )(我)(们)(都)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(。

物体检测 过食R-CNN快 R-CNN快 R-CNNDeepID-NetR-FCNyolo v1SSDyolo v2/yolo 9000

语义切分
[FCN][de convnet][deeplabv 1&deeplabv 2][parse net][dilated net][PSPNet]

生物医学图像分割 cumed vision 1cumed vision 2/DCANU-NetCFS-FCN

综述:DenseNet 密集卷积网络(图像分类)

原文:https://towardsdatascience.com/review-densenet-image-classification-b6631a8ef803?source=collection_archive---------2-----------------------

在这个故事中, DenseNet(密集卷积网络)进行了回顾。这是在 2017 CVPR 获得最佳论文奖的论文,引用超过 2000 次。它是由康维尔大学、清华大学和脸书人工智能研究所(FAIR)联合发明的。( Sik-Ho Tsang @中)

密集连接,与 ResNet预激活 ResNet 相比,参数少,精度高。那么,让我们来看看它是如何工作的。

涵盖哪些内容

  1. 密集街区
  2. DenseNet 架构
  3. dense net 的优势
  4. CIFAR & SVHN 小规模数据集结果
  5. ImageNet 大规模数据集结果
  6. 特征复用的进一步分析

1。密集块

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Standard ConvNet Concept

标准 ConvNet 中,输入图像经过多重卷积,获得高层特征。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ResNet Concept

ResNet中,提出了身份映射来促进梯度传播。使用元素加法。它可以被看作是具有从一个 ResNet 模块传递到另一个 ResNet 模块的状态的算法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

One Dense Block in DenseNet

DenseNet 中,每一层从所有前面的层获得额外的输入,并将自己的特征映射传递给所有后面的层。使用串联每一层都从所有前面的层接收“集体知识”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Dense Block in DenseNet with Growth Rate k

由于每一层都从所有前面的层接收特征图,网络可以更细更紧凑,即通道数量可以更少。增长率 k 是每层增加的通道数。

因此,它具有较高的计算效率和存储效率。下图显示了正向传播过程中串联的概念:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Concatenation during Forward Propagation

2. DenseNet 架构

2.1.基本 DenseNet 成分层

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Composition Layer

对于每一个构图层,预激活 批范数(BN) 和 ReLU,然后 3×3 Convk 通道的输出特征图完成,比如变换 x 0, x 1, x 2, x 3 到 x 4。这是来自 的创意,预激活 ResNet

2.2.DenseNet-B(瓶颈层)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DenseNet-B

为了降低模型的复杂度和尺寸, BN-ReLU-1×1 ConvBN-ReLU-3×3 Conv 之前完成。

2.4.具有过渡层的多个密集块

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Multiple Dense Blocks

1×1 Conv,然后是 2×2 平均池,用作两个相邻密集区块之间的过渡层。

在密集块中,要素地图的大小是相同的,因此可以很容易地将它们连接在一起。

在最后一个密集块的末尾,执行全局平均池化,然后附加 softmax 分类器。

2.3.DenseNet-BC(进一步压缩)

如果一个密集块包含 m 个特征图,过渡层生成 θm 个输出特征图,其中 0 < θ ≤1 称为压缩因子。

θ =1 时,跨过渡层的特征映射的数量保持不变。 θ <为 1 的 DenseNet 称为 DenseNet-C ,实验中 θ =0.5

当使用**θ*<1 的瓶颈层和过渡层时****,该型号称为 DenseNet-BC 。*

最后训练有/无 B/C 和不同 Lk 生长率的 DenseNets

3.dense net 的优势

3.1.强梯度流

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Implicit “Deep Supervision”

误差信号可以容易地更直接地传播到更早的层。这是一种隐式深度监督,因为较早的层可以从最终分类层获得直接监督。

3.2.参数和计算效率

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Number of Parameters for ResNet and DenseNet

对于每一层, ResNet 中的参数个数与 C ×C 成正比,而 DenseNet 中的参数个数与 l × k × k 成正比。

由于 k < < C ,DenseNet 的尺寸比 ResNet 小很多。

3.3.更加多样化的功能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

More Diversified Features in DenseNet

由于 DenseNet 中的每一层都接收所有前面的层作为输入,因此更多样化的特性和模式更丰富。

3.4.保持低复杂性特征

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Standard ConvNet

在标准的 ConvNet 中,分类器使用最复杂的特征。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DenseNet

在 DenseNet 中,分类器使用所有复杂级别的特征。它倾向于给出更平滑的决策边界。也解释了为什么 DenseNet 在训练数据不足的情况下表现良好。

4. CIFAR & SVHN 小规模数据集结果

4.1.CIFAR-10

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

CIFAR-10 Results

预激活 ResNet 用于详细比较。

使用数据扩充(C10+),测试误差:

  • 小型 ResNet-110: 6.41%
  • 大尺寸 ResNet-1001(10.2 米参数):4.62%
  • 最先进的(SOTA) 4.2%
  • 小型 DenseNet-BC ( L =100, k =12)(仅 0.8M 参数):4.5%
  • 大尺寸 DenseNet ( L =250, k =24): 3.6%

无数据扩充(C10),测试误差:

  • 小型 ResNet-110: 11.26%
  • 大尺寸 ResNet-1001(10.2 米参数):10.56%
  • 最先进的(SOTA) 7.3%
  • 小型 DenseNet-BC ( L =100, k =12)(仅 0.8M 参数):5.9%
  • 大尺寸 DenseNet ( L =250, k =24): 4.2%

严重的过拟合出现在 预激活 ResNet 中,而 DenseNet 在训练数据不足时表现良好,因为 DenseNet 使用所有复杂度级别的特征。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

C10+: Different DenseNet Variants (Left), DenseNet vs ResNet (Middle), Training and Testing Curves of DenseNet and ResNet (Right)

: DenseNet-BC 获得最佳结果。

中间 : 预激活 ResNet 已经比Alex netVGGNet 得到的参数少,DenseNet-BC ( k =12)在相同测试误差下比 预激活 ResNet 得到的参数少 3 倍。

:参数为 0.8 的 DenseNet-BC-100 与参数为 10.2M 的 预激活 ResNet-1001 测试误差相近。

4.2.西发尔-100

CIFAR-100 的类似趋势如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

CIFAR-100 Results

4.3.详细结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Detailed Results, + means data augmentation

SVHN 是街景门牌号码数据集。蓝色意味着最好的结果。DenseNet-BC 不能获得比基本 DenseNet 更好的结果,作者认为 SVHN 是一个相对容易的任务,并且非常深的模型可能会过度适应训练集。

5.ImageNet 大规模数据集结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Different DenseNet Top-1 and Top-5 Error Rates with Single-Crop (10-Crop) Results

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ImageNet Validation Set Results Compared with Original ResNet

中实现的原始 ResNet 该链接用于详细比较。

:参数为 20M 的 DenseNet-201 与参数超过 40M 的 ResNet-101 产生相似的验证误差。

:类似的计算次数趋势(GFLOPs)

****底:dense net-264(k= 48)得到了 20.27% Top-1 误差和 5.17% Top-5 误差的最好结果。

6.特征重用的进一步分析

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Heat map on the average absolute weights of how Target layer (l) reuses the source layer (s)

  • 由非常早期的层提取的特征被遍及同一密集块的更深的层直接使用。
  • 过渡层的权重也会将其权重分布到所有前面的层。
  • 第二和第三密集块内的层一致地将最小权重分配给过渡层的输出。(第一排)
  • 在最终分类层,权重似乎是对最终特征地图的集中。一些更高级的功能在网络后期产生。

作者还发表了多尺度 DenseNet。希望我以后也能报道它。

参考

【2017 CVPR】【dense net】
密集连接的卷积网络

我的相关评论

[LeNet][AlexNet][ZFNet][VGGNet][SPPNet][PReLU-Net][Google Net/Inception-v1][BN-Inception/Inception-v2][Inception-v3][Inception-v4

综述:扩展网络—扩展卷积(语义分割)

原文:https://towardsdatascience.com/review-dilated-convolution-semantic-segmentation-9d5a5bd768f5?source=collection_archive---------2-----------------------

又名“ atrous 卷积”、“算法à trous ”和“空洞算法

T 他的时代,**膨胀卷积,**来自普林斯顿大学和英特尔实验室,简要回顾。扩展卷积的思想来源于小波分解。又称为“ atrous 卷积”、“ algorithme à trous ”和“ hole algorithm ”。因此,如果我们可以将过去的任何想法转化为深度学习框架,它们仍然是有用的。

而这个膨胀的卷积在我写这个故事的时候已经发表在 2016 ICLR 上有超过 1000 次引用。( Sik-Ho Tsang @中)

涵盖哪些内容

  1. 扩张回旋
  2. 多尺度上下文聚合(上下文模块)
  3. 结果

1.扩张卷积

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Standard Convolution (Left), Dilated Convolution (Right)

左边的是标准卷积。右边的是扩张的回旋。我们可以看到在求和的时候,就是 s+ l t=p 我们在卷积的时候会跳过一些点。

l =1 时,为标准卷积。

l1 时,为扩张卷积。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Standard Convolution (l=1)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Dilated Convolution (l=2)

以上举例说明了当 l =2 时展开卷积的例子。我们可以看到感受野比标准感受野大**。**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

l=1 (left), l=2 (Middle), l=4 (Right)

上图显示了更多关于感受野的例子。

2。多尺度上下文聚合(上下文模块)

基于扩展卷积构建上下文模块如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The Basic Context Module and The Large Context Module

上下文模块有 7 层,应用具有不同膨胀因子的 3×3 卷积。扩容 1,1,2,4,8,16,1。

最后一个是 1×1 卷积,用于将通道数映射为与输入通道数相同。因此,**输入和输出有相同数量的通道。**并且可以插入不同种类的卷积神经网络。

基本上下文模块在整个模块中只有1 个通道(1C ),而大型上下文模块增加通道数,从 1C 输入到第 7 层的 32C**。**

3.结果

3.1.帕斯卡 VOC 2012

VGG-16 作为前端模块。最后两个池层和跨层被完全移除,并插入了上下文模块。中间特征图的填充也被移除。作者仅填充宽度为 33 的输入要素地图。在我们的实验中,零填充和反射填充产生了类似的结果。此外,使用考虑输入和输出通道数量的权重初始化来代替标准随机初始化。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PASCAL VOC 2012 Test Set

通过对比原作者训练的公开模型,在测试集上,扩张卷积比【FCN-8s】DeepLabv1 均高出约 5 个百分点。

可以获得 67.6%的平均 IoU。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PASCAL VOC 2012 Validation Set

通过对来自 Microsoft COCO 数据集的额外图像进行训练,对扩张卷积本身进行消融研究,如上所示。

  • 前端:前端模块
  • 基本:基本上下文模块
  • :大上下文模块
  • CRF :使用deeplab v1DeepLabv2 中条件随机字段的后处理步骤
  • RNN :通过递归神经网络使用条件随机场的后处理步骤

我们可以看到,膨胀卷积(基本或大)总是可以改善结果,并且不与任何其他后处理步骤重叠。

并且可以获得 73.9%的平均 IoU。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PASCAL VOC 2012 Test Set

上表中的前端模块也是通过对来自微软 COCO 数据集的附加图像进行训练而获得的。使用通用报告格式-RNN(即上表中的 RNN),平均 IoU 为 75.3%。

3.2.定性结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PASCAL VOC 2012

全部采用 VGG-16 进行特征提取,使用扩张卷积在分割结果上有更好的质量

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PASCAL VOC 2012

用条件随机场 RNN 作为后处理步骤,得到了稍好的结果。但是 CRF-RNN 使这个过程不是一个端到端的学习。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Failure Cases

一些失败案例如上图,当物体被遮挡时,分割出错。

附录中尝试了不同的数据集,即 CamVid、KITTI 和 Cityscapes,请随意阅读本文。他们还发表了扩张的残余网络。希望以后能覆盖。😃

参考

【2016 ICLR】【扩张卷积】
扩张卷积的多尺度上下文聚合

我的相关评论

[VGGNet][FCN][DeconvNet][deep lab v1&deep lab v2]

综述:DSSD —解卷积单次探测器(目标探测)

原文:https://towardsdatascience.com/review-dssd-deconvolutional-single-shot-detector-object-detection-d4821a2bbeb5?source=collection_archive---------4-----------------------

反卷积层:引入额外的大规模背景,提高小对象的准确性

T 他的时代, DSSD(反卷积单次检测器)被回顾。DSSD,用去进化路径,改进了之前的 SSD 。是 2017 arXiv 中的一篇技术报告,引用超过 100 次。( Sik-Ho Tsang @ Medium)。

  • 逐步反卷积放大特征图
  • 来自卷积路径和反卷积路径的特征组合

涵盖哪些内容

  1. 整体架构
  2. 反卷积模块
  3. 预测模块
  4. 一些训练细节
  5. 结果

1。整体架构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SSD (Top) DSSD (Bottom)

  • 白色转换:可以是 VGGNet ResNet 骨干进行特征提取
  • 蓝色转换率:是原来的 SSD 部分,涉及到去掉原来的 VGGNet / ResNet 的全连通层,使用萎缩/扩张卷积(源自小波,由 DeepLabDilatedNet 使用)添加 conv 层。(有兴趣请访问 SSD 。)
  • 剩余转换:由反卷积模块和预测模块组成,后面会详细介绍。

2.去卷积模块

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Deconvolution Module

  • 反卷积路径上的那些特征图通过 Deconv2×2 然后 Conv3×3+ BN 进行上采样。
  • 另一方面,对应的相同大小的特征图具有 con v3×3+BN+ReLU+con v3×3+BN
  • 然后,它们按元素相乘(Eltw 乘积),并进行 ReLU,然后传递给预测模块。

3。预测模块

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Various Prediction Module

  • 测试了各种预测模块。
  • (a):是 SSD 中使用的最基本的一个,直接预测对象类,进行包围盒回归。
  • (b):在特征图上执行 Conv1×1 的附加集合,以增加维度。还有一个与元素相加的 skip 连接。
  • ©:除了在跳过连接路径上执行一个额外的 Conv1×1 之外,它是(b)的一个。
  • (d):两个©是级联的。

4.一些训练细节

两阶段训练

  • 使用 ImageNet 预训练模型训练有素的 SSD 。
  • 对于第一阶段,仅训练反卷积侧。
  • 第二阶段,对整个网络进行微调。

其他

  • 还使用了广泛的数据扩充,包括随机裁剪、翻转和随机光度失真。
  • 在使用 K-均值聚类进行分析之后,添加纵横比为 1.6 的先前盒子,即使用{1.6,2.0,3.0}。

基于以上所述,在 PASCAL VOC 2007 上进行消融研究:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Results on PASCAL VOC 2007

  • SSD 321 :原装 SSD 带输入 321×321,76.4% mAP。
  • SSD 321 + PM© :原装 SSD 使用预测模块©,77.1 % mAP,比使用 PM (b)和 PM (d)的要好。
  • SSD 321+PM©+DM(Eltw-prod):DM 表示解卷积模块,因此,这是 DSSD 使用 PM©和用于特征组合的元素式产品,78.6% mAP。它比使用元素相加的方法要好一点。
  • SSD 321+PM©+DM(Eltw-prod)+Stage 2:采用两阶段训练,成绩下降。

5.结果

5.1.帕斯卡 VOC 2007

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Results on PASCAL VOC 2007 Test

SSD 和 DSSD 在 2007 trainval 和 2012 trainval 的联合上接受培训。

  • SSD300* 和 SSD512* (表示使用了新的数据扩充技巧。):凭借,最初的固态硬盘已经超越了除 R-FCN 之外的其他最先进的方法。
  • SSD 321SSD 513 :以 ResNet 为骨干,性能已经和 SSD300和 SSD512差不多。
  • DSSD 321DSSD 513 :通过反卷积路径,它们分别优于 SSD 321 和 SSD 513。
  • 特别是, DSSD513 的表现优于R-FCN

5.2.帕斯卡 VOC 2012

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Results on PASCAL VOC 2012 Test

VOC 2007 trainval+测试和 2012 trainval 用于培训。既然发现两阶段训练没用,这里就用一阶段训练。

  • **DSSD 513 以 80.0%的 mAP 表现优于其他品种。**并且不使用 COCO 数据集的额外训练数据进行训练。

5.3.可可女士

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Results on MS COCO Test

还是那句话,没有两阶段训练。

  • SSD300* 已经比更快 R-CNN 和 ION。
  • DSSD321 在小物体上的 AP 更好,7.4%相比 SSD321 只有 6.2%。
  • 对于更大的车型, DSSD513 获得 33.2%的 mAP,比 29.9% mAP 的 R-FCN 要好**。它已经和更快的 R-CNN++取得了竞争结果。(+++表示它也使用 VOC2007 和 VOC2012 进行培训。)**

5.4.推理时间

为了在测试过程中简化网络, BN 被移除,并与 conv 合并,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

简而言之,他们试图将 BN 效应合并到 conv 层的权重和偏差计算中,从而简化网络。这将速度提高了 1.2 到 1.5 倍,并将内存减少了三倍。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Speed & Accuracy on PASCAL VOC 2007 Test

  • SSD 513R-FCN (9 FPS)相比,速度(8.7 fps)和精度差不多。去除 BN 层并与 conv 层合并,得到 11.0 fps 更快。
  • DSSD513 比 R-FCN 精度更高,但速度稍慢。
  • DSSD321 比 R-FCN 精度低,但速度更快。

5.5.定性结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SSD (Left) DSSD (Right)

由于输入尺寸较小, SSD 在小对象上效果不佳。随着反卷积路径,DSSD 显示出明显的改善。

参考

【2017 arXiv】【DSSD】
DSSD:解卷积单粒子探测器

我的相关评论

)(我)(们)(都)(不)(想)(到)(这)(些)(人)(,)(我)(们)(都)(不)(想)(要)(到)(这)(些)(人)(,)(但)(是)(这)(些)(人)(还)(不)(想)(到)(这)(些)(人)(,)(我)(们)(还)(没)(想)(到)(这)(些)(事)(,)(我)(们)(就)(想)(到)(了)(这)(些)(人)(们)(,)(我)(们)(们)(都)(不)(想)(要)(到)(这)(些)(人)(,)(但)(我)(们)(还)(没)(想)(到)(这)(些)(事)(,)(我)(们)(还)(没)(想)(到)(这)(里)(来)(。 )(我)(们)(都)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(,)(我)(们)(还)(是)(不)(知)(道)(。

物体检测 过食R-CNN快 R-CNN快 R-CNNDeepID-NetR-FCNyolo v1SSDyolo v2/yolo 9000

语义切分
[FCN][de convnet][deeplabv 1&deeplabv 2][parse net][dilated net][PSPNet]

回顾:更快的 R-CNN(目标检测)

原文:https://towardsdatascience.com/review-faster-r-cnn-object-detection-f5685cb30202?source=collection_archive---------1-----------------------

在这个故事中,更快的 R-CNN【1–2】被回顾。在之前的快速 R-CNN [3]和 R-CNN [4]中,区域建议是通过选择性搜索(SS) [5]而不是使用卷积神经网络(CNN)来生成的。

在更快的 R-CNN[1–2],**中,区域提案生成和异议检测任务都由同一个 conv 网络完成。**采用这样的设计,物体检测速度更快。

为了更好地了解深度学习对象检测,作为一系列的对象检测方法,如果有足够的时间,最好按照顺序阅读 R-CNN、Fast R-CNN 和 Fast R-CNN,以了解对象检测的演变,特别是为什么区域提议网络(RPN)存在于该方法中。如果有兴趣,我建议看看我对他们的评论。

由于更快的 R-CNN 是一种最先进的方法,当我写这个故事时,它被发表为 2015 NIPS 论文和 2017 TPAMI 论文,分别有超过 4000 和 800 篇引用**。( Sik-Ho Tsang @中)**

涵盖哪些内容

  1. 地区提案网络
  2. 检测网络
  3. 四步交替训练
  4. 消融研究
  5. 检测结果

1.区域提案网络

简而言之,R-CNN [4]和快速 R-CNN [3]首先通过选择性搜索(SS) [5]生成区域建议,然后使用基于 CNN 的网络对对象类别进行分类并检测边界框。(主要区别在于 R-CNN 在像素级将区域建议输入到 CNN 中用于检测,而快速 R-CNN 在特征映射级输入区域建议。)因此,在 R-CNN [4]和快速 R-CNN [3]中,区域提议方法/网络(即 SS)和检测网络是解耦的。

脱钩不是一个好主意。比如说 SS 有假阴性的时候,这个误差会直接伤害到检测网络。最好将它们耦合在一起,使它们相互关联。

在更快的 R-CNN[1–2]中,使用 SS [5]的 RPN 被使用 CNN 的 RPN 取代。并且该 CNN 与检测网络共享。这个 CNN 可以是论文中的 ZFNet 或者 VGGNet。因此,整个网络如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Faster R-CNN

  1. 首先,图片经过 conv 层和特征地图提取。
  2. 然后在 RPN 中为特征图上的每个位置使用一个滑动窗口**。**
  3. 对于每个位置,使用 k (k=9)个锚定框(128、256 和 512 的 3 个比例,以及 1:1、1:2、2:1 的 3 个纵横比)来生成区域提议。
  4. 一个 cls 层输出 2k 分数对于 k 盒子是否有对象**。**
  5. 一个 reg 层输出k盒子的坐标**(盒子中心坐标,宽度和高度)4k 。**
  6. 一张大小为W×H 的特征图,总共有 WHk 个主播。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The Output of RPN

128、256 和 512 三种比例以及 1:1、1:2 和 2:1 三种纵横比的平均建议尺寸为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Average Proposal Sizes

损失函数是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

RPN Loss Function

第一项是 2 类(有无对象)上的分类损失。第二项是仅当存在对象(即 p_i =1)时边界框的回归损失。*

因此, RPN 网络就是预检查哪个位置包含对象。并且相应的位置和边界框将传递到检测网络用于检测对象类别并返回该对象的边界框。

由于区域可以彼此高度重叠,所以使用非最大抑制(NMS)来将提议的数量从大约 6000 减少到 N (N=300)。

2。检测网络

除了 RPN,其余部分与快速 R-CNN 类似。首先执行 ROI 合并。然后汇集的区域通过 CNN 和两个 FC 分支,用于类 softmax 和边界框回归器。(如果有兴趣,请阅读我对 Fast R-CNN 的评论。)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fast R-CNN Detection Network

3.四步交替训练

由于 conv 层被共享以提取最终具有不同输出的特征图,因此,训练过程非常不同:

  1. 用 imagenet 预训练模型训练(微调)RPN。
  2. 使用 imagenet 预训练模型训练(微调)单独的检测网络。(Conv 图层尚未共享)
  3. 使用检测器网络来初始化 PRN 训练,修复共享的 conv 层,仅微调 RPN 的独特层。
  4. 保持 conv 层固定,微调探测器网络的独特层。

4。消融研究

4.1.区域提案

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如上所述,利用非共享 conv 层(在交替训练中只有前 2 步),获得了 58.7%的 mAP。共享 conv 图层,获得 59.9%的地图。并且它优于现有技术的 SS 和 EB。

4.2 比例和比率

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

****在 3 个尺度和 3 个比例的情况下,获得了 69.9%的地图,与 3 个尺度和 1 个比例的地图相比只有很小的改进。但是仍然使用 3 个刻度和 3 个比率。

损失函数中的 4.3 λ

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

λ = 10 达到最佳效果。

5。检测结果

5.1 帕斯卡 VOC 2007

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Detailed Results

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Overall Results

通过使用 COCO、VOC 2007 (trainval)和 VOC 2012 (trainval)数据集的训练数据,获得了 78.8%的 mAP。

5.2 帕斯卡 VOC 2012

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Detailed Results

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Overall Results

利用使用 COCO、VOC 2007 (trainval+test)和 VOC 2012 (trainval)数据集的训练数据,获得了 75.9%的 mAP。

5.3 可可女士

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Overall Results

使用 COCO 训练集进行训练,用 IoU @ 0.5 获得 42.1%的 mAP。当 IoU 从 0.5 到 0.95,步长为 0.05 时,可以获得 21.5%的 mAP。

5.4 检测时间

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Detection Time

用 SS 做 RPN,VGGNet 做检测网络:0.5 fps / 1830ms
VGGNet 做 RPN 和检测网络 : 5fps / 198ms
ZFNet 做 RPN 和检测网络 : 17fps / 59ms
比 SS 快很多。

5.5.一些例子

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

VOC 2007

参考

  1. [2015 NIPS][更快的 R-CNN]
    更快的 R-CNN:利用区域提议网络实现实时对象检测
  2. 【2017 TPAMI】【更快的 R-CNN】
    更快的 R-CNN:利用区域提议网络实现实时对象检测
  3. 【2015 ICCV】【快速 R-CNN】
    快速 R-CNN
  4. 【2014 CVPR】【R-CNN】
    丰富的特征层次,用于精确的对象检测和语义分割
  5. 【2013 IJCV】【选择性搜索】
    选择性搜索对象识别

我的评论

  1. 回顾:快速 R-CNN(物体检测)
  2. 回顾:R-CNN(物体检测)

综述:FCN —完全卷积网络(语义分段)

原文:https://towardsdatascience.com/review-fcn-semantic-segmentation-eb8c9b50d2d1?source=collection_archive---------4-----------------------

在这个故事中,完全卷积网络(FCN)对语义分割进行了简要回顾。与分类和检测任务相比,分割是一项更加困难的任务。

  • 图像分类:对图像中的物体进行分类(识别出物体类别)。
  • 物体检测:用包围物体的包围盒对图像内的物体进行分类和检测。这意味着我们还需要知道每个对象的类、位置和大小。
  • 语义分割:对图像中的每个像素进行对象分类。这意味着每个像素都有一个标签。

语义分割的一个例子如下:

An example of Semantic Segmentation

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Original Image (Leftmost), Ground Truth Label Map (2nd Left), Predicted Label Map (2nd Right), Overlap Image and Predicted Label (Rightmost)

在我写这个故事的时候,它已经发表在2015 CVPR【1】和2017 TPAMI【2】上,引用次数超过 6000 次。因此,它也是使用 FCN 进行语义分割的最基本的论文之一。( Sik-Ho Tsang @中)

涵盖哪些内容

  1. 从图像分类到语义分割
  2. 通过去卷积进行上采样
  3. 定影输出
  4. 结果

1。从图像分类到语义分割

在分类中,传统上,输入图像被缩小并经过卷积层和全连接(FC)层,并输出输入图像的一个预测标签,如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Classification

假设我们将 FC 层变成 1×1 卷积层:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

All layers are convolutional layers

如果图像没有缩小,输出将不会是单个标签。相反,输出的大小小于输入图像(由于最大池化):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

All layers are convolutional layers

如果我们对上面的输出进行上采样,那么我们可以如下计算逐像素输出(标签映射):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Upsampling at the last step

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Feature Map / Filter Number Along Layers

2。通过去卷积进行上采样

卷积是使输出变小的过程。因此,反卷积这个名称来自于我们希望通过上采样来获得更大的输出。(但名字,反卷积,被曲解为卷积的逆过程,其实不是。)又叫,上卷积,转置卷积。当使用分数步距时,也称为分数步距卷积

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Upsampling Via Deconvolution (Blue: Input, Green: Output)

3.融合输出

经过如下 conv7 后,输出尺寸较小,则进行 32 倍上采样,使输出具有与输入图像相同的尺寸。但也让输出标签图粗糙。它叫做 FCN-32s :

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FCN-32s

这是因为,**深入时可以获得深层特征,深入时也会丢失空间位置信息。**这意味着来自较浅层的输出具有更多的位置信息。如果我们把两者结合起来,我们可以提高结果。

为了合并,我们融合输出(通过元素相加):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fusing for FCN-16s and FCN-8s

FCN-16s:pool 5 的输出经过 2 倍上采样,与 pool4 融合,进行 16 倍上采样。与上图中 FCN-8s 类似的操作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Comparison with different FCNs

由于丢失了位置信息,FCN-32s 的结果非常粗略,而 FCN-8s 的结果最好。

这种融合操作实际上就像 AlexNet、VGGNet 和 GoogLeNet 中使用的 boosting / ensemble 技术一样,他们通过多个模型添加结果,使预测更加准确。但在这种情况下,它是针对每个像素完成的,并且它们是从模型内不同层的结果添加的。

4.结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Pascal VOC 2011 dataset (Left), NYUDv2 Dataset (Middle), SIFT Flow Dataset (Right)

  • FCN-8s 是 2011 年帕斯卡 VOC 的最佳产品。
  • FCN-16s 是 NYUDv2 中最好的。
  • FCN-16s 是最好的筛流。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Visualized Results Compared with [Ref 15]

第四行显示了一个失败案例:网络将船上的救生衣视为人。

希望以后能多复习一下语义切分的深度学习技术。

参考

  1. 【2015 CVPR】【FCN】
    用于语义分割的全卷积网络
  2. 【2017 TPAMI】【FCN】
    用于语义分割的全卷积网络

复习:FSRCNN(超分辨率)

原文:https://towardsdatascience.com/review-fsrcnn-super-resolution-80ca2ee14da4?source=collection_archive---------1-----------------------

CUHK 的《他的时代》、 FSRCNN 被评论。本文提出了一种实时超分辨率方法快速超分辨率卷积神经网络(FSRCNN) 在我写这个故事的时候,已经在 2016 ECCV 发表了近 300 次引用。( Sik-Ho Tsang @中)

FSRCNN 具有相对较浅的网络,这使得我们更容易了解每个组件的效果。如下图所示,它比以前的 SRCNN 速度更快,重建图像质量更好。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

From SRCNN to FSRCNN

通过比较 SRCNN 和 FSRCNN-s,fsr CNN-s(fsr CNN 的小模型尺寸版本)具有更好的 PSNR(图像质量)和更短的运行时间,其中获得了 43.5 fps。

通过比较 SRCNN-Ex(一种更好的 SRCNN)和 FSRCNN,FSRCNN 具有更好的 PSNR(图像质量)和更短的运行时间,其中获得了 16.4 fps。

那么,让我们看看它是如何实现这一点的。

涵盖哪些内容

  1. 简要回顾 SRCNN
  2. FSRCNN 网络架构
  3. 1×1 卷积用于缩小和扩展的说明
  4. 非线性映射中多重 3×3 卷积的解释
  5. 消融研究
  6. 结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Network Architecture: SRCNN (Top) and FSRCNN (Bottom)

上图显示了 SRCNN 和 f SRCNN 的网络架构。图中, Conv(f,n,c) 表示 n 个滤波器c 个输入通道数f×f 滤波器大小的卷积。

1。简要回顾 SRCNN

在 SRCNN 中,步骤如下:

  1. 首先进行双三次插值,以向上采样到所需的分辨率。
  2. 然后进行 9×9,1×1,5×5 卷积以提高图像质量。对于 1×1 conv,其被声称用于低分辨率(LR)图像向量和高分辨率(HR)图像向量的非线性映射。

计算复杂度为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中它与 HR 图像的尺寸 SHR 成线性比例。HR 图像越大,复杂度越高。

2. FSRCNN 网络架构

在 FSRCNN 中,涉及如图所示的具有更多卷积的 5 个主要步骤:

  1. 特征提取:将之前 SRCNN 中的双三次插值替换为 5×5 conv。
  2. 收缩 : 1×1 conv,将特征图的数量从 d 减少到 s,其中 s<d
  3. 非线性映射:用多个 3×3 层代替单个宽层
  4. 扩展 : 1×1 conv,将特征地图的数量从 s 增加到 d
  5. 反卷积 : 9×9 滤波器用于重建 HR 图像。

上面的整体结构称为 FSRCNN(d,s,m)。计算复杂度是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中它与 LR 图像的大小 SLR 成线性比例,SLR 远低于 SRCNN。

PReLU 用作激活功能。PReLU 是有参数泄漏 ReLU 的,号称比 ReLU 好。(如果感兴趣,也请阅读我的 PReLU 评论。)

成本函数就是标准均方差(MSE):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.1×1 卷积在伸缩中的应用

假设我们需要执行 5×5 卷积而不使用 1×1 卷积,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Without the Use of 1×1 Convolution

运算次数=(14×14×48)×(5×5×480)= 112.9 米

使用 1×1 卷积:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

With the Use of 1×1 Convolution

1×1 的运算次数=(14×14×16)×(1×1×480)= 1.5M
5×5 的运算次数=(14×14×48)×(5×5×16)= 3.8M

总运算次数= 1.5M + 3.8M = 5.3M
比 112.9M 小很多!!!!!!!!!!!!!!!

网络中的网络(NIN)建议 1×1 conv 引入更多非线性并提高性能 而 GoogLeNet 建议 1×1 conv 有助于在保持性能的同时减小模型尺寸。如果有兴趣,请阅读我的 GoogLeNet 评论。)

因此,在两个卷积之间使用 1×1 来减少连接(参数)的数量。通过减少参数,我们只需要更少的乘法和加法运算,最终加快网络速度。这就是为什么 FSRCNN 比 SRCNN 快。

4。非线性映射中多重 3×3 卷积的解释

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2 layers of 3×3 filters already covered the 5×5 area

通过使用 2 层 3×3 的滤波器,实际上已经覆盖了 5×5 的区域,并且参数数量更少,如上图所示。

通过使用 1 层 5×5 滤波器,参数数量= 5 ×5=25 通过使用 2 层 3×3 滤波器,参数数量= 3×3+3×3=18
参数数量减少 28%

需要学习的参数越少**,越有利于更快的收敛减少过拟合问题。**

这个问题已经在 VGGNet 中解决了。(如果有兴趣,请阅读我的 VGGNet 评论。)

5。消融研究

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Ablation Study of Each Step

  • Sr CNN-Ex:Sr CNN 的更好版本,参数57184
  • 过渡状态 1 :使用 Deconv,参数 **58976,**获得更高的 PSNR。
  • 过渡状态 2 :中间使用更多的 convs,参数 **17088,**获得更高的 PSNR。
  • FSRCNN (56,12,4) :更小的滤波器尺寸和更少的滤波器数目,用 **12464 个参数,**获得更高的 PSNR。这种改进是由于需要训练的参数更少,更容易收敛。

这表明每个组成部分都有贡献。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Study of m, s, d

m 越高(m=4),PSNR 越高。

当 m=4,d=56,s=12 时,它在 HR 图像质量(33.16dB)和模型复杂度(12464 个参数)之间具有较好的折衷。

最后我们得到了 FSRCNN: FSRCNN (56,12,4)。
还有一个更小的版本, FSRCNN-s: FSRCNN (32,5,1)

6.结果

  • 使用 91-影像数据集在放大因子 3 下从头训练网络,然后仅通过在放大因子 2 和 4 下添加 General-100 数据集来微调反卷积图层。
  • 缩放数据:0.9,0.8,0.7,0.6,旋转 90,180,270 度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

All trained on 91-image dataset.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FSRCNN and FSRCNN-s are trained on 91-image and general-100 dataset.

从上面的结果来看,FSRCNN 和 FSRCNN-s 对于放大因子 2 和 3 工作良好。但是对于放大因子 4,FSRCNN 和 FSRCNN-s 比 SCN 稍差。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Lenna image with upscaling factor 3

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Butterfly image with upscaling factor 3

从上面的图中,我们可以看到 FSRCNN 有更清晰的图像。

在本文中,使用这样的浅层网络,我们可以了解每个组件或技术的效果,例如 1×1 卷积和多个 3×3 卷积。

参考

  1. 【2016 ECCV】【fsr CNN】
    加速超分辨率卷积神经网络

我的评论

[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值