资源技术动态计算机视觉入门:我推荐你这样学习!

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

2019-11-25 | |  130 |   0

原标题:计算机视觉入门:我推荐你这样学习!    

来源:今日头条        链接:https://www.toutiao.com/a6628041041964433934/


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


技术:

● 人脸检测:Haar,HOG,MTCNN,Mobilenet

● 面部识别:CNN,Facenet

● 对象识别:alexnet,inceptionnet,resnet

● 迁移学习:在一个新主题上用很少的资源重新训练大型神经网络

● 图像分割:rcnn

● GAN

● 计算机视觉硬件:选择什么,GPU很重要

● 集成视觉的UI应用程序:ownphotos


应用:

● 个人照片组织

● 自动驾驶汽车

● 自主无人机

● 解决验证码/ OCR

● 过滤基于图片的网站/应用程序的图片

● 自动标记应用的图片

● 从视频中提取信息(电视节目、电影)

● 视觉问题回答

● 艺术


关注的人:

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


课程 :

● deep learning@ coursera

● machine learning@ coursera


相关领域:

● 深度强化学习:使用cnn作为输入层,查看ppo和dqn

● 与nlp的交互:lstm 2 cnn


人脸检测

image.png

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


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

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


Haar 分类器

image.png


Haar 特征


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

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

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


HOG:方向梯度直方图

image.png

方向梯度直方图


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


物体检测对许多物体进行物体检测

image.png

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


这里有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。

6b2097d1c907452dac420c1ca548fdd0.gif

                                               卷积层


物体识别


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


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


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


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

image.png

 

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

f8fb19891c864b1b8b013bd4c0895287.jpg

 

                                                   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次嵌入中,计算三重态损失,这使得正样本与任何其他正样本之间的距离最小化,并且最大化位置样本与任何其他负样本之间的距离。

 image.png

                                                                     三元组损失


 image.png

最终结果是每个面(即使在原始训练集中不存在的面)现在也可以表示为一个嵌入,它与其他人的面部嵌入有很大距离的嵌入(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提供了在进行迁移学习时应该对哪一层进行再训练的良好指导。


图像分割

image.png

 用于自动驾驶的图像分割


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

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


GAN

image.png

 大规模的GAN


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


鉴别器检测图片是否是类,它通常在对象分类数据集上预先训练。

生成器为给定的类生成图像

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

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

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


计算机视觉硬件

 image.png

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

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


视觉界面

 5765ecaa1bc74367a68b485af8a5d9b8.jpg

                                                    面对自己的照片仪表板


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


它用 :

● 面部识别:face_recognition

● 物体检测:densecap,places365


应用

image.png

                                                          视觉问题回答


计算机视觉有很多应用:

● 个人照片组织

● 自动驾驶汽车

● 自动无人机

● 解决验证码/ OCR

● 过滤基于图片的网站/应用程序的图片

● 自动标记应用的图片

● 从视频中提取信息(电视节目,电影)

● 视觉问题解答:结合NLP和计算机视觉

● 艺术:GAN


结论

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

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

迁移学习:它可以使得重新利用预训练的大型神经网络成为可能

嵌入(例如facenet):可以识别许多类而无需对这些类中的任何类进行训练

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:眼动追踪技术,决定VR未来的关键?

下一篇:AI和计算机视觉领域先行者与领先者!CEVA实现四个第一

用户评价
全部评价

热门资源

  • 应用笔画宽度变换...

    应用背景:是盲人辅助系统,城市环境中的机器导航...

  • GAN之根据文本描述...

    一些比较好玩的任务也就应运而生,比如图像修复、...

  • 端到端语音识别时...

    从上世纪 50 年代诞生到 2012 年引入 DNN 后识别效...

  • 人体姿态估计的过...

    人体姿态估计是计算机视觉中一个很基础的问题。从...

  • 谷歌发布TyDi QA语...

    为了鼓励对多语言问答技术的研究,谷歌发布了 TyDi...