机器看世界(一)

简介: 机器看世界(一)

计算机眼里的图像


图像一直以直观著称,一张图像包含的信息很多,所谓一图胜千言,对于人类来说,理解图像很方便,几乎是一眼就能理解图像表达的意思,科学研究表明这是因为人的大脑有一套注意力集中机制,对于图像中的海量信息,人脑能快速地找到其中最重要的信息。但是,计算机该如何去理解?这就涉及到了计算机视觉的知识,本专栏就是来描述计算机视觉。


计算机视觉的起源


1982年《视觉》(Marr,1982)一书的问世,标志着计算机视觉这门学科的诞生。此后,计算机视觉经历了四个阶段,第一个阶段,马尔计算视觉;第二个阶段,主动和目的视觉;第三阶段,多视几何和分层三维重建;第四个阶段,基于学习的视觉。四个阶段算然是依次进行的,但不能说哪一个好,哪一个不好,只是后者比前者更加顺应当时的时代。


马尔计算视觉


马尔计算视觉的主要思想是大脑可以快速完成三维重建,马尔认为,三维重建是可以完全靠计算来实现。他认为图象是物理实体在视网膜上的投影,所以理解了物理信息,就可以理解图像信息。简而言之,其计算机视觉计算理论就是要“挖掘物体的物理属性来完成对应的视觉问题”。其意义完在于,如果简单地从数学角度出发,很多图像具有歧义性。


主动和目的视觉


马尔视觉的泛化性不够理性,很难在工业界实现,可以想象,由计算机对任何物体做三维重建是多么困难。美国的R.Bajcsy教授,提出了主动视觉的概念,主要思想视觉要有目的性,例如在一张百人合影里面,人能轻松地找到自己的位置,或者自己好友的位置,而对其他人“视而不见”。三维重建并非视觉的目的,找到想看到的图像才是根本目的。


多视几何和分层三维重建


随着主动视觉昙花一现,多视几何走向繁荣,多视几何的代表性人物有法国的O.Faugeras、美国的R.Hartely和英国的A.Zisserman等。多视几何的目的是增加三维重建算法的效率和精度,使其能真正落地。三维重建就是从图像中选取合适的图像集,然后对拍摄位置信息进行标定并重建出场景的三维结构。


基于学习的视觉


基于学习的视觉是本书的主要内容,以机器学习为主要手段,包括流形学习和深度学习两大流派。


流形学习时域2000年,但是在后面的研究中发现,多数情况下流形学习的结果还不如传统的降维方法,如主成分分析和线性判别分析等。


深度学习虽然是近几年才火起来的,但是其效果非常好,并且模型层出不穷。深度学习更像是实践科学,和前几个阶段不同,并非有很完善的理论支持。往往在不停的尝试中,模型得到改善。在静态物体识别中,卷积神经网络已经超过人类的准确度。


计算及视觉的难点


计算机视觉的难点有两点:三维重建和鲁棒性。


三维重建之所以对人类来说非常简单,主要是因为人本身就生活在三维世界中,而计算机却是一个二维“生物”。就像我们去构建四维世界的东西,就会觉得非常困难,根本无从下手。对于计算机来说,完成三维世界的图像构建,对于他来说,无疑是降维打击。所以这才需要人类的帮助,让计算机能够识别图像。


鲁棒性的问题简单地说就是先验知识和注意机制问题。对于人来说,即使只是轮廓,或者很模糊的照片,也能大致猜测出图片的内容。但是计算机就不行,他对图像的识别都有很严格的限制,改变颜色,形状。模糊程度等,都会让计算机识别精度下降。这就是鲁棒性问题。


专栏研究方向


在介绍这篇专栏前,我先解释一下,博主之前一直在更新人工智能算法专栏,由于人工智能算法涉及到的面很广,知识面太过复杂,其中,就包含了深度学习,所以,博主打算出一期计算机视觉的专栏,先介绍一下,这样学习人工智能算法会简单很多。博主更新完计算机视觉专栏后,会继续更新人工智能算法。在这里给大家说一声抱歉!


计算机视觉主要研究方向有图像识别,目标检测,图像分割,目标跟踪等。


