什么是计算机视觉,计算机视觉的主要任务及应用

目录

1. 什么是计算机视觉

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

2.1 图像分类

2.1.1 图像分类的主要流程

2.2 目标检测

2.2.1 目标检测的主要流程

2.3 图像分割

2.3.1 图像分割的主要流程

2.4 人脸识别

2.4.1 人脸识别的主要流程

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

2.5 目标跟踪

2.5.1 目标跟踪的主要流程

2.6 生成对抗网络

2.6.1  生成对抗网络的基本思想


1. 什么是计算机视觉

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

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

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

2.1 图像分类

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

图片

图1:车牌号识别

2.1.1 图像分类的主要流程

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

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

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

2.2 目标检测

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

图片

图2:车辆检测

2.2.1 目标检测的主要流程

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

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

2.3 图像分割

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

图片

图3:人像分割

2.3.1 图像分割的主要流程

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

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

2.4 人脸识别

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

图片

图4:人脸识别

2.4.1 人脸识别的主要流程

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

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

  1. 第一步就是人脸图像采集,也就是 “睁开眼,扭过头”。人脸识别系统将通过各种各样的摄像头采集可见光图像、热成像图像、近红外图像等多种图像,并且还可以有静态、动态等不同情况作为区分。
  2. 第二步就是人脸检测,也就是“看到他的脸”。这里可以使用各种人脸检测模型对画面中的人脸进行检测,生成对应的人脸框,之后就可以将人脸框以外的图像排除,专注于对人脸框内图像的探索。
  3. 第三步就是数据处理。摄像头所拍摄的人脸可能有多种角度、表情、亮度等,需要通过例如光线补偿、灰度变换、直方图均衡化、归一化、几何校正、滤波以及锐化等方式对人脸图像进行处理,使其更能表现出系统所要的人脸特征。
  4. 第四步就是对人脸图片进行特征提取和分类,例如使用深度神经网络挖掘图片的深层特征,并在特定维度上对深层特征进行分类,即可判断这个人是谁。

2.5 目标跟踪

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

2.5.1 目标跟踪的主要流程

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

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

2.6 生成对抗网络

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

图片

图5:图像到图像的生成(风格变化)

2.6.1  生成对抗网络的基本思想

GAN 由两部分构成,

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

在训练过程中,生成模型 G 的目标是尽量生成接近真实的样本去欺骗判别模型 D,而判别模型 D 的目标则是尽量把 G 的生成样本和真实样本区分开来,这样 G 和 D 构成一个动态的“博弈”

GAN 评估所生成样本的质量,最开始生成的样本非常容易分辨,后来生成器渐渐的能够生成更为逼真的样本,则需要重新训练判别器,因此称为对抗。最后博弈的结果是,G 生成的样本难以被 D 区分出来是生成的还是真实的,此时得到的生成模型,可以用来生成样本数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/89817.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CUDA小白 - NPP(1) - NppCore

cuda小白 原文链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 先从最基本的开始&#xff0…

VS插件DevExpress CodeRush v23.1 - 支持Visual Studio ARM

DevExpress CodeRush是一个强大的Visual Studio .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验。CodeRush能帮助你以极高的效率创建和维护源代码。Consume-first 申明,强大的模板,智能的选择工具&#xff0…

【力扣】216. 组合总和 III <回溯、回溯剪枝>

【力扣】216. 组合总和 III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字 1 到 9,每个数字最多使用一次,返回所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回…

Hbase文档--架构体系

阿丹: 基础概念了解之后了解目标知识的架构体系,就能事半功倍。 架构体系 关键组件介绍: HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起…

记录一次presto sql执行报错 Error executing query的解决办法

在执行presto sql 时报错截图如下: 查看后台执行报错日志: java.sql.SQLException: Error executing query at com.facebook.presto.jdbc.PrestoStatement.internalExecute(PrestoStatement.java:307) at com.facebook.presto.jdbc.PrestoStatement.exe…

leetcode76. 最小覆盖子串(滑动窗口-java)

滑动窗口 最小覆盖子串滑动窗口代码 上期经典 最小覆盖子串 难度 - 困难 原题链接 - 最小覆盖字串 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t…

学习pytorch5 常用的transforms

常用的transforms 1. ToTensor()2. Normalize() 1. ToTensor() 2. Normalize() # 1. ToTensor 把PIL图片类型数据或ndarry numpy数据类型转换为tensor类型数据 from cv2 import imread from torchvision import transforms from torch.utils.tensorboard import SummaryWrit…

