计算机视觉概述

2023-10-26

关注公众号【CV算法恩仇录】

本文介绍了计算机视觉的主要任务及应用,全文大约 3500 字,阅读时间 10 分钟。

人们或许没有意识到自己的视觉系统是如此的强大。婴儿在出生几个小时后能识别出母亲的容貌;在大雾的天气,学生看见朦胧的身体形态,能辨别出是否是自己的班主任;游客可以根据网上攻略的图片,找到旅游目的地;乒乓球运动员根据对手细微的动作,判别发球的方向。人们接受的信息 70%-80% 来自于视觉,倘若让机器像人一样有视觉系统,机器需要“看懂”图像。

什么是计算机视觉

研究者为了让机器像人一样“看懂”图像,研究了人类视觉系统,该系统包含眼球(接收光信号)、视网膜(光信号转换为电信号,传输到大脑)、大脑皮层(提取电信号中的有效特征,引导人做出反应)。为了让机器模拟人类视觉系统,研究者用摄像头模拟“眼球”获得图像信息;用数字图像处理模拟“视网膜”将模拟图像变成数字图像,让计算机能识别;用计算机视觉模拟“大脑皮层”,设计算法提取图像特征,做识别检测等任务。机器模拟人类视觉系统便是机器视觉,也称计算机视觉(Computer Vision, CV),是在解决机器如何‘看’的问题。

计算机视觉的主要任务及应用

计算机视觉应用非常广泛,有图像分类(Image Classification)、目标检测(Object Detection)、图像分割(Image Segmentation)、人脸检测与识别 (Face Detection and Recognition)、OCR(Optical Character Recognition,光学字符识别)等。

图像分类

图像分类是计算机视觉领域的基础任务,也是应用比较广泛的任务。图像分类用来解决“是什么”的问题,如给定一张图片,用标签描述图片的主要内容。图像分类的典型应用是车牌号码识别、交通灯识别、图像识别等。
在这里插入图片描述

图像分类的主要流程

对于我们人类来说,可以毫不费力分辨猫、狗,是因为我们看见这些物体时,脑中会抽离出它们的基本特征(圆鼓鼓的头、尖尖的耳朵等),基本特征与物体的名称(标签)对应,再看到类似的物体,便可以识别它们。

对于计算机也是一样的,在使用计算机完成图像分类,大致可分为数据集采集、图片预处理、特征提取、分类器训练、模型评估。

图片预处理的目的是为消除图片中无用的信息,恢复有用的信息,更利于后续的特征提取的环节。简单的图像特征提取是提取物体的颜色、物体的轮廓等。分类器训练是将图像的特征与标签进行匹配。当分类器训练好之后,新的图片输入到分类器,查看分类的效果,便是模型评估。

目标检测

目标检测是最常见的计算机应用之一。目标检测用来解决“在哪里”的问题,如输入一张图片,输出待检测目标的类别和所在位置的坐标(矩形框的坐标值表示)。目标检测应用在姿态估计、车辆检测、人脸检测、口罩佩戴检查等。
在这里插入图片描述

目标检测的主要流程

人类在看东西的时候,可以知道物体是什么和物体的位置。例如我们看到桌子上有一副眼镜,可以知道眼镜在桌子的什么位置,也可以知道那是一副眼镜。计算机视觉的初衷是让机器像人一样可以“看到”世界,机器是没有位置的感觉,而是通过矩形窗口在图片上滑动,获得物体的初始位置,再分析该窗口内的特征,是不是此物体。

早期,目标检测算法还没有使用深度学习,一般分为三个阶段:区域选取、特征提取、特征分类。区域选取这一步是为了对物体进行定位,采用了滑动窗口的策略,物体在图像中的位置和大小是变化的,因而需要不同的矩形窗口的比例,再通过矩形窗口在图像中从左到右、从上到下的滑动,可以获得图像上任意位置不同大小的物体。特征提取和特征分类的阶段是找到物体的类别,跟图像分类一致。

图像分割

图像分割是计算机视觉领域的重要研究方向之一,它根据图片的灰度、颜色、结构和纹理等特征将图像分成若干具有相似性质的区域。与目标检测相比较,图像分割更适用于精细的图像识别任务,更加精确的目标定位、以及图像的语义理解任务。图像分割的典型应用是卫星图像分析、自动驾驶,医学图像诊断等。
在这里插入图片描述

图像分割的主要流程

当我们人类在看图像的时候,往往对图像中感兴趣的区域关注大,这个区域通常称为感兴趣区域或是前景,如图3中的人像分割将图片中的前景与其背景分开。算法根据前景和背景的颜色、纹理的不同来分割图像,首先通过分析找到前景和背景的颜色阈值;其次将图像中的每个像素值与阈值比较,分为两类;最后与原图映射获得前景。

常规的图像分割算法有基于阈值的分割、基于边缘检测的分割、区域生长算法、GrabCut 和分水岭算法等。在深度学习中,图像分割是一种端到端的像素级分类任务,就是给定一张图片,对图片上的每一个像素分类,可以按照分类模型的思路来做,不同的是,分割模型的输出是一张分割图。

人脸识别

