你可以使用预训练的模型作为基准来改进现有的模型,或者用它来测试对比你自己的模型。这个的潜力和可能性是巨大的。 在本文中,我们将研究在Keras中具有计算机视觉应用的各种预训练模型。...为什么Keras ?首先,因为我相信这是一个很好的开始学习神经网络的库。其次,我希望在本文中始终使用一个框架。这将帮助你从一个模型转移到下一个模型,而不必担心框架。...MobileNet https://keras.io/applications/#mobilenet 顾名思义,MobileNet是为移动设备设计的架构。它是由谷歌建造的。...谈到深度学习,解决这个问题的关键技术是图像处理。在这个分类问题中,我们需要使用预训练过的Keras VGG16模型来识别给定图像中的番茄是成熟的还是未成熟的。...在交叉验证数据集上,VGG16网络训练的准确率为66.11%。更复杂的模型,如InceptionV3,由于偏差/方差问题,精度较低。 人脸识别和重建 人脸识别在深度学习领域非常流行。
pip install tensorflow数据集准备我们将使用两个数据集:一个是预训练模型使用的数据集(如ImageNet),另一个是目标领域的数据集(如CIFAR-10)。...在本教程中,我们将使用CIFAR-10作为目标领域的数据集。...)y_test = to_categorical(y_test, 10)迁移学习接下来,我们将使用一个预训练的模型(如VGG16),并将其应用于CIFAR-10数据集。...我们将使用一个域分类器来区分源域和目标域的数据,并通过对抗性训练使特征提取器生成的特征在两个域之间不可区分。...我们首先使用预训练的VGG16模型进行迁移学习,然后通过对抗性训练实现领域自适应。这些技术可以帮助我们在不同的任务和数据分布上构建更强大的深度学习模型。
一种方法是提出更好的神经网络设计。例如,MobileNet比VGG16小32倍,快10倍,但结果相同。另一种方法是,通过去除神经元之间不影响结果的连接,压缩现有的神经网络。...如何能做到这点 由于MobileNet比VGG16小32倍,但具有相同的精度,所以它必须比VGG更有效地捕捉知识。 事实上,VGG为了完成工作,用到的连接比它实际需要用到的连接要多很多。...在这个项目中,我使用了带有Keras 2.0.7的预训练版MobileNet,并TensorFlow 1.0.3上运行。...但因为我们的目标是在Metal上使用这个网络,所以删除10个过滤器是没有意义的。所以我们必须删除8或12个。 我首先尝试删除8个最小的过滤器,精度没有损失。 我决定放弃前12层。...经过10次训练后,精度达到了63.6%,在新的训练样本上再训练十次,准确率达到了65.0%(top1)和86.1%(top5)。 这个得分不错,可以继续修剪其它层了。
验证设置的准确性在25个时期后稳定在70%。但是,通过训练所有层,能够获得80%的精度。因此,决定继续训练所有层次。 图:最终层和所有训练层的模型精度比较 使用哪个优化程序?...图:使用(i)亚当(ii)SGD跨时期的精度 使用哪种架构? 使用ImageNet数据集上的训练权重(即预先训练的权重)尝试了多种迁移学习模型。 VGG16 VGG16模型具有16层。...在此前提下,找到相似的图像并在这些图像上平均概率有助于平滑每个类别的预测概率。 为了找到10个最近的邻居,使用了VGG16传输学习模型倒数第二层的输出作为验证集的特征。...训练结束时存储的最终权重将不是最佳值,它们可能不会给出最小的对数损失。可以使用Keras中的CallBacks功能,仅当模型在经过一段时间后有所改善时,才可以减轻模型的权重。...4.永不遗忘最终应用程序:对7个模型进行集成,然后在输出中进行KNN评分,得到了不错的成绩,但是如果必须选择一个模型,可以用最少的数量获得良好但更快的预测资源方面,Mobilenet将是显而易见的选择。
迁移学习涉及到使用一个特定数据集上训练的模型 然后将其应用到另一个数据集上 使用预训练好的模型作为“捷径”,从其没有训练过的数据中学习模式的能力。...深度学习的魅力在于预训练好的模型能够对完全不同的数据集进行分类。这种能力内用了这些深度神经网络结构(在ImageNet数据集上进行过训练)的预训练权重并把其应用在我们自己的数据集上。...在产业中能用到的预训练模型如下: Xception VGG16 VGG19 ResNet50 InceptionV3 InceptionResNetV2 MobileNet //这些预训练模型是keras...Keras Keras 是一种高层API,Keras由Python编写而成并能够在TensorFlow、Theano以及CNTK上运行。...另一方面,当你在GPU上运行程序时,它们则会应用CUDA和cuDNN函数库。 如果你正在建立一个新系统,你可能会想看一下这篇文章。 Keras提供了一种让训练和评估模型变得极其简单的工作流程。
这里选择Keras的原因,一是因为它易上手,对于刚开始使用神经网络的人来说是一个很好的选择;二是希望在本系列文章中统一使用一个框架,也帮大家省去很多麻烦,只需关注模型的具体使用即可。...此存储库包含YOLOv2在Keras上的实现。同时开发人员已经在多种目标图像(如袋鼠检测,自动驾驶汽车,红细胞检测等)上应用了这个框架,而且他们已经发布了用于浣熊检测的预训练模型。...MobileNet (https://keras.io/applications/#mobilenet) 顾名思义,MobileNet是一种专为移动设备设计的架构,它是由谷歌建立的。...从深度学习的角度考虑,这个问题的首选技术是基于深度学习的图像处理。在这个分类问题中,我们可以使用预训练的Keras VGG16模型来识别给定图像中的番茄是成熟的还是未成熟。...由于数据集很小,最简单的模型,即VGG16,是最准确的。使用交叉验证法训练VGG16网络的准确率达到66.11%。由于偏差/方差问题,像InceptionV3这样的更复杂的模型可能并不会太准确。
keras中直接可供使用的网络和预训练权重如下: from .vgg16 import VGG16 from .vgg19 import VGG19 from .resnet50 import ResNet50...import MobileNet from .mobilenet_v2 import MobileNetV2 from .densenet import DenseNet121, DenseNet169...以下代码会报错: from keras.applications.resnet101 import ResNet101 经过查看keras源代码,我发现resnet101网络的定义并不在keras.applications...模块中,而是在keras_applications.resnet_common模块中,于是我使用以下代码导入resnet101: from keras_applications.resnet_common...AttributeError: ‘NoneType’ object has no attribute ‘image_data_format’ 后来经过google查找资料,在这里发现了解决方案,原因是因为没有指定所用的keras
例如:MobileNet 可以在获得相同结果的情况下比 VGG-16 小 32 倍,速度快上 10 倍。 另一个方法是采用现有的神经网络,并用删除与结果无关的神经元的方法来压缩它。...在这个项目中,我使用了 Keras 2.0.7 版中预训练的 MobileNet,并运行在 TensorFlow1.0.3 上。...无论如何,Keras 版的 MobileNet 在验证集上的得分是 68.4%,我们将会使用这个数字作为基准。...在 MobileNet 的 Keras 版中,分类层也正好是一个卷积层,但是我们不能从这一卷积层中移除任何通道。...但是,移除 128 个滤波器导致准确率下降太多,再训练也无法提升到 60% 以上。只剪除 96 个滤波器有更好的结果,但再训练之后得分也只是 61.5%。
然后,使用Keras来写一个Python脚本,可以从磁盘加载这些预训练的网络模型,然后预测测试集。 最后,在几个示例图像上查看这些分类的结果。...Keras上最好的深度学习图像分类器 下面五个卷积神经网络模型已经在Keras库中,开箱即用: VGG16 VGG19 ResNet50 Inception V3 Xception 我们从ImageNet...可以在ImageNet上做到50-200层的深度,而对于CIFAR-10了来说可以做到1000+的深度。...SqueezeNet的“火”模型 SqueezeNet架构通过使用squeeze卷积层和扩展层(1x1和3X3卷积核混合而成)组成的fire moule获得了AlexNet级精度,且模型大小仅4.9MB...总结 简单回顾一下,在今天的博文中,我们介绍了在Keras中五个卷积神经网络模型: VGG16 VGG19 ResNet50 Inception V3 Xception 此后,我演示了如何使用这些神经网络模型来分类图像
也就是说,ResNets可以通过仅训练批标准化层的gamma(γ)和beta(β)参数在CIFAR-10数据集中获得不错的结果。...从数字上讲,我使用ResNet-50、101和152架构获得了45%,52%和50%的Top-1精度,这远非完美,但也并非无效。 在下文中,我概述了批标准化概念以及其常见解释。...更详细地,我测试了以下命题: ResNet模型中,除了批标准化层的参数所有其他权重已经被锁定的情况下,模型仍然可以在CIFAR-10数据集上训练处良好的结果。...我将使用Keras的CIFAR-10和ResNet模块以及CIFAR-10数据集,并使用交叉熵损失和Softmax激活。...为了对模型的性能有一个很好的了解,我们应该始终考虑随机猜测的性能。CIFAR-10数据集有十个类。因此,随机地,我们有10%的可能正确。以上方法比随机猜测要好大约五倍。
我们来实践一下,使用在 ImageNet 上训练的 VGG16 网络的卷积基从 猫狗图像中提取有趣的特征,然后在这些特征上训练一个猫狗分类器。VGG16 等模型内置于 Keras 中。...下面是keras.applications 中的一部分图像分类模型(都是在 ImageNet 数据集上预训练得到的): Xception Inception V3 ResNet50 VGG16 VGG19...MobileNet 我们将 VGG16 模型实例化。...可以看到,精度值提高了 1%,从约 96% 提高到 97% 以上。 注意,从损失曲线上看不出与之前相比有任何真正的提高(实际上还在变差)。...即使从平均损失中无法看出,但模型也仍然可能在改进。 现在,你可以在测试数据上最终评估这个模型。
精度保持,效率提升数倍 这个算法所需要的算力并不高,在搭载英特尔酷睿i7-4960HQ(2.6GHz)处理器的Macbook Pro上就能完成。...他们在Keras版本的VGG16模型上进行了测试,所用的数据集是CIFAR-10/100,对一系列最新的近似算法进行了评估: 从图中来看,在效率提升接近10倍的情况下,采用MADDNESS(图中红线)...仍然能在CIFAR-10上保持几乎不变的精度。...即使是在CIFAR-100上,在精度几乎不变的情况下,MADDNESS和MADDNESS-PQ也同样实现了效率最大化的结果。...当然,也有读者指出,这篇论文还存在一些待解决的问题: ①论文用的是VGG16模型,但没有在Transformer等更经典的模型(如BERT)中进行实验;②虽然对矩阵乘法进行了加速,但毕竟只是近似算法,意味着潜在的精度损失
以图像分类任务为例,在 CIFAR-10 和 ImageNet 等数据集上,PocketFlow 对 ResNet 和 MobileNet 等多种 CNN 网络结构进行有效的模型压缩与加速。...在 CIFAR-10 数据集上,PocketFlow 以 ResNet-56 作为基准模型进行通道剪枝,并加入了超参数优化和网络蒸馏等训练策略,实现了 2.5 倍加速下分类精度损失 0.4%,3.3 倍加速下精度损失...0.7%,且显著优于未压缩的 ResNet-44 模型; 在 ImageNet 数据集上,PocketFlow 可以对原本已经十分精简的 MobileNet 模型继续进行权重稀疏化,以更小的模型尺寸取得相似的分类精度...的精度损失;通过使用超参数优化组件自动地确定网络中各层权重的量化比特数,PocketFlow 在对用于 ImageNet 图像分类任务的 MobileNet-v1 模型进行压缩时,取得了一致性的性能提升...在人体体态识别项目中,PocketFlow 更是在满足上线精度的要求下,使得模型推理速度有 3 倍以上的加速,为项目的移动端落地起到了决定性的作用。
本节介绍基于Keras的使用预训练模型方法 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络。...Inception V3 ResNet50 VGG16 VGG19 MobileNet 实例化VGG16卷积基 from keras.applications import VGG16...但出于同样的原因,这种方法的计算代价比第一种要高很多 以下将使用在 ImageNet 上训练的 VGG16 网络的卷积基从猫狗图像中提取有趣的特征,然后在这些特征上训练一个猫狗分类器 第一种方法,保存你的数据在...可见,在训练集上的表现要比之前好很多,不过还是出现了一定程度的过拟合 第二种方法 使用数据增强的特征提取 注:扩展 conv_base 模型,然后在输入数据上端到端地运行模型 因为我们要使用的卷积基不需要重新训练...可见,此时没有出现明显的过拟合现象,在验证集上出现了更好的结果 此处应该可以使用数据增强的方式扩充我们的数据集,然后再通过第一种方法来训练分类器 模型微调 另一种广泛使用的模型复用方法是模型微调(fine-tuning
我们还将简要讨论Google的AutoML,这是一套工具和库,允许具有有限机器学习专业知识的程序员在自己的数据上训练高精度模型。...我们将使用Auto-Keras来探索更长的训练时间对精确度的影响。 让我们加载CIFAR-10数据集并初始化类名: ? 我们的CIFAR-10数据被加载并存储在第25行的训练/测试分组中。...使用Auto-Keras进行训练可在8-12小时范围内为CIFAR-10生成最佳型号。 在上图中,你可以看到训练时间(x轴)对使用Auto-Keras的总体准确度(y轴)的影响。...虽然Auto-Keras在CIFAR-10上工作得相当好,但是我使用我之前关于深度学习,医学图像和疟疾检测的文章进行了第二组实验。...我使用简化的ResNet架构获得了97.1%的准确率,该架构花费了不到一小时的时间进行训练。然后我让Auto-Keras在相同的数据集上运行24小时-结果只有96%的准确度,低于我自己定义的架构。
mobilenet3更高的识别性能(例如75:7%的top-1精度)。...提出背景 传统的CNN通常需要大量的参数和浮点运算(FLOPs)才能达到满意的精度; 尽管最近的工作,例如MobileNet和ShuffleNet引入了深度可分离卷积或混淆卷积操作,以使用较小的卷积核(...浮点运算)来构建有效的CNN,但1x1卷积层仍将占用大量内存和FLOPs; MobileNet和ShuffleNet这类模型在较少FLOPs下获得了高性能,但特征映射之间的相关性和冗余性却从未得到很好的利用...,在移动设备上快速推理的各种任务上,Ghost网络可以超过MobileNet3等最新的高效深层模型; 网络模型结构 论文提出了Ghost module,针对传统方式,设定输入数据维度为 ?...针对d和s的大小,论文进行了实验,最终确定了d=3,s=2。 ? CIFAR-10上的实验对比: ? ImageNet上的实验对比: ? ? COCO数据集上的实验对比: ?
我们将使用CIFAR-10数据集,包含60000张32×32像素的彩色照片,对象来自10类,如青蛙、鸟、猫、船等。...CIFAR-10是一个易于理解的数据集,广泛用于机器学习领域的计算机视觉算法的基准测试。 我们还将使用卷积神经网络(CNN)模型,该模型能够在这个问题上获得良好(优于随机)的结果,但不是最先进的结果。...,然后在测试数据集上评估它,返回运行的估计分类精度。...TTA的例子 我们现在可以更新CIFAR-10上CNN模型的重复评估,以使用测试时间增强。 上面关于如何在Keras中TTA的一节中开发的tta_predict()函数可以直接使用。...重要的是要考虑可能使模型适合CIFAR-10数据集的图像增强类型。对照片进行微小修改的增强可能是有用的。这可能包括缩放、移动和水平翻转等增强功能。 在本例中,我们将只使用水平翻转。
如果对性能(耗时)要求较为严格,则建议使用深度较浅的网络结构,如VGG16, MobileNet等。...其中,MobileNet网络是为移动端和嵌入式端深度学习应用设计的网络,使得在 cpu 上也能达到理想的速度要求。是一种轻量级的深度网络结构。...Keras是在Tensorflow基础上构建的高层 API,比Tensorflow更容易上手。...上述提到的分类网络,在Keras中基本已经实现,Keras 中已经实现的网络结构如下所示: 使用方便,直接导入即可,如下: 因此,选择 Keras 作为深度学习框架。 3....解决方法: 通过创建用于加载模型的会话的引用,然后在每个需要使用的请求中使用 keras 设置 session。
CIFAR-10:https://www.cs.toronto.edu/~kriz/cifar.html 看一下这些样本图片: 带有示例图像的CIFAR-10类 动手实践 在开始之前: 创建一个Neptune...在Neptune上,点击项目,创建一个新的CIFAR-10(使用代码:CIF)。 代码在Keras中,地址☞ https://keras.io/ 我们将使用Python 3和TensorFlow后端。...我在训练集上的准确率达到了41%,更重要的是,37%的准确率在验证上。请注意,10%是进行随机猜测的基线。 多层感知器 老式的神经网络由几个密集的层组成。在层之间,我们需要使用一个激活函数。...任何时候,你的训练分数都会以验证分数的成本上升,然后你的网络就会变得不过度拟合。 我们可以在验证集上获得大约45%的准确率,这是对逻辑回归的改进。不过,我们可以做得更好。...如果你想要使用这种网络——编辑文件,运行它(我建议在命令行中添加——tags my-experiment),看看你是否能做得更好。采取一些方法,看看结果如何。 提示: 使用20个以上的epoch。
与MobileNet类似,ShuffleNetV1通过设计更高效的网络结构来实现模型的压缩和加速。...模型训练和评估 采用CIFAR-10数据集对ShuffleNet进行预训练。 下载数据 模型训练 本段文字描述了使用随机初始化参数进行预训练的步骤。...模型评估 对CIFAR-10测试集上的模型进行评估,设置评估模型的路径,加载数据集并设置Top 1、Top 5的评估标准,最后使用model.eval()接口对模型进行评估。...模型预测 在CIFAR-10的测试集上对模型进行预测,并将预测结果可视化。 总结 ShuffleNet 是一种计算高效的轻量级 CNN 模型,主要应用在移动端。...它的核心设计是引入了 Pointwise Group Convolution 和 Channel Shuffle 两种操作,在保持精度的同时大大降低了模型的计算量。
领取专属 10元无门槛券
手把手带您无忧上云