Rust处理JSON

基本操作 Cargo.toml: [package]name "json"version "0.1.0"edition "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]serde { version "1", features …

【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常

ST的传感器驱动与HAL一直成功后,能拿到数据了,但是设备是横屏,系统默认是竖屏。就会出现屏幕自动转动时方向是错的的情况,设备横立展示的是竖屏,设备竖立展示的是横屏。 这个是PCB上设计的传感器贴片方向和横屏不一致…

生成式人工智能的潜在有害影响与未来之路(三)

产品责任法的潜在适用 背景和风险 产品责任是整个二十世纪发展起来的一个法律领域,旨在应对大规模生产的产品可能对社会造成的伤害。这一法律领域侧重于三个主要危害:设计缺陷的产品、制造缺陷的产品和营销缺陷的产品。产品责任法的特点有两个要素&…

Hadoop Yarn 配置多队列的容量调度器

文章目录 配置多队列的容量调度器多队列查看 配置多队列的容量调度器 首先,我们进入 Hadoop 的配置文件目录中($HADOOP_HOME/etc/hadoop); 然后通过编辑容量调度器配置文件 capacity-scheduler.xml 来配置多队列的形式。 默认只…

【业务功能篇73】分布式ID解决方案

业界实现方案 1. 基于UUID2. 基于DB数据库多种模式(自增主键、segment)3. 基于Redis4. 基于ZK、ETCD5. 基于SnowFlake6. 美团Leaf(DB-Segment、zkSnowFlake)7. 百度uid-generator() 1.基于UUID生成唯一ID UUID:UUID长度128bit,32个16进制字符,占用存储空…

springcloud3 GateWay章节-Nacos+gateway(跨域,filter过滤等5

一 常用工具类 1.1 结构 1.2 跨域 Configuration public class CorsConfig {Beanpublic CorsWebFilter corsFilter() {CorsConfiguration config new CorsConfiguration();config.addAllowedMethod("*");config.addAllowedOrigin("*");config.addAllowe…

gma 2 教程(二)数据操作:6.NumPy数组交互

gma 栅格数据集可以通过 ToArray 方法将栅格数据转为NumPy数组,也提供将NumPy数据转换为栅格数据(集)的方法。 读取NumPy数组到数据集 (一)函数简介   (二)示例 保存NumPy数组到文件 &…

Stable Diffusion 系列教程 | 如何获得更高清优质的AI绘画

目录 1 高清修复 1.1 原理 1.2 基本操作 1.3 优缺点 2 UpScale 放大脚本 2.1 原理 2.2 基本操作 2.3 优缺点 3 附加功能放大 3.1 原理 3.2 基本操作 3.3 优缺点 优化出图质量,产出更高清,分辨率更高,更有细节的绘画作品呢&#x…

05-Numpy基础-用于数组的文件输入输出

np.save和np.load是读写磁盘数组数据的两个主要函数。默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的: 如果文件路径末尾没有扩展名.npy,则该扩展名会被自动加上。然后就可以通过np.load读取磁盘上的数组&#xff1…

9.阿里Sentinel哨兵

1.Sentinel Sentinel(哨兵)是由阿里开源的一款流量控制和熔断降级框架,用于保护分布式系统中的应用免受流量涌入、超载和故障的影响。它可以作为微服务架构中的一部分,用于保护服务不被异常流量冲垮,从而提高系统的稳定…

IDEA常用配置之类Tab页多行显示

文章目录 IDEA常用配置之类Tab页多行显示 IDEA常用配置之类Tab页多行显示 默认在Idea中打开类过多,后面会隐藏显示,这里修改配置,将类设置为多行显示,方便查找已经打开的类 修改后显示样式

【C++设计模式】用动画片《少年骇客》(Ben10)来解释策略模式

2023年8月25日&#xff0c;周五上午 今天上午学习设计模式中的策略模式时&#xff0c;发现这个有点像很多卡通片里面的变身器... #include<iostream>//alien hero是外星英雄的意思 //在《少年骇客》中&#xff0c;主角可以通过变身器变成10种外星英雄 class AlienHero{ …

Vue快速入门以及基础标签使用

目录 开始示例el挂载点data数据对象 vue基本标签v-textv-htmlv-on计数器示例实现v-showv-ifv-bind图片切换示例v-forv-on补充v-model axios网络请求axios基本使用vue中使用axios 开始示例 1.首先在html页面中引入vue的生产环境&#xff0c;在body标签中粘上下面代码 <scrip…