北京pk10计划软件入门 从VGG到NASNet一文概览图像分类网络

  了解图像分类的不同网络架构是一项非常艰巨的任务。本文将讨论目前可在 keras 上使用的主要架构。作者将按照这些架构出现的时间顺序对其逐一讲解,并尝试以从业者的角度讨论其优缺点。

  虽然计算机视觉研究者们采取的方法各不相同,但是大体而言,他们的实验设置有着如下的趋势。本文将讨论如何进行图像预处理,数据增强用于哪类数据,优化机制以及输出层的实现方法。

  通常而言,我们会计算训练集图像的平均像素值,将其从图像中减去。请注意,在 keras 环境下使用这些模型时考虑预处理方法很重要。计算机视觉模型不同,Keras 的「预处理」也不同。

  图像分类的数据集非常大。尽管如此,依然需要数据增强来提高模型泛化能力。数据增强一般包括重新缩放图像的随机裁剪、随机水平翻转、随机 RGB 颜色与亮度变换等技术。此外,也存在不同的缩放、裁剪等技术(即单尺度训练 vs 多尺度训练)。在测试阶段进行多裁剪评估也是经常使用的途径,不过该方案的计算成本更昂贵且性能改进有限。请注意,随机缩放和裁剪的目标是在不同尺寸和位置上学习对象的重要特征。Keras 并未实现所有数据增强技术的开箱即用,但可以通过 ImageDataGenerator 模块的预处理技术轻松实现。Andrew Howard 提出的数据增强技术更深入地解释了这些关键性的方法,具体参见:

  在 keras 中可通过多 GPU 数据并行化训练模型(一般批大小为 256)。动量 SGD 或 RMSProp 是常用的优化技术。学习率的方案相对简单,要么在验证集的损失或准确率开始稳定时调低学习率,要么在固定间隔上调低学习率。通过 keras 中的「ReduceLROnPlateau」回调函数可以轻松模拟这种行为。

  图像分类网络中最后一层传统上来说是全连接层。这些层的参数量巨大,因为你需要 N×M 个参数才能从 N 个隐藏节点过渡到 M 个节点。现在,这些全连接层已经被平均池化或最大池化层替代,它们要求的参数量和计算时间比较小。在对 keras 中预先训练好的网络进行微调时,这一点非常重要,这能限制所需要添加参数的数量。

  VGG 的优点在于,堆叠多个小的卷积核而不使用池化操作可以增加网络的表征深度,同时限制参数的数量。例如,通过堆叠 3 个 3×3 卷积层而不是使用单个的 7×7 层,可以克服一些限制。首先,这样做组合了三个非线性函数,而不只是一个,使得决策函数更有判别力和表征能力。第二,参数量减少了 81%,而感受野保持不变。另外,小卷积核的使用也扮演了正则化器的角色,并提高了不同卷积核的有效性。

  VGG 的缺点在于,其评估的开销比浅层网络更加昂贵,内存和参数(140M)也更多。这些参数的大部分都可以归因于第一个全连接层。结果表明,这些层可以在不降低性能的情况下移除,同时显著减少了必要参数的数量。pk10三码必中冠军计划,16 层和 19 层的参数预训练 VGG 在 keras 上是可以使用的。

  ResNet 架构是由何凯明等人提出的,他们试图通过这个架构训练更深的网络。作者指出,增加网络深度会导致更高的训练误差,这表明梯度问题(梯度消失/爆炸)可能会导致训练收敛性等潜在问题。

  尽管 20 层网络的潜在函数空间是封装在 56 层网络的空间内且运用了传统的梯度下降,但无法实现同样的效果(选自 ResNet 论文)

  ResNet 的主要贡献是增加了神经网络架构的跳过连接(skip connection),使用批归一化并移除了作为最后一层的全连接层。

  通过跳过连接,卷积层的输入 x 被添加到输出当中。因此,网络只学习「残留」特征,并容易保存已学习的特征。

  跳过连接基于这样一种想法:只要神经网络模型能够「适当地」将信息从前一层传递到下一层,它应该能变得「无限」深。如果在更深层没有附加信息进行聚合,那么带有跳过连接的卷积层可以视为一个恒等映射函数。

  通过向网络中添加跳过连接,卷积层的默认函数变成了恒等函数。卷积核学到的任何新信息都可以在基本表征中添加或减去,因此这更容易优化残差映射。跳过连接不会增加参数的数量,但可以获得更稳定的训练和显著的性能提升,这是因为可以达到更深的网络(例如深度为 34、50、101 和 152 的网络)。请注意,1×1 的卷积用于减少输出通道的个数。

  除跳过连接之外,在每次卷积完成后、激活进行前都采取批归一化。最后,网络删除了全连接层,并使用平均池化层减少参数的数量。由于网络加深,博狗pk10官网卷积层的抽象能力更强,从而减少了对全连接层的需求。

  GoogLeNet 与 ResNet 的论文几乎同时发表,但它们引入了不同的改进方案。前面提到的两篇论文着重于提高分类网络的表征深度。

  然而,GoogLeNet 仍试图扩大网络(多达 22 层),赛车pk10开奖直播但也希望减少参数量和计算量。最初的 Inception 架构由 Google 发布,重点将 CNN 应用于大数据场景以及移动端。GoogLeNet 是包含 Inception 模块的全卷积结构。这些模块的目的是:通过构建由多个子模块(比如嵌套网络 – Inception)组成的复杂卷积核来提高卷积核的学习能力和抽象能力。

  除了加入 Inception 模块,作者还使用了辅助分类器来提高稳定性和收敛速度。辅助分类器的想法是使用几个不同层的图像表征来执行分类任务(黄色框)。因此,模型中的不同层都可以计算梯度,然后使用这些梯度来优化训练。

  GoogLeNet 架构图示。黄色框表示辅助分类器(选自GoogLeNet论文)。赛车pk10开奖直播

  Inception v3 架构中结合了几项创新点。在 Inception v3 中,主要的创新在于借鉴了 GoogLeNet 和 VGGNet 的部分原创思想,即使用 Inception 模块并通过一系列较小的卷积核更高效地表示较大的卷积核。除了小卷积之外,作者还尝试了非对称卷积(例如用 n×1 和 1×n 代替 n×n,而非多个 2×2 和 3×3 滤波器)。

  一个 3×3 卷积核后跟一个 1×1 卷积核的例子,它有效地取代了一个 5×5 卷积核(图片来自 Inception v3 论文)。

  作者通过执行批归一化和标签平滑化来改进正则化。标签平滑就是为每个类都分配一些权重,而不是将全权重分配给 ground truth 标签。博狗pk10官网由于网络对训练标签的过拟合程度较低,因此它应该能够更好地泛化,这与使用 L2 正则化效果相仿。

  为了确保该模型在高分辨率图像和低分辨率图像上均表现良好,作者通过 Inception 模块分析了不同尺寸下的图像表征。因此,当 Inception 网络用于目标检测框架时,它们在对小分辨率和低分辨率对象进行分类时表现良好。

  我要讨论的最后一个图像分类架构是 NASNet(),它是使用神经结构搜索(NAS)框架构建的。NASNet 的目标是运用数据驱动和智能方法,而非直觉和实验来构建网络架构。尽管我不会详细讨论这个框架,但是可以解释一下它的总体思路。

  Inception 论文表明「神经网络单元」中复杂的卷积核组合单元可以显著提升结果。NAS 框架将这种单元的构建过程定义为优化过程,博狗pk10官网然后通过叠加最佳单元来构建大型网络。

