共计 2646 个字符,预计需要花费 7 分钟才能阅读完成。
对于人脸识别、opencv 和深度学习
这篇文章次要是 介绍下这三者的关系 还有从几个大的方面 能够说是宏观角度介绍下 OpenCV
前言
没有接触过这些的人可能搞不清楚他们的关系,咱们从人脸识别来说,人脸识别大家都晓得,支付宝刷脸、高铁火车进站刷脸,这些技术让咱们生存更加便当 就比如说以前进站要工作人员一个个看证件检票 当初设置几个闸机刷脸安检就 ok 了 所以说技术的呈现就是为了不便人们的生存
一说到人脸识别,你要辨认的话首先你得从图像中框出人脸才行,然而这其中又有很多问题,就比方进站的时候是间接应用闸机上摄像头的实时画面的截图,因为高矮胖瘦人脸部占比不同,而且脸的朝向角度、站的地位远近都会导致最终拍摄的图像品质产生差别。因而,人脸识别的第一步,是辨认人脸,光这一步就足够难倒不少英雄汉。
前面的辨认过程就更不用说,须要 兼顾准确性和效率 ,辨认不准当然不行,但为了准,辨认太久,让大家排着长队等也是不行的,难以兼顾。
然而! OpenCV 呈现了,当然 OpenCV 可不止可能做人脸识别 人脸识别只是它其中一小部分
字面意思来看 open 是开 凋谢的 开源的 CV 就是计算机视觉 computer vision
计算机视觉方向也是深度学习外面 一个热门方向 计算机视觉这个词听起来高深莫测,艰深点来说就是钻研咱们平时闲着无聊瞎琢磨的图片和视频 其实图像和视频从技术角度来看是一回事。一段视频按时间轴拉开来,其实就是很多张的图像,咱们常说的视频帧,其实就是一张图像的意思。所以,以后计算机视觉最外围钻研对象,就是 图像处理 。
而后 计算机视觉和 opencv 的关系 opencv 是计算机视觉外面 一个很火的工具 而且 opencv 比深度学习呈现得更早
上面次要介绍 OpenCV
(1)什么是 OpenCv
通过下面的介绍 大家都大略晓得 OpenCV 是一个开源的计算机视觉和机器学习库,其余方面来说,它能够运行在 Linux Windows 和 Android 等操作系统上,轻量且高效,是有一系列 C 函数和 C ++ 类形成的,他也提供了 python matlab 等语言的接口 可能实现很多图像处理的算法
(2)计算机视觉软件
计算机视觉方面没有规范的 api 计算机视觉软件大抵能分为上面三种:
①本人钻研代码 然而钻研过程慢,不稳固 还可能与其余库不兼容
②商业化工具 比方Halcon Matlab+Simulink 这些 然而商业化工具 有肯定消耗
③依赖硬件的解决方案 比方视频监控 控制系统 医疗设施 opencv 致力于 成长为简化计算机视觉程序和解决方案的规范 api 一方面 它优化代码进步了执行速度 另一方面 依赖硬件 失去更高的处理速度(IPPICV 减速 英特尔的集成性能基元(IPP)库 opencv3.0 时领有了一个收费的 IPP 库的字库 称为 IPPICV 你用的是英特尔处理器时 会主动调用 IPPICV 放慢解决)
PS: 对于 opencv 和 Halcon
(3)OpenCV 利用场景
①图像分类 或者叫图像识别 辨认图像中物体属于什么类别
人脸识别:人脸方面的利用还是很多的 包含人脸识别 人脸匹配 人脸对齐等等 这也是计算机视觉很火的一个方向 当初广泛应用
②指标检测
先找到指标 再监测指标
有单物体检测和多物体检测
对于指标检测和人脸识别:
人脸检测是指标检测的一种非凡情景。指标检测(通用物体检测)针对的是多类别,人脸检测是二分类,只检测人脸这个类别。
③图像宰割
基于图像检测 检测完当前 把物体宰割进去
次要分为三种:
一般宰割:就比方图像通过宰割后二值化
语义宰割:一般宰割根底上 把属于同一级别的像素 归成一类 比如说 宰割进去不同类别的物体
实例宰割:在语义宰割根底上 再把雷同类别的每个物体宰割进去
④格调迁徙(很像匀色 色彩转移这些)
⑤图像修复
或者叫图像重构 就是修复图像
⑥超分辨率
深度学习外面有超分重建 把低清通过训练变成高清
传统的有一个名字很像的 叫超像素合并和宰割 然而目标不一样(这个更像是分类)
等等等
利用很多 还有最近很火的主动驾驶 医学图像 等等
(4)OpenCV 罕用的库阐明
根底的外围模块:
进阶
OpenCV 非常重视深度学习,专门设置了一个深度学习模块,名字就叫 OpenCV DNN。该模块在 OpenCV 的 1.3 版中首次呈现在新增性能库 opencv_contrib 中,随后在 3.3 版移入外围库 OpenCV core,正式作为 OpenCV 的扛把子之一。
(5)为什么要用 opencv
其一,一些简略的图像处理上 间接用 opencv 的 api 能够做到很多事 比方我的几个专利
其二,一些高级的比方人脸识别等等 也能够间接用 opencv 给你训练好的
其三,深度学习上为什么抉择 opencv 深度学习当初曾经有了很多成熟的框架 最热的应该属工业界最爱的 TensorFlow,和学术界最爱的 Pytorch,这两个框架这么强,抉择 OpenCV 有什么额定的劣势呢 用书里一句话:
《OpenCV 深度学习利用与性能优化实际》总结了四个特点:轻量、起码的内部依赖、不便集成和通用性
简略来说:咱们在框架外面是 实现 模型的 opencv 是 应用 模型的
比方深度学习从 0 开始 收集数据集 搭建模块 训练模型 而后再应用模型进行解决 所以还是挺简单的
然而 opencv 只做最初一步 应用模型 开箱即用!
再比方你做一个人脸识别门禁系统 的大作业 看着很高端简单 然而你用 opencv+ 树莓派
这外面人脸识别调些函数就能解决的问题
opencv 设计常识太多了 下面就是一个宏观的把控 能够找其中一方面利用进行钻研 逐步深刻
打个岔
(6)对于传统图像处理和深度学习
俩都能用 opencv 传统图像处理能够间接用一些简略的 api
而且 opencv 外面目前曾经引入了很多深度学习算法例如 YOLO、SSD 等
①传统图像处理更侧重于算法 用各种矩阵计算来解决图像矩阵 包含各种根底的算法常识 根本的图像处理办法
②深度学习侧重于学习二字 用现成的货色去判断图像的信息,不是单纯的通过算来判断图像,当然在机器学习的过程中也要通过算来解决(例如 convolution、inconvolution 等算子),但咱们在这里了解为学习更加直观。
就比如说:训练时,计算机通过一张张贴了标签的图片数据晓得了哪些图片对象是狗;哪些对象是猫,从而记住了这些对象的特色从而存储在本人的“知识库”中。最初通过学习的知识库对不同的对象进行分类
各有优缺点吧,传统图像处理计算繁琐 目前倒退脚步很慢了
深度学习须要丰盛的数据集还有很强的计算能力 当初很火
文章学习自:
http://t.csdn.cn/KqKYB
http://t.csdn.cn/avsjb
http://t.csdn.cn/lnTg2
http://t.csdn.cn/FsDbT