算法该如何分辨这只狗可能属于哪个品种?当然小伙伴们可以训练自己的卷积神经网络来对这张图片进行分类,但是通常情况下我们既没有GPU的计算能力,也没有时间去训练自己的神经网络。但是,全世界的各个研究团队(例如牛津,谷歌,微软)都拥有足够的计算能力,时间和金钱,而且以前可能已经解决过一些类似的问题。我们该如何利用他们已经完成的工作呢?现在来让我们了解一个重要的概念——转移学习。
神经网络在项目实践中遇到的一大问题是数据不足。任何人工智能项目,在数据不足面前都会巧妇难为无米之炊,算法再精巧,只要数据量不足,最后的效果都不尽如人意,我们目前正在做的图像识别就是如此,要想让网络准确的识别猫狗图片,没有几万张图片以上是做不到的。
上个星期我做了一些实验,用了在 CIFAR10 数据集上训练的 VGG16。我需要从零开始训练模型,所以没有使用在 ImageNet 上预训练的版本。
https://github.com/Apoorvajasti/Distracted-Driver-Detection
VGG16是由16层神经网络构成的经典模型,包括多层卷积,多层全连接层,一般我们改写的时候卷积层基本不动,全连接层从后面几层依次向前改写,因为先改参数较小的。
很多人想入门做深度学习,但往往翻遍网络看完一篇又一篇所谓的“入门教程”,paper,包括很多深度学习框架官方给出的案例,给人的感觉真的是从入门到放弃。写教程的作者有很多都是技术大神,但写出的东西真的是把原本简简单单的理论说得晦涩难懂,模凌两可。比如说VGG16,都是摆上从论文里截过来的下面这张图:
作者:李中粱 小编:赵一帆 1 Keras框架介绍 在用了一段时间的Keras后感觉真的很爽,所以特意祭出此文与我们公众号的粉丝分享。 Keras是一个非常方便的深度学习框架,它以TensorFlow或Theano为后端。用它可以快速地搭建深度网络,灵活地选取训练参数来进行网路训练。总之就是:灵活+快速!!! 2 安装Keras 首先你需要有一个Python开发环境,直接点就用Anaconda,然后在CMD命令行中安装: # GPU 版本 >>> pip install --upgrade tensorf
在用了一段时间的Keras后感觉真的很爽,所以特意祭出此文与我们公众号的粉丝分享。 Keras是一个非常方便的深度学习框架,它以TensorFlow或Theano为后端。用它可以快速地搭建深度网络,灵活地选取训练参数来进行网路训练。总之就是:灵活+快速!
经典的目标检测如Faster R-CNN, YOLOv3等都用到了Anchor, 怎么设计Anchor每个目标检测方法各不相同。Faster R-CNN中的Anchor有三种形状,三种长宽比,比如形状有[128, 256, 512]三个,长宽比有[1:1, 1:2, 2:1]三种,这样组合就是9个anchor。YOLOv3中的Anchor是通过K-Means聚类得到的。这些基于anchor的方法的目的是学习一个从Anchor到GT Box的转换函数,下边我们了解一下理论感受野、Anchor、实际感受野三者之间的关系。
本笔记主要分为三个部分,第一部分是论文阅读,对论文中要点进行讲解。第二部分是代码实验部分,对论文中提出的部分实验进行代码实验,包含模型训练,参数量计算,特征图可视化。第三部分是下一步工作,提出一些失败及未实现的想法,来实现不需要训练的即插即用Ghost module。
本文介绍了计算机视觉领域中的经典算法及其在Tesla产品中的应用。这些算法包括HOG、SIFT、SURF、ORB、CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD、YOLO v2、ResNet、Inception、EfficientNet、Caffe、TensorFlow、Keras、OpenCV等,以及这些算法在自动驾驶、目标检测、人脸识别、图像分割、目标跟踪等应用场景中的实践案例。此外,作者还分享了在深度学习、计算机视觉领域中的代码、学习资料、开源项目、竞赛排名等方面的信息,供读者学习和参考。
图像识别是当今深度学习的主流应用,而Keras是入门最容易、使用最便捷的深度学习框架,所以搞图像识别,你也得强调速度,不能磨叽。本文让你在最短时间内突破五个流行网络结构,迅速达到图像识别技术前沿。
本人非专业开发者,之前也没用过云服务器,所以在实践过程会遇到一些新手才会有的困惑。简单分享一下,给同样困惑的朋友一点借鉴,大神可以略过,谢谢!
刚开始接触深度学习、卷积神经网络的时候非常懵逼,不知道从何入手,我觉得应该有一个进阶的过程,也就是说,理应有一些基本概念作为奠基石,让你有底气去完全理解一个庞大的卷积神经网络:
Keras代码示例多达数百个。通常我们只需复制粘贴代码,而无需真正理解这些代码。通过学习本教程,您将搭建非常简单的构架,但是此过程会带给您些许好处:您将通过阅读 VGG*的论文原著学习使用 Keras 从零开始实现 VGG 网络。 我使用的术语是指由牛津大学计算机视觉组 (Visual Geometry Group, VGG)为ILSVRC-2014构建的网络构架。 那么,实现别人构建出来的结构有什么意义呢? 关键在于学习,通过完成本教程的学习,您将: 进一步了解 VGG 构架; 进一步了解卷积神经网
卷积神经网络上目前深度学习应用在图像处理和自然语言处理的非常具有代表性的神经网络,其经历了不断的优化发展,性能越来越强。在图像处理、计算机视觉领域的应用包括图像特征提取、目标分类、目标分割、目标识别等。相比于传统的神经网络需要将一定的特征信息作为输入,卷积神经网络可以直接将原始图像或经过预处理之后的图像作为网络模型的输入,一个卷积神经网络通常包括输入输出层和多个隐藏层,隐藏层通常包括卷积层和RELU层(即激活函数)、池化层、全连接层和归一化层等。卷积神经网络中有三个基本的概念:局部感受野(Local Receptive Fields)、共享权值(Shared Weights)、池化(Pooling)。 (1)局部感受野。对于全连接式的神经网络,图像的每一个像素点连接到全连接的每一个神经元中,造成大量的计算量,而卷积神经网络则是把每一个卷积核的点只连接到图像的某个局部区域,从而减少参数量。 (2)共享权值。在卷积神经网络的卷积层中,神经元对应的权值是相同的,由于权值相同,因此可以减少训练的参数量。 (3)池化。类似于人的视觉观察物体原理,关注点由大到小,首先输入图像往往都比较大,在卷积过程中通过不断提取特征,并且经过池化操作来对图像进行缩小,同时提取低阶和高阶的抽象特征信息。 卷机的原理和各种卷积的变种在之前的文章里提过。(深度学习系列(一)常见的卷积类型)
距离上次更公众号已经有一段时间了,寒假到开学这段时间都没有更新,笔者在这跟大家说声抱歉。这个学期可能会更新一些有关深度学习的文章,尽量保持一周一更,也希望大家监督。话不多说,开始正题。
在上次的动画简介中, 我们大概了解了一些迁移学习的原理和为什么要使用迁移学习. 如果用一句话来概括迁移学习, 那务必就是:“为了偷懒, 在训练好了的模型上接着训练其他内容, 充分使用原模型的理解力”.有时候也是为了避免再次花费特别长的时间重复训练大型模型.
这是两种不同的方式,第一种是直接使用vgg16的参数,需要在运行时下载,第二种是我们已经下载好的权重,直接在参数中输入我们的路径即可。
文件结构及意义 VGG16_model:存放训练好的VGG16模型——vgg16_weights_tf_dim_ordering_tf_kernels.h5
Batch Normalization是将各层的输入进行归一化,使训练过程更快、更稳定的一种技术。在实践中,它是一个额外的层,我们通常添加在计算层之后,在非线性之前。它包括两个步骤:
网络安全是现代社会最关心的问题之一,确保只有特定的人才能访问设备变得极其重要,这是我们的智能手机设有两级安全系统的主要原因之一。这是为了确保我们的隐私得到维护,只有真正的所有者才能访问他们的设备。基于人脸识别的智能人脸识别技术就是这样一种安全措施,本文我们将研究如何利用VGG-16的深度学习和迁移学习,构建我们自己的人脸识别系统。
VGGNet是由牛津大学视觉几何小组(Visual Geometry Group,VGG)提出的一种深层卷积网络结构,它们以7.32%的错误率赢得了2014年ILSVRC分类任务的亚军(冠军由GoogLeNet以6.65%的错误率夺得)和25.32%的错误率夺得定位任务(Localization)的第一名(GooleNet错误率为26.44%)[5],网络名称VGGNet取自该小组名缩写。VGGNet是首批把图像分类的错误率降低到10%以内模型,同时该网络所采用的3\times3卷积核的思想是后来许多模型的基础,该模型发表在2015年国际学习表征会议(International Conference On Learning Representations, ICLR)后至今被引用的次数已经超过1万4千余次。
作者 | 小白 来源 | 小白学视觉 网络安全是现代社会最关心的问题之一,确保只有特定的人才能访问设备变得极其重要,这是我们的智能手机设有两级安全系统的主要原因之一。这是为了确保我们的隐私得到维护,只有真正的所有者才能访问他们的设备。基于人脸识别的智能人脸识别技术就是这样一种安全措施,本文我们将研究如何利用VGG-16的深度学习和迁移学习,构建我们自己的人脸识别系统。 简介 本项目构建的人脸识别模型将能够检测到授权所有者的人脸并拒绝任何其他人脸,如果面部被授予访问权限或访问被拒绝,模型将提供语音响应。用户
想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络。预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训练好。如果这个原始数据集足够大且足够通用,那么预训练网络学到的特征的空间层次结构可以有效地作为视觉世界的通用模型,因此这些特征可用于各种不同的计算机视觉问题,即使这些新问题涉及的类别和原始任务完全不同。举个例子,你在 ImageNet 上训练了一个网络(其类别主要是动物和日常用品),然后将这个训练好的网络应用于某个不相干的任务,比如在图像中识别家具。这种学到的特征在不同问题之间的可移植性,是深度学习与许多早期浅层学习方法相比的重要优势,它使得深度学习对小数据问题非常有效。
在本系列中,我们会从神经风格的基础开始,你将从中学到一种自下而上(从基础开始)的方法。对于初学者而言,我们将会详细讲解神经风格到底是什么,以及它的工作原理。本文是连载中的系列文章的第一部分,将由我与 Pawan Sasanka Ammanamanchi 共同完成。本系列长期连载,我们将努力覆盖这个领域的研究,并且不断增加新的文章。目前,实现这一目标的先决条件如下:
pytorch中自带几种常用的深度学习网络预训练模型,torchvision.models包中包含alexnet、densenet、inception、resnet、squeezenet、vgg等常用网络结构,并且提供了预训练模型,可通过调用来读取网络结构和预训练模型(模型参数)。往往为了加快学习进度,训练的初期直接加载pretrain模型中预先训练好的参数。加载model如下所示:
VGG 由牛津大学视觉几何组(Visual Geometry Group)开发。包含两个版本:VGG16 和 VGG19,分别有16个层级和19个层级。本文只介绍 VGG16 。根据 arxiv.org 上公布的论文,VGG 的卷积核大小为 (3, 3),最大池化层核大小 (2, 2),隐藏层激活函数为 ReLu, 输出层激活函数为 softmax。如果我们能知道模型各层的输入输出 shape 及层叠顺序,就能使用 Keras 自己搭建一个 VGG 。幸运的是,我们不需要从晦涩难懂的论文中提炼出模型的这些参数细节,Keras 可以直接给到我们这个模型全部细节。
我们首先需要从互联网上获取包含墙壁裂缝的图像(URL格式)数据。总共包含1428张图像:其中一半是新的且未损坏的墙壁;其余部分显示了各种尺寸和类型的裂缝。
Faster R-CNN 的极简实现: github: simple-faster-rcnn-pytorch(http://t.cn/RHCDoPv ) 本文插图地址(含五幅高清矢量图):draw.io(http://t.cn/RQzroe3 ) 1 概述 在目标检测领域, Faster R-CNN 表现出了极强的生命力, 虽然是 2015 年的论文(https://arxiv.org/abs/1506.01497),但它至今仍是许多目标检测算法的基础,这在日新月异的深度学习领域十分难得。Faster
提出了一种基于区域卷积网络的快速目标检测方法(Fast R-CNN)。Fast R-CNN建立在以前工作的基础上,使用深度卷积网络有效地分类目标建议。与之前的工作相比,Fast R-CNN在提高训练和测试速度的同时,也提高了检测精度。Fast R-CNN训练了非常深的VGG16网络,速度比R-CNN快9倍,测试时速度213被,在PASCAL VOC 2012上实现了更高的mAP。与SPPnet相比,Fast R-CNN训练VGG16快三倍,测试速度快10倍,精度更高。
机器学习中一个重要的话题便是模型的泛化能力,泛化能力强的模型才是好模型,对于训练好的模型,若在训练集表现差,在测试集表现同样会很差,这可能是欠拟合导致。欠拟合是指模型拟合程度不高,数据距离拟合曲线较远,或指模型没有很好地捕捉到数据特征,不能够很好地拟合数据。
风格迁移是一个很有意思的任务,通过风格迁移可以使一张图片保持本身内容大致不变的情况下呈现出另外一张图片的风格。本文会介绍以下三种风格迁移方式以及对应的代码实现:
根据给定的文章内容,撰写摘要总结。
语义分割是当今计算机视觉领域的关键问题之一。从宏观上看,语义分割是一项高层次的任务,为实现场景的完整理解铺平了道路。场景理解作为一个核心的计算机视觉问题,其重要性在于越来越多的应用程序通过从图像中推断知识来提供营养。其中一些应用包括自动驾驶汽车、人机交互、虚拟现实等,近年来随着深度学习的普及,许多语义分割问题正在采用深层次的结构来解决,最常见的是卷积神经网络,在精度上大大超过了其他方法。以及效率。
本篇文章主要讲解自己的图像数据如何在TnesorFlow上训练,主要从数据准备、训练模型、验证准确率和导出模型并对图片分类。重点如下:
在基于区域的卷积神经网络的浪潮中,目标检测领域已经取得了显著的进展,但是它们的训练过程仍然包含许多尝试和超参数,这些参数的调优代价很高。我们提出了一种简单而有效的在线难样本挖掘(OHEM)算法,用于训练基于区域的ConvNet检测器。我们的动机和以往一样——检测数据集包含大量简单示例和少量困难示例。自动选择这些困难的例子可以使训练更加有效。OHEM是一个简单直观的算法,它消除了几种常见的启发式和超参数。但更重要的是,它在基准测试(如PASCAL VOC2007和2012)上产生了一致且显著的检测性能提升。在MS COCO数据集上的结果表明,当数据集变得更大、更困难时,它的效率会提高。此外,结合该领域的互补进展,OHEM在PASCAL VOC 2007和2012年的mAP上分别取得了78.9%和76.3%的最新成果。
在上一篇文章《使用数据增强技术提升模型泛化能力》中,我们针对训练数据不足的问题,提出采用数据增强(data augmentation)技术,提升模型的准确率。最终结果是:在17flowers数据集上,我们将准确率从60%多增加到70%,取得了不错的效果。然而,对于一个商业应用来说,70%多的准确率还是有些拿不出手。我们还有更好的手段吗?
手机端运行卷积神经网络的一次实践 — 基于 TensorFlow 和 OpenCV 实现文档检测功能 1. 前言 本文不是神经网络或机器学习的入门教学,而是通过一个真实的产品案例,展示了在手机客户端上运行一个神经网络的关键技术点 在卷积神经网络适用的领域里,已经出现了一些很经典的图像分类网络,比如 VGG16/VGG19,Inception v1-v4 Net,ResNet 等,这些分类网络通常又都可以作为其他算法中的基础网络结构,尤其是 VGG 网络,被很多其他的算法借鉴,本文也会使用 VGG16 的基础
我们一直听过一句话叫,“如果说我看得比别人更远些,那是因为我站在巨人的肩膀上。(If I have seen further, it is by standing on the shoulders of giants.)”。“站在巨人的肩膀上”,不仅能看得更远,还能看到更多。这也用来表达我们要善于学习先辈的经验, 一个人的成功往往还取决于先辈们累积的知识。这句话, 放在机器学习中, 这就是今天要说的迁移学习(transfer learning)。
在《站在巨人的肩膀上:迁移学习》一文中,我们谈到了一种迁移学习方法:将预训练的卷积神经网络作为特征提取器,然后使用一个标准的机器学习分类模型(比如Logistic回归),以所提取的特征进行训练,得到分类器,这个过程相当于用预训练的网络取代上一代的手工特征提取方法。这种迁移学习方法,在较小的数据集(比如17flowers)上也能取得不错的准确率。
不得不说,这深度学习框架更新太快了尤其到了Keras2.0版本,快到Keras中文版好多都是错的,快到官方文档也有旧的没更新,前路坑太多。 到发文为止,已经有theano/tensorflow/CNTK支持keras,虽然说tensorflow造势很多,但是笔者认为接下来Keras才是正道。
不得不说,这深度学习框架更新太快了尤其到了Keras2.0版本,快到Keras中文版好多都是错的,快到官方文档也有旧的没更新,前路坑太多。 到发文为止,已经有theano/tensorflow/CNTK支持keras,虽然说tensorflow造势很多,但是笔者认为接下来Keras才是正道。 笔者先学的caffe,从使用来看,keras比caffe简单超级多,非常好用,特别是重新训练一个模型,但是呢,在fine-tuning的时候,遇到了很多问题,对新手比较棘手。 中文文档:http://keras-
想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络。预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训练好
本文通过分析一个技术案例,介绍了如何使用深度学习技术解决图片分类问题。首先介绍了传统的机器学习方法,然后通过一个具体的例子展示了如何使用深度学习技术进行图片分类。文章还探讨了如何通过迁移学习来快速训练一个具有准确性的模型,并总结了实验的结果。
领取专属 10元无门槛券
手把手带您无忧上云