斯坦福创建新型AI摄像头 更高效进行图像赛车pk10开奖直播分类

  盖世汽车讯 当今自动驾驶汽车和航空无人机的图像识别技术都依赖于人工智能:一般是计算机教会自己识别狗、穿过街道的行人或停下来的汽车等物体。北京pk10计划软件,问题是,目前运行人工智能算法的计算机对于手持医疗设备等未来应用体积太大,而且速度太慢。

  据外媒报道,现在斯坦福大学(Stanford University)的研究人员已经设计出一款新型人工智能摄像系统,可以更快、更高效地对图像进行分类,并且有朝一日该摄像系统有可能变得非常小,可以嵌入到其他设备中。

  负责此研究的斯坦福大学电气工程助理教授Gordon Wetzstein表示:“刚刚开过你身边的自动驾驶车辆的行李箱中配备了一台比较大、运行比较慢而且能量消耗大的计算机。” 他表示,未来的应用需要运行速度更快、尺寸更小的计算机来处理各种图像。Wetzstein和该研究论文的第一作者兼斯坦福大学的研究生Julie Chang,通过将两种类型的计算机合二为一,进一步发展了此技术,创造了专门用于图像分析的混合光电计算机。

  原型摄像头的第一层是光学计算机,不需要高强度的数字计算;第二层是传统的数字电子计算机。光学计算机层通过物理方法处理图像数据,以多种方法过滤图像数据,否则电子计算机不得不以数学方法进行图像数据过滤。由于图像数据过滤是在光通过定制光学器件时自然而然发生,因此,该层以零输入功率工作,为混合系统节省了大量的时间和能量。

  Chang表示:“我们已经将人工智能数学计算外包给了光学系统。pk10三码必中冠军计划”结果是,计算量减少,内存调用次数减少,完成整个过程的时间也少得多。就速度和准确度来说,原型摄像头可与现有的电子计算处理器相媲美,此类处理器执行相同的计算,可节省大量的计算成本。

  虽然现在的原型摄像头还在实验室阶段,而且很难被认为是小型摄像头,研究人员表示,该系统有朝一日可以小型化,以适应手持摄像头或是航空无人机。在模拟环境和真实世界的实验中,该团队使用该系统在自然图像设置中成功识别了飞机、汽车、狗和猫等。

  Wetzstein表示:“我们系统的未来版将在自动驾驶汽车等快速决策应用中发挥作用。”

  除了缩小原型,斯坦福计算成像实验室的Wetzstein、Chang以及其他同事目前正在研究如何让光学元件进行更多的预处理。最终,更小、更快的技术可以取代现有行李箱大小的、帮助汽车、无人机和其他技术学会识别周围世界的计算机。