人脸识别是一类十分热门的计算机技术研究领域,属于生物特征识别技术,可通过人脸图像所携带的生物特征信息来对人进行个体身份识别。从广义上来说,人脸识别包含构建人脸识别系统中所用到的一系列相关技术,包括人脸图像采集、图像处理、人脸定位、身份确认、身份查询等;而狭义的人脸识别则特指通过人脸图像进行身份确认的技术或系统。人脸识别通常也叫人像识别、面部识别等。

在这里插入图片描述

人脸识别的主要流程

对于我们人类来说,要想认出身边的一个人,首先需要睁眼,扭过头,看到他的脸,在看到他的脸之后,我们可能还要将他戴的帽子、眼镜排除,然后就可以根据他的长相在脑子里飞速搜索有没有认识的和这个长相相似的人,最后确定他到底是谁。

对于计算机也是一样的,在使用计算机完成人脸识别的时候,工作流程可分为如下几个步骤:

第一步就是人脸图像采集,也就是 “睁开眼,扭过头”。人脸识别系统将通过各种各样的摄像头采集可见光图像、热成像图像、近红外图像等多种图像,并且还可以有静态、动态等不同情况作为区分。

第二步就是人脸检测,也就是“看到他的脸”。这里可以使用各种人脸检测模型对画面中的人脸进行检测,生成对应的人脸框,之后就可以将人脸框以外的图像排除,专注于对人脸框内图像的探索。

第三步就是数据处理。摄像头所拍摄的人脸可能有多种角度、表情、亮度等,需要通过例如光线补偿、灰度变换、直方图均衡化、归一化、几何校正、滤波以及锐化等方式对人脸图像进行处理,使其更能表现出系统所要的人脸特征。

第四步就是对人脸图片进行特征提取和分类,例如使用深度神经网络挖掘图片的深层特征,并在特定维度上对深层特征进行分类,即可判断这个人是谁。

目标跟踪

目标跟踪是利用图像序列的上下文信息,对目标的外观和运动信息进行建模,从而对目标运动状态进行预测并标定目标位置。目标跟踪是计算机视觉中一个课题,具有重要的理论研究意义和应用价值,在智能视频监控系统、智能人机交互、智能交通和视觉导航系统等方面具有广泛应用。
请添加图片描述

目标跟踪的主要流程

目标跟踪的主要流程可以概括为:通过摄像头捕获图像序列,然后输入计算机计算出目标的位置,再根据目标相关的特征,将每一帧中的同一个目标关联起来从而得到目标运动的完整轨迹。

同一个目标关联起来的常用方法是将目标跟踪问题看作一个二分类问题,把图像分为前景图像(正样本)和背景图像(负样本),利用最适合实际场景的图像特征和最佳的分类方法,将目标从背景区域中区分出来,期间不断地在线更新分类器来估计目标的位置。

生成对抗网络

生成对抗网络(Generative Adversarial Network, GAN)是由Ian Goodefellow等人提出的无监督学习方法,能够建模高维复杂的数据分布,巧妙地利用“对抗”的思想学习生成式模型。GAN 的很多衍生模型已经在一定程度上解决了特定场景中的图像生成问题。此外,诸如文本到图像的生成、图像到图像的生成等应用研究。

在这里插入图片描述

生成对抗网络的基本思想

GAN 由两部分构成,一个是生成模型 G(Generator),主要作用是生成假的样本,另一部分为判别模型 D(Discriminator),主要作用是判断是否为可接受的生成数据。

在训练过程中,生成模型 G 的目标是尽量生成接近真实的样本去欺骗判别模型 D,而判别模型 D 的目标则是尽量把 G 的生成样本和真实样本区分开来,这样 G 和 D 构成一个动态的“博弈”。GAN 评估所生成样本的质量,最开始生成的样本非常容易分辨,后来生成器渐渐的能够生成更为逼真的样本,则需要重新训练判别器,因此称为对抗。最后博弈的结果是,G 生成的样本难以被 D 区分出来是生成的还是真实的,此时得到的生成模型,可以用来生成样本数据。

参考资料
[1] 图来自:https://ai.baidu.com/
[2] 2D 计算机视觉:原理、算法及应用
[3] Python计算机视觉与深度学习实战
[4] 计算机视觉中的深度学习
[5] OpenCV 4机器学习算法原理与编程实战
[6] 自然语言理解与行业知识图谱:概念、方法与工程落地
[7] 生成对抗网络入门指南(第2版)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机视觉概述 的相关文章

