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

目录

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 区分出来是生成的还是真实的,此时得到的生成模型,可以用来生成样本数据。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生成地图展示【Python思路】

# 1.导包 import json from pyecharts.charts import Map #导入关于编写地图的包 from pyechart.options import * #全局设置# 2.得到地图对象 map Map()# 3.打开事先准备好的JSON数据文件 f open("D:/Typora 记事本/notebook/Python/Exercise_data/疫情.txt",&…

三个视角解读ChatGPT在教学创新中的应用

第一,我们正处于一个学生使用ChatGPT等AI工具完成作业的时代,传统的教育方法需要适应变化。 教育工作者不应该因为学生利用了先进技术而惩罚他们,相反,应该专注于让学生去挑战超越AI能力范围的任务。这需要我们重新思考教育策略和…

matlab使用教程(25)—常微分方程(ODE)选项

1.ODE 选项摘要 解算 ODE 经常要求微调参数、调整误差容限或向求解器传递附加信息。本主题说明如何指定选项以及每个选项与哪些微分方程求解器兼容。 1.1 选项语法 使用 odeset 函数创建 options 结构体,然后将其作为第四个输入参数传递给求解器。例如&#xff0…

Folyd 多源最短路

目录 简介 实现 代码 关于Floyd的题目 简介 首先我们要知道a到b的最短路是什么 a到b的最短路是从a点到b点的最小距离(花费) 那多源最短路呢就是能求任意a和b,之间的最短路 那么Folyd是多源最短路,也就是求任意a和b&#x…

python实现卡尔曼滤波代码详解

Kalman滤波算法的原理可以参考: 卡尔曼滤波理解 python中filterpy库中实现了各种滤波算法, 其中就包括了kalman滤波算法。 具体实现代码: https://github.com/rlabbe/filterpy/blob/master/filterpy/kalman/kalman_filter.py 本文针对该代码…

视频云存储/安防监控EasyCVR视频汇聚平台接入GB国标设备时,无法显示通道信息该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

三极管NPN、PNP的区别及简单应用

目录 一、NPN、PNP三极管的概念 二、NPN、PNP三极管的区别 三、三极管NPN、PNP的简单应用 一、NPN、PNP三极管的概念 NPN型三极管: 由两块N型半导体和一块P型半导体组成,P型半导体在中间,两块N型半导体在两侧。 三极管是电子电路中最重要的…

elementui table 在浏览器分辨率变化的时候界面异常

异常点: 界面显示不完整,表格卡顿,界面已经刷新完成,但是表格的宽度还在一点一点变化,甚至有无线延伸的情况 思路: 1. 使用doLayout 这里官方文档有说明, 所以我的想法是,监听浏览…

Jetbrains IDE新UI设置前进/后退导航键

背景 2023年6月,Jetbrains在新发布的IDE(Idea、PyCharm等)中开放了新UI选项,我们勾选后重启IDE,便可以使用这一魔性的UI界面了。 但是前进/后退这对常用的导航键却找不到了,以前的设置方式(Vi…

【C++】容器适配器stack、queue以及deque容器

🏖️作者:malloc不出对象 ⛺专栏:C的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、什么是容器适配器1.1 stack的…

Redis 的混合持久化

RDB 相比于 AOF,数据恢复的速度更快,因为是二进制数据,直接加载进内存即可,但是 RDB 的频率不好把握。 如果频率太低,在两次快照期间服务器发生宕机,可能会丢失较多的数据如果频率太高,频繁写入…

研磨设计模式day12迭代器模式

目录 场景 解决方案 解决思路 代码示例 代码改造 Java实现迭代器 迭代器模式的优点 思考 何时选用 场景 大公司收购了一个小公司,大公司的工资系统采用List来记录工资列表,而小公司是采用数组,老板希望通过决策辅助系统来统一查看…

Android studio之GridView使用

目录 效果图:![在这里插入图片描述](https://img-blog.csdnimg.cn/86e4a48a71164dec82613d58b1fbaa1c.jpeg)代码: 效果图: 代码: UserGridviewAdapter package com.example.gridviewpro.Adapter;import android.content.Contex…

202 | 抽象类、接口、内部类

抽象类 abstract 注意项 父类方法需要声明,但是有不确定性,考虑将该方法设计为抽象方法抽象方法没有实现的方法没有方法体(跟接口的区别?)抽象方法的类必须设置为抽象类,实现方法由其子类实现 abstract …

nuxt.js框架使用swiper的5.4.5版本记录,创建广告位幻灯片

nuxt依赖 “nuxt”: “^2.15.8”, “swiper”: “^5.4.5”, “vue”: “^2.7.10”, “vue-awesome-swiper”: “^4.1.1”, 需要完成的效果是 参考地址&#xff1a;https://3.swiper.com.cn/demo/pcSlide/ nuxt代码&#xff1a; <template><div class"page&quo…

ServiceManger Binder的处理流程

陌生知识点如下&#xff1a; BinderProxy&#xff1a;是将Native层的BpBinder对象进行封装后传给Java层使用的Binder对象android_util_binder: Binder在JNI层的相关注册&#xff0c;处理&#xff0c;转换封装接口BpBinder:Binder驱动在Native层的封装。IPCThreadState&#xf…

机器学习的测试和验证(Machine Learning 研习之五)

关于 Machine Learning 研习之三、四&#xff0c;可到秋码记录上浏览。 测试和验证 了解模型对新案例的推广效果的唯一方法是在新案例上进行实际尝试。 一种方法是将模型投入生产并监控其性能。 这很有效&#xff0c;但如果你的模型非常糟糕&#xff0c;你的用户会抱怨——这…

Sentinel 控制台(集群流控管理)

规则配置 要通过 Sentinel 控制台配置集群流控规则&#xff0c;需要对控制台进行改造。我们提供了相应的接口进行适配。 从 Sentinel 1.4.0 开始&#xff0c;我们抽取出了接口用于向远程配置中心推送规则以及拉取规则&#xff1a; DynamicRuleProvider<T>: 拉取规则Dy…

jvm开启远程调试功能;idea远程debug

概述 有时候一些问题本地调试无法复现&#xff0c;这个时候可以开启jvm的远程调试功能 jar包启动 jdk8 java -agentlib:jdwptransportdt_socket,address8787,servery,suspendn -jar xxx.jarjdk11/17 java -agentlib:jdwptransportdt_socket,address*:8787,servery,suspe…

关于ios Universal Links apple-app-site-association文件 Not Found的问题

1. 背景说明 1.1 Universal Links 是什么 Support Universal Links 里面有说到 Universal Links 是什么、注意点、以及如何配置的。简单来说就是 当您支持通用链接时&#xff0c;iOS 用户可以点击指向您网站的链接&#xff0c;并无缝重定向到您安装的应用程序 大白话就是说&am…