深度学习论文集锦(中英文对照):图像分类、物体识别等

  Github用户SnailTyan在他构建的“深度学习论文翻译”库中,提供了图像识别、赛车pk10开奖直播,对象检测和OCR等经典DL论文的全文翻译,除了英文原版、中文译文,还有中英文对照版。最新的MobileNetV2即将发布。

  论文译介是新智元最受欢迎的内容之一,这非常好理解,如今几乎每天都会新增几十乃至几百篇新的论文,北京pk10计划软件其中不乏佳作,而新智元的任务则是将优秀论文和研究成果介绍给读者。

  然而这只是第一步,感兴趣的读者自会搜索英文原论文阅读。虽然中文是目前世界上使用人口最多的语言,但英语才是学术界的通用语。不过,对于初学者而言,阅读英文论文还是比较困难。

  因此,我们要感谢Github用户SnailTyan,他的Github库“Deep Learning Papers Translation”,提供了经典深度学习论文的英文版、中文版,以及中英文对照版。尤其是后者,对于想快速准确学习的读者而言非常适合。

  微信无法外链,因此仅将该库现有内容列出,导读和文末都给出了Github库的链接,可以复制后访问。

从0上手Kaggle图像分类挑战:冠军解决方案详解

  这篇文章介绍了作者在Kaggle植物幼苗分类比赛使用的方法,该方法连续几个月排名第一,最终排名第五。该方法非常通用,也可以用于其他图像识别任务。

  奥尔胡斯大学信号处理小组与南丹麦大学合作发布了一个数据集,其中包含大约960种不同生长阶段的植物的图像,这些植物属于12个物种。

  机器学习中的第一个也是最重要的任务是在继续使用任何算法之前对数据集进行分析。这对于理解数据集的复杂性非常重要,最终将有助于设计算法。

  如前所述,共有12个类,4750张图像。但是,从上面的图中可以看出,数据的分布不均匀,类的分布从最大有654张图像到最小只有221张图像。这表明数据不均衡,数据需要均衡才能获得最佳结果。我们将在第3个步骤讲这一点。

  为了更好地理解数据,对图像进行可视化非常重要。因此,每个类中会拿出一些示例图像,以查看图像之间的差异。

  从上面的图中得不到什么理解,因为所有的图像看起来都差不多。因此,我决定使用被称为t分布随机邻域嵌入(t-SNE)的可视化技术来查看图像的分布。

  t-SNE是降维的一种技术,特别适用于高维数据集的可视化。该技术可以通过Barnes-Hut近似实现,使其可以应用于大型线]。

  现在,仔细观察后,我们几乎看不出不同类之间的差异。数据的差异是只对人类来说很难区分,还是不管对人类还是对机器学习模型来说都很难区分,了解这一点很重要。因此,我们将做一个基本的benchmark。

  在开始使用模型基准之前,我们需要将数据划分为训练数据集和验证数据集。在模型在原始测试集上进行测试之前,验证集扮演测试数据集的角色。因此,基本上一个模型在训练数据集上进行训练,在验证集上进行测试,博狗pk10官网然后在验证集上对模型进行改进。当我们对验证集的结果满意,我们就可以将模型应用到真实测试数据集上。这样,我们可以在验证集上看到模型是过拟合还是欠拟合,从而帮助我们更好地拟合模型。

  对有4750张图像的这个数据集,我们将80%的图像作为训练数据集,20%作为验证集。

  有了训练集和验证集后,我们开始对数据集进行基准测试。这是一个分类问题,在给出一个测试数据时,我们需要将它分到12个类中的一个。我们将使用卷积神经网络(CNN)来完成这个任务。

  创建CNN模型有几种方法,但对于第一个基准,我们将使用Keras深度学习库。我们将在Keras中使用现有的预训练好的模型,我们将对其进行微调以完成我们的任务。

  从头开始训练CNN是低效的。因此,我们使用一个在有1000个类的ImageNet上预训练的CNN模型的权重,通过冻结某些层,解冻其中一些层,并在其上进行训练,对其进行微调。这是因为顶层学习简单的基本特征,我们不需要训练那些层,它们可以直接应用到我们的任务中。需要注意的是,我们需要检查我们的数据集是否与ImageNet相似,以及我们的数据集有多大。这两个特性将决定我们如何进行微调。北京pk10计划软件

  在这个例子中,数据集很小,但有点类似于ImageNet。因此,我们可以首先直接使用ImageNet的权重,只需添加一个包括12个类的最终输出层,以查看第一个基准。然后我们将解冻一些底部的层,并且只训练这些层。

  我们将使用Keras作为初始基准,因为Keras提供了许多预训练模型。我们将使用ResNet50和InceptionResNetV2来完成我们的任务。使用一个简单的模型和一个非常高的终端模型对数据集进行基准测试是很重要的,可以了解我们是否在给定模型上过拟合/欠拟合数据集。

  此外,我们可以在ImageNet数据集上检查这些模型的性能,并检查每个模型的参数数量,以选择我们的基准模型。

  对于第一个基准测试,我删除了最后一个输出层,只添加了一个带有12个类的最终输出层。此外,还打印了模型摘要和参数的数量,下面是最后几层的截图。

  模型运行了10个epochs,博狗pk10官网6个epochs后结果达到饱和。训练精度达到88%,验证精度达到87%。

  为了进一步提高性能,我们从底部解冻了一些层,并以指数衰减的学习率训练了更多的层。这个过程将精度提高了2%。

  准备好基本的基准后,就可以改进它了。我们可以从增加更多数据开始,增加数据集中图像的数量。

  但首先这个数据集不均衡,需要进行均衡,以便每批都使用偶数个图像作为模型的训练数据。

  现实生活中的数据集从来都不是均衡的,模型在少数类上的性能也不是很好。因此,将少数类的样本错误地归类到正常类样本的成本通常要比正常类错误的成本高得多。

  ADASYN为样本较少的类生成合成数据,其生成的数据与更容易学习的样本相比,更难学习。

  ADASYN的基本思想是根据学习难度的不同,对不同的少数类的样本使用加权分布。其中,更难学习的少数类的样本比那些更容易学习的少数类的样本要产生更多的合成数据。因此,ADASYN方法通过以下两种方式改善了数据分布的学习:(1)减少由于类别不平衡带来的偏差;(2)自适应地将分类决策边界转移到困难的例子[5]。

  SMOTE涉及对少数类进行过采样(over sampling),并对大多数类进行欠采样(under sampling)以获得最佳结果。

  对少数(异常)类进行过采样和对大多数(正常)类进行欠采样的方法的组合,相比仅仅对大多数类进行欠采样可以得到更好的分类器性能(在ROC空间中)。

  对于这个用例,SMOTE的结果被证明更好,因此SMOTE比ADASYN更受欢迎。一旦数据集达到平衡,我们就可以继续进行数据增强(data augmentation)。

  已经有一些很好的博客解释了这些技术[8][9],所以本文不再详细解释。在这个任务中,除GAN外,以上所有数据增强技术都使用到。

  现在,为了进一步提高成绩,我们使用了学习率,包括周期性学习率(cyclical learning rate)和热重启学习率(learning rate with warm restarts)。但在此之前,我们需要找到模型的最佳学习率。这是通过绘制学习率和损失函数之间的图,来检查损失从哪里开始减少。

  在我们的例子中,1e-1看起来是一个完美的学习率。但是,随着我们越来越接近全局最小值,我们希望采取更短的步骤。一种方法是学习率退火(learning rate annealing),但是我采用了热重启学习率,启发自SGDR: Stochastic Gradient Descent with Warm Restarts[10]这篇论文。同时将优化器从Adam改为SGD,实现SGDR。

  现在,可以使用上述技术来训练多个架构,然后将结果合并在一起。这称为模型融合(Model Ensemble),是流行的技术之一,但是计算量非常大。

  因此,我决定使用一种称为snapshot ensembling[12]的技术,通过训练单个神经网络,使其沿着优化路径收敛到多个局部最小值,并保存模型参数,从而实现集成的目的。

  一旦确定了学习率的方法,赛车pk10开奖直播。博狗pk10官网就可以考虑图像的大小。我用64 * 64大小的图像(微调了ImageNet)训练模型,解冻了一些层,应用 cyclic learning rate和snapshot ensembling,采用模型的权重,改变图片尺寸为299 * 299,再以64*64图像的权重进行微调,执行snapshot ensembling和热重启学习率。

  最后一步是将结果可视化,以检查哪些类具有最佳性能,哪些表现最差,并且可以采取必要的步骤来改进结果。

  理解结果的一个很好的方法是构造一个混淆矩阵(confusion matrix)。

  在机器学习领域,特别是统计分类问题中,混淆矩阵(也称为误差矩阵)是一种特定的表格布局,能够可视化算法的性能,通常是监督学习(在无监督学习中通常称为匹配矩阵)。矩阵的每一行表示预测类中的实例,而每列表示实际类中的实例(反之亦然)。这个名字源于这样一个事实:它可以很容易地看出系统是否混淆了两个类别。

  我们可以从混乱矩阵中看出模型预测标签与真实标签不同的所有类,我们可以采取措施来改进它。我们可以做更多的数据增强来尝试让模型学习这个类。

  最后,将验证集合并到训练数据中,利用所获得的超参数对模型进行最后一次训练,并在最终提交之前对测试数据集进行评估。

