热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算机视觉入门:我推荐你这样学习!【转】

近年来,计算机视觉取得了很大进展。这些是我将在这里提到的主题内容:技术:应用:关注的人:重要的深度学习创始人:Andrewng,Yannlecun,Bengioyoshua,Hin

近年来,计算机视觉取得了很大进展。这些是我将在这里提到的主题内容:

技术:

  1. 人脸检测:Haar,HOG,MTCNN,Mobilenet
  2. 面部识别:CNN,Facenet
  3. 对象识别:alexnet,inceptionnet,resnet
  4. 迁移学习:在一个新主题上用很少的资源重新训练大型神经网络
  5. 图像分割:rcnn
  6. GAN
  7. 计算机视觉硬件:选择什么,GPU很重要
  8. 集成视觉的UI应用程序:ownphotos

应用:

  1. 个人照片组织
  2. 自动驾驶汽车
  3. 自主无人机
  4. 解决验证码/ OCR
  5. 过滤基于图片的网站/应用程序的图片
  6. 自动标记应用的图片
  7. 从视频中提取信息(电视节目、电影)
  8. 视觉问题回答
  9. 艺术

关注的人:

  重要的深度学习创始人:Andrew ng,Yann lecun,Bengio yoshua,Hinton joffrey

课程 :

  1. deep learning@ coursera
  2. machine learning@ coursera

相关领域:

  • 深度强化学习:使用cnn作为输入层,查看ppo和dqn
  • 与nlp的交互:lstm 2 cnn

人脸检测

技术分享图片

面部检测是关于在面部周围放置盒子

人脸检测是检测人脸的其中一项任务。有几种算法可以做到这一点。

https://github.com/nodefluxio/face-detector-benchmark提供了这些方法的速度基准,并且有易于重用的实现代码。

Haar 分类器

技术分享图片

Haar 特征

它们是自2000年以来在opencv中出现的旧计算机视觉方法。

它是一种机器学习模型,具有专门用于对象检测的功能。 Haar 分类器速度快但准确度低。

请参阅https://docs.opencv.org/3.4.3/d7/d8b/tutorial_py_face_detection.html中有关如何使用它的更长解释和示例

HOG:方向梯度直方图

技术分享图片

方向梯度直方图

HOG是一种新的生成对象检测功能的方法:它自2005年开始使用。它基于计算图像像素的梯度,然后将这些特征馈送到机器学习算法中,例如SVM。它具有比haar分类器更好的精度。

