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

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

技术:

  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 [email protected] coursera
  2. machine [email protected] 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&timestamp=1543476801

原文地址:https://www.cnblogs.com/Triw/p/10038812.html

时间: 2024-11-08 23:04:46

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

(转) Git版本控制软件结合GitHub从入门到精通常用命令学习手册

转载自:爱分享 » Git版本控制软件结合GitHub从入门到精通常用命令学习手册 原文传送门: http://www.ihref.com/read-16369.html 注意: 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册:http://git-scm.com/book/zh GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划

计算机视觉入门及资料汇总

目录:(未完,持续更新) 零.好的博客汇总: 一.计算机视觉论文及代码汇总: 二.特征提取算法汇总: 三.深度学习与计算机视觉汇总: 四.C和C++入门汇总: 五.数据集汇总: 零.好的博客汇总: (1)jsxyhelu:https://www.cnblogs.com/jsxyhelu/ 推荐理由:https://www.cnblogs.com/jsxyhelu/category/927452.html里边汇总了图像处理的严肃实验,自己10年学习图像处理的经验总结. (2)Imageshop:h

不知道去哪找java基础资料?推荐几个学习网站,小白必备

不知道去哪找java基础资料?推荐几个学习网站,小白必备Java经过20多年的发展,仍然是世界上最受欢迎的编程语言之一,有无限多种方法使用Java.拥有庞大的客户群.并且java应用范围很广,基本只要与互联网有关的东西都能与java扯上关系,java于我们的生活息息相关,就像空气一般,存在于身边但让人不易发现,但偏偏让人们的生活离不开它.所以学习Java的人也是很多的,我接下来推荐几个好用的java学习网站:1.菜鸟教程菜鸟教程可以说是很多人的入门网站,我当初就是看这个入门开始了解java的,而

《看穿一切数字的统计学》:深入浅出的统计学入门 四星推荐

日本统计学家写的统计学入门.深入浅出介绍统计学最常见的几个应用场景:抽样调查,随机对照,回归分析等,挺有趣的.对统计学感兴趣的,想复习统计学的,都可以看看. 同意作者在书中表达的一个思想:统计学思维是现代人应该掌握的非常重要的一种常识.个人感觉,在个体遇到医疗健康相关的问题,企业家遇到经营管理问题的时候,都容易以偏概全,认为个人体验到的就是总体的全局的情况. <看穿一切数字的统计学>:深入浅出的统计学入门 四星推荐,布布扣,bubuko.com

推荐引擎的学习资料

下面的资料没有做优先级排序. 文章: CSDN的推荐引擎主题资料汇集页面:http://subject.csdn.net/tuijian/ 推荐<探索推荐引擎的秘密>系列 http://tiny4.org/blog/2011/05/recommend-enginee/  该文作者为iApp4me创始人,文中提到几个开源推荐引擎项目 探索推荐引擎内部的秘密系列:http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/in

文本分类入门,推荐播客

http://www.blogjava.net/zhenandaci/ 推荐这个博客,博主真的很厉害,把基础的用到的文本分类方法都写上了! 比较推荐的文章: 文本分类入门(十)特征选择算法之开方检验 文本分类入门(番外篇)特征选择与特征权重计算的区别 其他都同样很好!! 文本分类入门,推荐播客

Python从入门到精通高校竞赛学习系列视频课程

课程目标Python从入门到精通高校竞赛学习系列视频课程适用人群Pythhon初学者,Python开发人员,有linux操作基础,能够坚持学习不放弃的同学,课程简介从零基础学习Python编程,理论结合实践,提高自己综合能力:方向和努力决定了自己的价值:通过本课程学习我们能够掌握基本开发知识,在工作和学习中独立完成相关任务:同时我们提供全面的技术支持和指导,如果有问题可以向我们咨询,我们会积极解决学习和工作中的问题 下载地址:百度网盘请添加链接描述 原文地址:http://blog.51cto.

入门机器(深度)学习的书籍及学习资料推荐

(第一次写博客,如有什么地方写得不对的,或者意见相左的,还请见谅!) 工作了一段时间,又重新回来读书(本科计算机专业,第一个研究生是商科,现读回了计算机专业)了,最开始想着走APP研发路线的,但是最终回来读书之后却恰好碰上了so-called人工智能,所以就决定将专业设定为数据分析(Data Analytics),主要学习的课程方向是数据可视化分析,机器学习和深度学习等课程.刚回来读书那会,太多不适应,特别是要重新捡回很多编程的知识和技能是一件挺艰辛的事.当初辞职那会准备相关的编程技能主要事针对

法语学习(1)--入门资料推荐

目录 法语学习站点(Websites) 法语输入法 法语在线翻译推荐 法语APP 法语学习站点(Websites) 看看法国 法语发音入门 法语法国 法语输入法 法语键盘的使用 法文(法国)键盘(AZQW键盘) ê,?,a,?,?,ê,? 等先按下^键(即美国101键盘的[键),然后按相应字母: ?,?,?,ü,?,?,? 等先同时按下shift键和同上这个键,然后按相应字母: 法语(加拿大)键盘 ? 和?:分别是]和shift+] à 和à:分别是\和shift+ é和é:分别是/和shift