码隆科技与Google Research合办大赛挑战商品图像分类极限!

  原标题:码隆科技与Google Research合办大赛,挑战商品图像分类极限! 随着消费升级,商品

  原标题:码隆科技与Google Research合办大赛,挑战商品图像分类极限!

  随着消费升级,商品识别场景的持续增加,对图像中的商品实现细品类精准分类也变得越发重要,此类技术可以应用于线上购物、移动电商、实体零售、商品运维等多个场景,具有高度实用价值。如何利用计算机视觉技术识别海量商品,并准确区分外形类似的商品,是计算机视觉领域一大挑战。由于细粒度属性的产品看起来非常相似,博狗pk10官网且商品在不同光线、角度和背景下拍摄,其识别精度也会受到影响,这就使得细粒度图像分类技术变得极具挑战性。

  与此同时,不同商品的相似特征,也为机器识别增加了一定的难度:比如家具中的球椅和蛋椅,从某些特定角度来看十分相似;再比如服饰的宝蓝色和松绿色,在不同的光线条件下也存在一定的相似性。

  如何让机器识别达到趋近乃至超过人眼判定的精准度?这是许多计算机视觉科学家们一直致力解决的问题。由此,码隆科技联合 Google Research 和美国知名电商 Wish,举办了针对家具家居领域和时尚领域的细粒度图像分类竞赛 iMaterialist Challenge (Fashion & Furniture),力求推动自动图像分类顶尖技术的进展,该比赛已经在 Kaggle 平台上拉开序幕。同时,作为 CVPR 2018 重要的研讨会之一,针对该比赛召开的 FGVC5 workshop(细粒度图像识别研讨会)将于 6 月 22 日与大会同期举行,期待科学家和研究者们共同参与。

  与 ImageNet 的粗粒度分类竞赛相比,iMaterialist Challenge 强调的是在“人造物体”领域的图像细粒度分类挑战。一方面,这部分图像分类的技术难度更大,更具挑战性,即便对于经过专业训练的人眼来说,很多细粒度分类数据集也难以快速且准确地辨认;另一方面,相关技术具有更大的实际应用意义,可以直接转化为工业界的应用,提高效率、减少成本。码隆科技作为中国第一家提出“商品识别”概念的人工智能创新公司,凭借其在家具家居和时尚领域的技术优势,成为 iMaterialist Challenge 的核心合作伙伴。

  值得一提的是,iMaterialist Challenge 将会亮相今年 CVPR 会议主会场,与到场的业界精英展示竞赛重要成果,分享技术突破性进展。而这也是 CVPR 历史上首次从会议数十个 workshop 中,挑选出 3 至 5 个高品质、高价值的竞赛在主会场进行展示。与此同时,FGVC5 组委会也会邀请业界权威科学家、研究者到现场进行最新技术分享。码隆科技与美国知名电商平台 Wish 为本次竞赛提供所需的服装和家具图像数据,并会向学术界开放 120 万带标注的商品图像数据集。作为此次大赛的核心合作伙伴,码隆科技将会为大赛全程提供专业技术支持,负责竞赛数据处理并提供竞赛基础模型训练。

  iMaterialist Challenge 面向全球的企业、研究机构和院校进行参赛队伍的招募。本次竞赛已于 3 月 8 日开赛,将于 5 月 24 日截止提交,并在 5 月 30 日关闭竞赛。竞赛成果将会在 6 月 22 日于盐湖城举行的 CVPR 2018 会议上进行正式公布。开赛至今仅一个月,已有来自海内外近 200 支队伍报名参赛,得到计算机视觉领域众多技术团队的高度关注。

  在此次竞赛中,码隆科技与 Wish 联合为优胜者提供奖金。家居和时尚两个竞赛单元的优胜者将获得共计5000美金的奖励。更值得一提的是,优胜者还将受邀在 FGVC5 的研讨会上进行主题发言,分享自己的算法思路。

  iMaterialist Challenge 已正式开启,在这一场图像识别技术领域的盛大赛事中,期盼智者前来分享和挑战,期待您的参与!