随机推荐

  • Chapter Four : Python 序列之列表、元组操作详解合集

    目录 一 列表 1 列表基本操作 定义列表 删除列表 访问列表 遍历列表 2 列表常用方法及操作详解 2 1 添加元素 append extend insert 运算符 运算符 2 2 删除元素 del pop remove clear 2
  • flutter系列集合之App项目集成flutter混合开发详细指南大神必学

    消息队列目前流行的有KafKa RabbitMQ ActiveMQ等 它们的诞生无非不是为了解决消息的分布式消费 完成项目 服务之间的解耦动作 消息队列提供者与消费者之间完全采用异步通信方式 极力的提高了系统的响应能力 从而提高系统的网络请
  • 数据挖掘的种种-节课准备

    数据挖掘 Data Mining DM 又称数据库中的知识发现 Knowledge Discover in Database KDD 数据挖掘概述 数据挖掘 Data Mining DM 又称数据库中的知识发现 Knowledge Disc
  • C# InvokeRequired和Invoke

    一 简介 WinForm 关于InvokeRequired与Invoke Jlins的博客 CSDN博客 invokerequired c 是禁止夸线程直接访问控件 InvokeRequired是为了解决这个问题而产生的 当一个控件的Inv
  • cpu与gpu实现矩阵相乘对比

    1 完成矩阵相乘的并行程序的实现 要求 实现2个矩阵 1024 1024 的相乘 数据类型设置为float 1 使用CPU计算 include
  • 开源的一些基础介绍

    国内 淘宝 百度 南航 网易等 国外 新浪 搜狐 facebook ebay google等 成功后的企业也在不断为开源添加新能量 如 taobao和google等 因为他们不但被开源的魅力深深吸引住同时也愿意通过开源提升自我 现在更多的企
  • Wrappers.<实体>lambdaQuery的使用

    文章目录 MP 配置 Service CURD接口 Mapper CURD接口 insert delete update select 条件构造器 LambdaUpdateWrapper Wrappers lt 实体 gt lambdaUp
  • 机器人教育是一种科学的探究方式

    创新是推动经济社会发展的核心驱动力 当前 我国已经深刻认识到世界新科技革命带来的机遇和挑战 以高度的历史责任感 强烈的忧患意识和宽广的世界眼光 把创新作为推动经济社会发展的驱动力量 机器人技术的进步将会对科学与技术的发展产生重要影响 只有开
  • 算法(C)(两数之和)

    题目 两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 target 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不
  • JSON使用的一些总结

    http sx666 blogspot com 2007 11 json html JSON JavaScript Object Notation 是一种轻量级的数据交换格式 它采用完全独立于语言的文本格式 可以用来在客户端和服务器端传输数
  • innerText和innerHTML区别

    innerText和innerHTML区别 尽管DOM带来了动态修改文档的能力 但对开发人员来说 这还不够 IE4 0为所有的元素引入了两个特性 以更方便的进行文档操作 这两个特性是innerText和innerHTML 其中innerTe
  • Oracle:重复数据去重,只取其中一条(最新时间/其他字段排序规则)数据

    一 问题 一个会话id代表一个聊天室 返回该聊天室最新的一条数据显示在会话列表 二 解决思路 使用row number over 分组排序功能 来解决该问题 1 语法格式 row number over partition by 分组列 o
  • TMOD、SCON、PCON寄存器的配置

    TMOD控制寄存器 TMOD是定时器 计数器模式控制寄存器 它是一个逐位定义的8为寄存器 但只能使用字节寻址 其各位是 由上图我们就可以看出 这个寄存器控制了两个定时器 计数器 寄存器的高四位控制定时器1 低四位控制定时器0 GATE 门控
  • 数据分析毕业设计 二手房数据爬取与分析可视化系统 -python

    1 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求 为了大家能够顺利以及最少的精力通过毕设 学长分享优质毕业设计项
  • Air700E开发板

    文章目录 基础资料 概述 主要功能 外设分布 PinOut 管脚定义 管脚功能说明 固件升级 正常开机模式 下载模式 IO 电平选择 基础资料 Air700E文档中心 概述 EVB Air700E 开发板是合宙通信推出的基于 Air700E
  • 去除VsCode代码前面的小点点

    去除VsCode代码前面的小点点 去除图片中的点 步骤 File gt Preferences gt Setting 搜索RenderWhitespace 将Text Editor下的Editor Render Whitespace改为no
  • peewee-async使用描述

    1 peewee async是一个为peewee ORM 提供由asyncio支持的异步io库 在单独使用peewee连接池连接时 同时使用到了async和await协程 这样操作会阻塞整个进程 因为tornado是单进程 必须数据库也使用
  • 数据库的简介与类型 #CSDN博文精选# #IT技术# #数据库#

    大家好 小C将继续与你们见面 带来精选的CSDN博文 又到周一啦 上周的系统化学习专栏已经结束 我们总共一起学习了20篇文章 这周将开启全新专栏 放假不停学 全栈工程师养成记 在这里 你将收获 将系统化学习理论运用于实践 系统学习IT技术
  • 高通 AR Unity 虚拟按钮

    1 虚拟按钮是图像上的目标 用户可以在现实世界中触摸 以触发一个动作的 热点 现有的图像目标的一个实例的VirtualButton预制拖动到场景中添加虚拟按键 平移和缩放按钮 以匹配所需的位置 并给它一个名字 虚拟的按钮添加这样写入到con
  • 计算机视觉概述

    关注公众号 CV算法恩仇录 本文介绍了计算机视觉的主要任务及应用 全文大约 3500 字 阅读时间 10 分钟 人们或许没有意识到自己的视觉系统是如此的强大 婴儿在出生几个小时后能识别出母亲的容貌 在大雾的天气 学生看见朦胧的身体形态 能辨