图像识别,也叫图像分类,可以分为i物种级分类,子类分类和实例级分类,主要模型有VGG,GoogleNet,RestNet等,常用的数据库有Minist手写数字,carfil10,cifar100,ImageNet等。


目标检测,拥有识别物体类别,还需要框出物体位置信息,例如智能相机,还能标注出人脸的位置。传统的,我们可以用OpenCV来解决这类问题,但是召回率低。常用的模型有Fast R-CNN,YOLO和SSD等。


图像分割,计算机视觉中最高层次的理解范畴。目标就是把图像分割成具有相似特性的若干个区域,并使他们对因物体的不同部分或不同的物体。常用的模型是全卷积神经网络。


目标跟踪也可以看成连续的目标检测,目的就是在视频中对物体进行连续跟踪。目标跟踪常用在监控系统中。跟踪算法可以被分为生成式和判别式两大类别。深度学习主要用在判别模式上,著名的模型有SO-DLT和FCNT等。不同于目标检测、物体识别等领域深度学习一家独大的形式,深度学习在目标跟踪方向还未能达成垄断地位,其主要难点在于数据缺失和物体快速移动。


提到深度学习相关的计算机视觉,不得不提到最近流行的风格迁移,以及GAN生成式对抗网络。例如现在使用的ZAO就是运用了此技术。


传统图像处理之OpenCV的妙用


OpenCV(Open Source Computer Vision Library)顾名思义就是开源的计算机视觉库,采用C,C++编写,也提供了Python和Matlab等语言的接口,并且在各大操作平台均可使用。OPenCV不只是一个简单的提供了计算机视觉常用的操作,更对其中关键算法进行了优化和提速,从而可以进行多线程处理。


OpenCV安装


pip install opencv-python


如果下载速度太慢,可以考虑使用镜像:


pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple


OpenCV模块


CUDA-accelerated Computer Vision:CUDA加速模块。
Core functionality:和兴功能模块,包含各种c++操作,接口,矩阵运算。
Image Processing:图像处理模块,包含图像处理四大任务。
Image file reading and writing:图像读取和保存模块。
Video I/O:视频读取和保存模块。
Video Analysis:视频分析模块。
Camera Calibration and 3D Reconstruction:相机校准和3D重建模块。
2D Features Framework:2D功能框架模块。
Objecneural Dection: 目标检测模块。
Deep  Network module:深度学习模块
Machine Learning:机器学习模块。
Clustering and Search in Multi-Dimensional Spaces::多维空间模块。
Computational Photography:计算摄影模块。
Images stitching:图像拼接模块。
G-API framework:图论框架模块。
ArUco Marker Detection:ArUco表i==标记检测模块。
Improved Background-Foreground Segmentation Methods:背景,前景分割模块。
Biologically inspired vision models and derivated tools:基于生物的视觉模型和工具模块。
Custom Calibration Pattern for 3D reconstruction:传统模式三维重建模块。


相关文章
|
3月前
|
自然语言处理 自动驾驶 机器人
机器自动话
机器自动话
25 1
|
9月前
1266:【例9.10】机器分配 2021-01-15
1266:【例9.10】机器分配 2021-01-15
|
10月前
|
机器学习/深度学习 数据采集 算法
机器学习笔记
机器学习笔记
|
11月前
|
存储 计算机视觉
机器看世界(二)
机器看世界(二)
76 0
机器看世界(二)
|
11月前
|
安全 数据安全/隐私保护 Python
Pystinger上线不出网机器
Pystinger上线不出网机器
342 0
|
监控 Shell
|
机器学习/深度学习 算法 数据挖掘
机器为什么能学习|学习笔记
快速学习机器为什么能学习。
106 0
机器为什么能学习|学习笔记
|
机器学习/深度学习 算法 数据挖掘
机器为什么能学习
一、为何机器可以学习? 二、举例 三、机器学习跟数据挖掘的关系 四、总结
机器为什么能学习
|
机器学习/深度学习 人工智能 自然语言处理
机器阅读理解 VS 机器问题生成
机器阅读理解 VS 机器问题生成
|
网络协议 Linux
A机器与B机器网络connect成功后,断电时的网络状态?
A机器与B机器网络connect成功后,断电时的网络状态?
106 0