图像分类任务中Tensorflow 与 Keras 到底哪pk10三码必中冠军计划个更厉害?

  是的,标题中的问题在数据科学家之间的谈话中是很常见。有人说TensorFlow更好,有人说Keras更好。让我们看看这个问题在图像分类的实际应用中的答案。

  在此之前,先介绍Keras和Tensorflow这两个术语,帮助你在10分钟内构建强大的图像分类器。

  Tensorflow是开发深度学习模型最常用的库。它是有史以来最好的库,在日常实验中被许多极客选择。如果我说Google已经将Tensor Processing Units(TPU)用于处理张量,你能想象吗?是的,他们已经这样做了。他们提出了一个名为TPU的独立实例,它具有最强大的功率驱动计算能力来处理tensorflow的深度学习模型。

  我现在将帮助你使用tensorflow创建一个功能强大的图像分类器。pk10三码必中冠军计划,等等!什么是分类器?这只是一个简单的问题,你向你的tensorflow代码询问,给定的图像是玫瑰还是郁金香。所以,首先的首先,让我们在机器上安装tensorflow。官方文档有两个版本,即CPU和GPU版本。对于CPU版本:

  请注意,我是在GPU上而非CPU上进行实验后才写的这篇博客。这里给出了详细的GPU安装。

  现在,让我们采用Google的Tensorflow进行实验来训练模型。谷歌的这个仓库有许多令人惊叹的处理图像的简单实验的脚本。它非常简洁,足以满足我们的目的。还记得前面我用过“强大”这个词吗?是的,当我们使用称为迁移学习的方法时,这个词就会生效。迁移学习是一种有效的方式,它使用预训练模型,这些模型已经训练了几天或几周,然后改变最后一层以适应我们自己的类别。

  Inception V3是一个非常好的模型,在[2015 ImageNet Challenge](图像分类竞赛中排名第二。当数据集的每个类别具有较少图像数量时,它被提及为迁移学习的最佳网络。

  它看起来应该像上面图那样(忽略image.py)。通过下面代码获得flower_photos文件夹:

  你可以使用任何你喜欢的图像。越多越好(目标是几千)。向上面文件夹格式那样以类别将它们分开,并确保它们在一个名为tf_files的文件夹中。

  你可以下载已经存在的有多种任务使用的数据集,如癌症检测,权力的游戏中的人物分类。这里有各种图像分类数据集。

  或者,如果你有自己独特的用例,则可以为其创建自己的数据集。你可以从网上下载图像并立即制作大型数据集,赛车pk10开奖直播使用像Dataturks这样的注释工具,你可以手动上传图像并标记图像。赛车pk10开奖直播更好的是,Dataturks的输出可以很容易地用于构建tf_files。

  我发现了一个很棒的插件,可以在Google Chrome上批量下载图像。这个和Dataturks将使构建训练数据变得轻而易举。链接在这里。

  您可以尝试使用dataturks的image_classification工具执行此操作。这里该工具提供的最佳功能是,如果我们有一个非结构化数据集,其中所有图像都在一个文件夹中。通过手动标记图像的类别,你可以下载一个json文件,该文件包含嵌入其中的类的图像的所有详细信息。然后使用下面给出的keras和tensorflow脚本:

  现在是时候训练模型了。在tensorflow-for-poets-2文件夹中,有一个名为scripts的文件夹,它包含重新训练模型所需的一切。retrain.py有一种特殊的裁剪和缩放图像的方式,非常酷。

  训练时80%数据集用作训练,20%用作测试,我们可以看到,它给出了91%的test_accuracy。现在是时候测试了!我们在`tf_files/`中有一个.pb文件,可用于测试。`label_image.py`中添加了以下更改:

  上面的代码将帮助我们绘制正在测试的图像的准确性并保存它。赛车pk10开奖直播对于rodom图像的置信度百分比如下所示

  Keras是一个基于TensorFlow构建的高级API(也可以在Theano之上使用)。与Tensorflow相比,它更加用户友好且易于使用。如果我们是所有这些深度学习的新手,并想从头开始编写一个新模型,那么我会建议使用Keras,因为其易读性和易写性。可以通过下面指令安装:

  甚至这个东西都包含了tensorflow,所以CPU v/s GPU兼容性变化也将适用于此。

  因为,我们必须执行使用inception模型的迁移学习对花进行分类的相同任务,我已经看到Keras以标准格式加载模型,如API编写的那样。

  Keras有一种加载数据集的标准格式,即我们不是直接在数据集文件夹中提供文件夹,而是手动划分训练和测试数据,并按以下方式排列。我使用了我在tensorflow部分下载的相同数据集,并按照以下说明进行了一些更改。

  至于,我们现在已完成数据集的设置,是时候进行训练了。我已经写了一小段代码来进行下面的训练:

  斯坦福CS231n李飞飞计算机视觉经典课程(中英双语字幕+作业讲解+实战分享)

Kaggle 冰山图像分类大赛近日落幕看冠军团队方案有何亮点

  雷锋网 AI 研习社按,在日前结束的 Kaggle「Statoil/C-CORE Iceberg Classifier Challenge」(冰山图像分类大赛)中,由 David Austin 和 Weimin Wang 组成的队伍一举拔得头筹,获得 25000 美元奖金。据介绍,他们的解决方案能有效应用于实际生活,保证舰船在危险的水域更加安全地航行,降低船和货物的损伤,避免人员伤亡。

  据 Kaggle 官网介绍,这次冰川图像分类大赛是 Kaggle 上最火的图像分类竞赛——拥有史上最多参赛队伍。而在所有数据竞赛中,本次比赛热度位列第 7。

  不久前,外媒对 David Austin 进行了一次深入采访,在采访中,他们讨论了以下问题:

  图 1:Kaggle 冰山分类挑战赛的任务目标是建立一个图像分类器,将输入卫星图像划分为冰山或者船

  问:你好,David,十分感谢你能接受我的采访,也恭喜你们在冰山图像分类挑战赛中取得第一名的好成绩。你是如何对计算机视觉和深度学习产生兴趣的呢?

  答:在过去两年里,我对深度学习的兴趣与日俱增。因为我看到人们利用它从数据中获得了难以置信的结果。我对深度学习领域的前沿研究和实际应用都很感兴趣,我认为 Kaggle 是一个非常棒的平台。通过比赛,我能保持对前沿技术的掌控能力,可以在合适的场景下尝试新的技术。

  问:你在参加这次比赛之前,在计算机视觉和机器学习领域的学术背景如何?你之前参加过其他 Kaggle 竞赛吗?

  答:大概十年前,我首次接触机器学习,那时我开始学习梯度提升树和随机森林相关知识并将其应用到分类问题中。近几年,我开始更广泛地关注深度学习和计算机视觉。不到一年前,我开始参加 Kaggle 竞赛,这是提升技能的一种方式,本次比赛是我第三次参加 Kaggle 竞赛。

  答:冰山分类挑战赛是一个图像二分类问题,这个比赛要求参赛者在卫星图像中将船和冰山区分开来。这项工作在能源勘探领域尤为重要,它让我们能够识别并且避开类似浮冰这样的威胁。

  首先,数据集规模相当小,训练集中只有 1604 张图片。这样一来,从硬件的角度来说,参与竞赛的门槛很低。然而,另一方面,使用有限的数据完成图像分类任务又是十分困难的。

  其次,如果用肉眼去观察这些图片,它们看上去就像电视屏幕上出现的「雪花」图——一堆乱七八糟的噪点。人类用肉眼完全不可能看出来哪些图像是船,哪些图像是冰山。

  要让人类仅凭肉眼准确地区分图片类别十分困难。我认为这是一个很好的契机——测试深度学习和计算机视觉能够做到人类做不到的事情。

  问:接下来,让我们讨论稍微技术性一些的问题。能介绍一下你们优胜策略中所使用的数据处理方法、算法和相关技术吗?

  答:好的,总体上我们的数据处理方法和大多数传统的计算机视觉问题中所使用的方法很相似。我们都会事先花费一些时间去理解数据。

  使用无监督学习方法是一种我最喜欢的技术,通过学习这些模式,我们可以决定接下来将要使用什么样的深度学习方法。

  在这个任务中,标准的 KNN(K 最近邻算法)就能够识别出帮助定义模型结构的关键信号。我们使用了一个十分庞大的卷积神经网络结构,包含超过 100 个改造过的卷积神经网络和类似于 VGG 的结构,然后我们使用 greedy blending 策略和两层结合了其他的图像特征的集成学习算法将模型结果融合起来。

  这听起来是个很复杂的方法。但是请记住!这里的目标函数是要最小化对数损失误差。在这个任务中,我们仅仅像这样加入了一些模型,因为它们能够在不发生过拟合的情况下减小对数损失。所以,这又是一个很好的例子,说明了将许多弱机器学习模型集成之后的威力。

  我们最后再次训练了许多和之前一样的卷积神经网络结构,但是这里我们仅仅是使用了一开始通过无监督学习挑选出的原始数据的子集作为输入,这同样也提高了我们模型的性能。

  说实话,这个数据集对于图像分类问题来说是相当小的,所以我们担心过拟合会是一个很大的问题。为此,得确保所有的模型都要经过4折交叉验证,尽管这会增加计算开销,但是却能降低过拟合的风险。尤其是在处理像对数损失这样非常严格的损失函数时,需要时刻注意过拟合问题。

  答:尽管我们选用的卷积神经网络规模巨大,并且在所有的模型训练过程中都使用了4折交叉验证,训练过程仅仅花费了一到两天。没有交叉验证的单个模型可以在几分钟内完成训练。

  问:如果要你选出一项本次比赛中你所使用的最重要的技术或者小窍门,你会选什么呢?

  答:毫无疑问,最重要的步骤当属预先进行的探索性分析,从而对数据有更好的了解。

  探索性分析的结果表明,有一个图像数据之外的特征中非常重要,它能够帮助消除数据中大量的噪声。

  在我看来,我们在计算机视觉或者深度学习问题中最容易忽视的步骤之一,就是需要事先理解数据,并且利用这些知识帮助我们做出最佳设计选择。

  现成的算法如今更加易于获得和引用,我们往往会不假思索、简单粗暴地将这些算法应用于待解决的问题上。然而我们却没有真正想清楚这些算法是不是这一任务的最佳选择,北京pk10计划软件!或者没有想清楚在训练之前或之后是否需要对数据进行一些适当的处理工作。

  答:就我个人而言,我认为 TensorFlow 和 Keras 是最好用的,因此在处理深度学习问题时,我会倾向于选择它们。

  至于 stacking 和 boosting 两种集成学习方法,我使用 XGBoost 去实现,这也是因为我对它很熟悉以及它已经被证实有好的运算结果。

  比赛中,我使用了我的 dl4cv 虚拟环境(这是计算机视觉深度神经网络中用到的 Python 虚拟环境),并且将 XGBoost 加入其中。

  社区中有很多供选手进行讨论的论坛,也有各种各样讨论的方式。如果参赛选手愿意,他们可以将自己的代码分享出来。当你试着学习通用的方法并将代码应用于具体问题上时,这将十分有帮助。

  当我第一次参加 Kaggle 比赛时,我花了几个小时仔细阅读了论坛中的文章以及其它高质量的代码,我发现这是学习的最佳途径之一。

  答:目前我手头上有很多项目要去做,因此我将会忙上一段时间。还有一些 Kaggle 比赛看上去十分有趣,所以之后我很有可能再回来参与到其中。

  答:最好方式的话,在我的 LinkedIn 用户资料中有写到。大家同样可以通过 LinkedIn 联系 Weimin Wang。同时,我会参加 PyImageConf2018,如果大家想要和我当面交流,那时候可以来找我。