您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
   
 
     
   
 订阅
  捐助
一文带你读懂计算机视觉
 
作者:雷锋字幕组
222 次浏览     评价:  
 2020-1-6
 
编辑推荐:
本文演示人脸检测,Haar分类器,HOG方向梯度直方图,目标检测,卷积神经网络,希望对您的学习有所帮助。
本文来自微信号AI开发者,由火龙果软件Delores编辑推荐

最近,我已经阅读了很多与计算机视觉相关的资料并做了大量实验,这里介绍了在该领域学习和使用过程中有意思的内容。

自动驾驶的图像分割

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

技术:

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

人脸识别:CNN,Facenet

目标识别:alexnet,inceptionnet,resnet

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

图像分割:rcnn

生成式对抗网络

计算机视觉所需硬件:选择什么,关键是GPU

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

应用:

个人图片整理

自动驾驶汽车

自动无人机

验证码识别/OCR

过滤网站/应用程序上的图片

自动标记应用程序的图片

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

视觉问答

艺术

关注的人:

重要的深度学习创始人:andrew ng,yann lecun,bengio yoshua,hinton joffrey

adam geitgey 主页 有很多计算机视觉方面的有趣文章,比如 链接 有完整的人脸检测/对齐/识别流程

课程:

coursera 网站里的 deep learning 课程

coursera 网站里的 machine learning 课程

相关领域:

深度强化学习:把包含CNN的PPO和DPN看作输入层

与自然语言处理的交互:lstm 2 cnn

人脸检测

人脸检测是在脸部周围标记方框

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

Haar分类器

HOG:方向梯度直方图

HOG是一种用于目标检测的提取特征的新方法:它自2005年开始使用。该方法基于计算图像像素的梯度。然后将这些特征馈送到机器学习算法,例如SVM。这种方法具有比Haar分类器更好的精度。

这种方法的实现在dlib中,就是在face_recognition

MTCNN

一种使用CNNs的变量来检测图像的新方法。精度更高但速度稍慢。

MobileNet

目前用于人脸检测的最好和最快的方法,基于通用的mobile net架构。

目标检测

目标检测可以使用与人脸检测类似的方法来实现

卷积神经网络

最近深度学习的迅速发展,可以看到许多新架构取得了很大成功。 使用许多卷积层的神经网络就是其中之一。一个卷积层利用图像的2D结构在神经网络的下一层中生成有用信息。

目标识别

目标识别是将物体分类为特定类别(如猫,狗,......)的一般性问题。

基于卷积的深度神经网络在目标识别任务上取得了很好的效果。

ILSVR会议一直在ImageNet(一个有许多图片的数据集,包括猫,狗等物品标签)上举办竞赛。

越成功的神经网络使用的层数会越来越多。

ResNet架构是迄今为止对目标进行分类的最好网络架构。

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

为了避免每次都要在这些大数据集上进行重新训练,找到一些其他代替方法是十分重要的,而迁移学习和嵌入embeddings就是这样的方法。

有关resnet的预训练模型

人脸识别

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

历史方法

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

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

Facenet

谷歌研究人员在2015年推出了Facenet它提出了一种识别人脸的方法,而不需要为每个人提供大量的人脸样本。

这种方法是通过拍摄大量脸部的图片数据集来有效工作的。

然后采用现有的计算机视觉架构,例如inception(或resnet),再用计算脸部的嵌入层替换目标识别神经网络的最后一层。

对于数据集中的每个人,(使用启发式方法)选择三张脸(负样本,正样本,第二正样本)并将其馈送到神经网络。这产生了3个嵌入embeddings。利用这3个嵌入,计算triplet loss,这使得正样本与任何其他正样本之间的距离最小化,并且最大化位置样本与任何其他负样本之间的距离。

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

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

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

迁移学习

在自定义数据集上快速重新训练准确的神经网络

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

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

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

图像分割

用于自动驾驶的图像分割

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

该任务与目标检测有关。实现它的其中一种算法是mask r-cnn

GAN

生成式对抗网络,是由ian goodfellow提出,这个网络架构分为2部分:判别器和生成器。

判别器检测一张图片是否属于某个类别,它通常是在目标分类数据集上进行预训练。

生成器为给定的类别生成一张图像。

在学习期间调整生成器的权重,目标是使生成的图像与该类的真实图像尽可能相似,以至于判别器无法区分出来。

计算机视觉所需硬件

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

只需1000美元,就可以组装一台相当好的机器来训练深度学习模型。

计算机视觉的用户界面

ownphotos的face仪表盘

Ownphotos 是一个令人惊叹的用户界面,允许您导入照片并自动计算脸部嵌入,进行目标识别和人脸识别。

它用到的算法:

人脸识别:face_recognition

目标检测:densecap, places365

应用

计算机视觉有很多应用:

个人图片整理

自动驾驶汽车

自动无人机

验证码识别/OCR

过滤网站/应用程序上的图片

自动标记应用程序的图片

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

视觉问答:结合自然语言处理和计算机视觉

艺术:生成式对抗网络

结论

正如我们这里所见,上述视觉领域各方面的实现中诞生了许多新的有趣的方法和应用。

我认为人工智能最有趣的,在各领域尤其在视觉领域中,是学习可再使用的算法。让这些方法适用于处理越来越多的任务而不需要更多算力资源和数据 :

迁移学习 : 使快速重新训练预处理了的大型神经网络成为可能

嵌入 (例如facenet) : 使识别许多类而无需对这些类进行训练成为可能

   
222 次浏览     评价: 订阅 捐助
相关文章

我们该如何设计数据库
数据库设计经验谈
数据库设计过程
数据库编程总结
 
相关文档

数据库性能调优技巧
数据库性能调整
数据库性能优化讲座
数据库系统性能调优系列
相关课程

高性能数据库设计与优化
高级数据库架构师
数据仓库和数据挖掘技术
Hadoop原理、部署与性能调优