它的一个实现在dlib中。这是在face_recognition(https://github.com/ageitgey/face_recognition)库中。

MTCNN

一种使用CNN变化来检测图像的新方法,精度更高但速度稍慢。请参阅https://kpzhang93.github.io/MTCNN_face_detection_alignment/index.html

MobileNet

这是我这些天用于面部检测的最好和最快的方法,基于通用移动网络架构。请参阅https://arxiv.org/abs/1704.04861

物体检测

技术分享图片

对许多物体进行物体检测

可以使用与面部检测类似的方法来实现对象检测。

这里有2篇文章介绍了实现它的最新方法。这些方法有时也提供了对象类(实现对象识别):

  • (https://towardsdatascience.com/review-r-fcn-positive-sensitive-score-maps-object-detection-91cd2389345c r-fcn
  • https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e a comparison of r-cnn, fast r-cnn, faster r-cnn and yolo)

卷积神经网络

最近深度学习的进展使新架构取得了很大成功。

使用许多卷积层的神经网络就是其中之一。卷积层利用图像的2D结构在神经网络的下一层中生成有用信息。有关什么是卷积的详细说明,请参阅https://towardsdatascience.com/intuitively-understanding-convolutions-for-deep-learning-1f6f42faee1。

技术分享图片

卷积层

物体识别

对象识别是将对象分类为类别(如猫,狗,......)的一般问题

基于卷积的深度神经网络已被用于在此任务上取得很好的效果。

ILSVR会议一直在ImageNet上举办竞赛(http://www.image-net.org/许多图片的数据库,包括猫、狗等物品标签)

更成功的神经网络现在已经使用越来越多的层。

技术分享图片

 

ResNet架构是迄今为止对对象进行分类的最佳选择。

技术分享图片

Resnet架构

要正确地训练它,需要使用数百万张图像,即使使用数十个昂贵的GPU也仍然需要花费大量时间。

这就是为什么每次都不需要在这些大数据集上进行重新训练的方法非常有用的原因。迁移学习和嵌入就是采用的这样的方法。

有关resnet的预训练模型,请访问https://github.com/tensorflow/tensor2tensor#image-classification

人脸识别

面部识别就是要弄清楚谁是一张脸。

历史方法

解决该任务的历史方法是将特征工程应用于标准机器学习(例如svm)或应用深度学习方法进行对象识别。

这些方法的问题是它们需要每个人的大量数据。实际上,数据并不总是可用的。

Facenet

谷歌研究人员在2015年推出了Facenet( https://arxiv.org/abs/1503.03832)。它提出了一种识别面部的方法,但却不需要为每个人提供大量的面部样本。

它的工作方式是拍摄大量面孔的图片数据集(例如http://vis-www.cs.umass.edu/lfw/)。

然后采用现有的计算机视觉架构,例如初始(或resnet),然后用计算面部嵌入的层替换对象识别NN的最后一层。

对于数据集中的每个人,(负样本、正样本、第二正样本)选择三个面(使用启发法)并将其馈送到神经网络,这产生了3个嵌入。在这3次嵌入中,计算三重态损失,这使得正样本与任何其他正样本之间的距离最小化,并且最大化位置样本与任何其他负样本之间的距离。

技术分享图片

三元组损失

技术分享图片

 

最终结果是每个面(即使在原始训练集中不存在的面)现在也可以表示为一个嵌入,它与其他人的面部嵌入有很大距离的嵌入(128数字的向量)。

然后,这些嵌入可以与任何机器学习模型(甚至简单的诸如knn)一起使用来识别人。

关于facenet和face embedding非常有趣的事情就是使用它你可以识别只有几张照片或者只有一张照片的人。

这是它的一个tensorflow实现:https://github.com/davidsandberg/facenet

这是人脸识别管道背后的思想的一个很酷的应用,而不是识别熊脸:https://hypraptive.github.io/2017/01/21/facenet-for-bears.html

迁移学习

技术分享图片

在自定义数据集上快速重新构建精确的神经网络

训练非常深的神经网络(如resnet)是非常耗费资源的,需要大量数据。

计算机视觉是高度计算密集型的(对多个gpu进行数周的训练)并且需要大量数据。为了解决这个问题,我们已经讨论过为面部计算通用嵌入。另一种方法是采用现有网络并仅在其他数据集上重新训练其几个层。

这是一个教程:codelab教程。它建议你重新训练一个初始模型,训练未知的花类。

https://medium.com/@14prakash/transfer-learning-using-keras-d804b2e04ef8提供了在进行迁移学习时应该对哪一层进行再训练的良好指导。

图像分割

技术分享图片

用于自动驾驶的图像分割

近年来,图像分割成为了一项令人印象深刻的新任务。它包括识别图像的每个像素。

此任务与对象检测有关。实现它的一种算法是mask r-cnn。

GAN

技术分享图片

大规模的GAN

由ian goodfellow引入的Generative Adversial Networks是一个神经网络架构,分为两部分:鉴别器和发生器。

  • 鉴别器检测图片是否是类,它通常在对象分类数据集上预先训练。
  • 生成器为给定的类生成图像

在学习期间调整发生器的权重,以便产生鉴别器无法与该类的真实图像区分的图像。

以下是最大的GAN(https://arxiv.org/abs/1809.11096)生成的图像示例

请参阅https://github.com/eriklindernoren/Keras-GAN在keras中的GAN实现

计算机视觉硬件

技术分享图片

 

要训??练大型模型,需要大量资源。实现这一目标有两种方法。首先是使用云服务,例如google cloud或aws。第二种方法是自己构建一台带有GPU的计算机。

只需1000美元,就可以构建一台体面的机器来训练深度学习模型。

视觉界面

技术分享图片

面对自己的照片仪表板

Ownphotos是一个令人惊叹的用户界面,您可以导入照片并自动计算面部嵌入,进行物体识别和识别面部。

它用 :

  • 面部识别:face_recognition
  • 物体检测:densecap,places365

应用

技术分享图片

视觉问题回答

计算机视觉有很多应用:

  • 个人照片组织
  • 自动驾驶汽车
  • 自动无人机
  • 解决验证码/ OCR
  • 过滤基于图片的网站/应用程序的图片
  • 自动标记应用的图片
  • 从视频中提取信息(电视节目,电影)
  • 视觉问题解答:结合NLP和计算机视觉
  • 艺术:GAN

结论

正如我们在这里看到的,这里有许多新的有趣的方法和应用程序。

我认为人工智能在一般情况下最有趣的是特别是在可以重复使用的学习算法中,能够将这些方法应用于越来越多的任务,而不需要太多的处理能力和数据:

  • 迁移学习:它可以使得重新利用预训练的大型神经网络成为可能
  • 嵌入(例如facenet):可以识别许多类而无需对这些类中的任何类进行训练

转自:https://www.toutiao.com/i6628041041964433934/?iid=52489949221&app=news_article&group_id=6628041041964433934×tamp=1543476801

计算机视觉入门:我推荐你这样学习!【转】


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
  • 深度学习与神经网络——邱锡鹏
    深度学习与神经网络——邱锡鹏-一、绪论人工智能的一个子领域神经网络:一种以(人工))神经元为基本单元的模型深度学习:一类机器学习问题,主要解决贡献度分配问题知识结构:路线图:顶 ... [详细]
  • 北交桑基韬:“超”人的机器学习,非语义特征的得与失
    点击蓝字关注我们AITIME欢迎每一位AI爱好者的加入!作者|桑基韬整理|维克多人工智能目前最大的“拦路虎”是不可信赖性,以深度学习为基础的算法 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • Python15行代码实现免费发送手机短信,推送消息「建议收藏」
    Python15行代码实现免费发 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • adfs是什么_培训与开发的概念
    adfs是什么_培训与开发的概念(如您转载本文,必须标明本文作者及出处。如有任何疑问请与我联系me@nap7.com)ADFS相关开发技术的中文资料相对匮乏,之前在弄这个东西的时候 ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 5G新空口关键技术之信道编码
    信道编码概念  信道编码过程包括添加循环冗余校验码(CRC,CyclicRedundancyCheck)、码块分割(Code ... [详细]
  • [AWS DA] Database types & SSL
    YoucanletAWStocreateaSSLcertificatesforyouandmanageforyoubyusingAWSCetrficateManager.Basic ... [详细]
author-avatar
2d15064efa_556
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有