当前位置: 首页 > news >正文

计算机视觉之可做什么

1、计算机视觉的应用

  计算机视觉在我们生活中已经有了很广泛的应用,在我们可见、不可见;可感知、不可感知的地方,深深地影响了我们的生活、生产方式。

  • 日常生活:美颜相机、火车站刷脸进站、线上办理业务的身份认证、自动驾驶等等
  • 医学领域:医学影像分析、疾病筛查、病理学图像分析、药物研发、皮肤病检测、运动和康复治疗等等。
  • 工业领域:质量与缺陷检测、自动化生产线和机器人、自动化物流和仓储管理、尺寸测量、几何分析、包装和标签识别、安全与安防监控、3D视觉等等。
  • 农业领域:作物监测与健康分析、精准农业(精准施肥、灌溉)、杂草识别与自动除草、果实成熟度检测与自动采摘、牲畜监测与健康管理、种子质量检测、产量预测等等。
  • 城市治理:智能交通管理、公共安全与安防监控、人群管理与公共秩序维护、智能停车管理、智能建筑与社区管理、智慧零售与城市商业管理等等。
  • 商业领域:智能零售、客户行为分析、人脸支付、个性化广告、虚拟试衣和增强现实购物、商品监控与库存管理、防盗与安全监控、自动化物流与供应链管理、电子商务中的视觉搜索、品牌保护与假货识别、数字人等等。
      计算机视觉在我们社会各方面都有深入的应用,各种名词眼花缭乱,让人应接不暇,看起来让人找不到头绪,这些眼花缭乱的应用都是由计算机视觉一些基础任务组成:图像分类、目标检测、目标分割、图像生成、视觉多模态,这些基础任务最基本的原理都是一样的:数值回归。

2、视觉基础任务

2.1 图像分类

  图像分类是根据图像中的内容把类别标签分配给图像。比如我们生活中的刷脸就有一个步骤是图像分类,即把类别标签分给人脸。
  图像分类是怎么做的呢?图像在计算机中是一堆数据,不同内容的数据不一样,直观经验是直接对比这些数据距离的远近,也就是这些数据的相似程度,但是图像是矩形的,目标不可能正好也是矩形的,也就是说图像中有背景,而且同一类目标的会存在外观上的差别,比如颜色;即使同一个目标的也可能存在柔性变化、姿态变化。比如下图鸟的图片,鸟有正对摄像机,有侧对摄像机的;有的鸟嘴张开了,有的闭着的;有的头歪着,有的正的,有的背景时天空,有的背景时地面,等等这些因素都会影响算法的分类准确性。因此需要能获取能描述目标本质的特征,而不是看起来的特征,比如人有两条腿和两条胳膊,不能因为某个人少了一条就说不是人。

鸟的图片

  因此,首先让要分类的标签内容占据图像的主要部分,尽量减少背景的影响;然后利用一定手段获取图像特征,使得获取的特征具有一定抗干扰能力,如抗光照变化,柔性目标外形变化等等;最后利用分类器将图像划分到某一个类中。

2.2 目标检测

  目标检测是从图像中把所需要的目标定位出来,并给出类别标签。目标检测中包含了两个部分:找到目标位置和确定目标的类别(即分类)。位置一般用矩形框表示,如下图所示。
在这里插入图片描述

目标检测示意

  目标检测是在一张完整的图像中,把占图像比较小的目标识别和定位出来。目标检测里的分类不是整张图的分类,而是图像中某个区域的分类,确定这块区域的标签信息。
  我们人定位识别某个目标是一个非常自然而且似乎是一起完成的,对我们人来说似乎是非常具象的。图像在计算机里是一堆数字,虽然我们知道这些数字表示图像,但是如果把这些数字给我们看,我们是无法知道里面有什么的。那计算机怎么定位识别目标的呢?这些数字经过显示器能让我们区分不同的目标,表明这些数字是有规律的,并且数字之间存在一定的关联,才使得人能够看明白里面的内容。

2.3 目标分割

  目标分割和目标检测有些类似,都是确定某个区域的像素是否属于某个目标类别;不同的是目标分割确定图像哪些像素属于目标,是像素级别的判别,理想情况下,目标分割不包含背景的像素。目标分割中包含了两个部分:确定像素是否属于目标以及目标的类别(即分类)。目标分割相对于目标检测来说,更加定准定位目标。如下图所示,矩形框是目标检测的结果,斑马上透明色是目标分割的结果,分割精细的描述了目标的边界。
在这里插入图片描述

目标分割示意
  我们人的视觉系统很容易检测到目标的边界,也即目标分割,即使目标和背景颜色很接近。目标分割对于计算机来说,并不是一件容易的事情。和检测类似,计算机面对一堆数字,如何判断每个像素的类别是什么,比如目标本身颜色/纹理变化就很丰富、目标外观和背景很接近等等,这些都会对分割造成一定负面的影响。

2.4图像/视频生成

  图像/视频生成是根据一定的输入而生成图像/视频。图像生成相对来说比较简单,应用比较广。可以文生图,也可以图生图。文生图很多人都不陌生,很多人在工作中直接会用到;图生图就是要输入图像,生成另一幅图像,像老图像修复、灰度图像上色、美颜、超分等等都可以看作是图生图。下图是在文生图网站上生成的图,我给的文本是高原草原风光,但是生成的图完全不符合,这也说明视觉算法很多时候也会失灵的。
在这里插入图片描述

文生图
  图像/视频生成相对来说是一个更为复杂和难的问题,特别是视频。生成需要根据输入的内容,生成满足需求的像素值。比如上面的文生图,需要根据给的文本生成对应的图像,这要求模型能理解文本是什么,然后能生成描述的内容,并且画面的内容要符合人类的预期。这需要模型在训练时候不仅见过相关元素,而且学会如何组织这些元素。我们人也无法想象我们没见过的东西,也无法把一些元素组织起来形成我们从未见过的场景。

2.5视觉多模态

  视觉多模态是最近几年才火爆的,输入是视觉和其他的数据(如文本、语音等),不同的模型可以完成不同的任务,如生成、检测、图像描述等等。下图是智谱AI的CogVLM论文里的实验图,给模型一张图,一个prompt,模型根据这两个条件来生成对应的描述。视觉多模态还有一个应用:开放词汇,目标是让模型学习对应目标的图像、词汇,从而让模型能基于新的目标词汇在图像中找出/判断目标。
在这里插入图片描述

图像描述
  视觉多模态主要是对图像的理解,或根据人给的条件(即prompt)对图像进行描述。这个大模型一般都能做的比较好,但是容易出现所谓的幻觉,需要很好的prompt来消除幻觉。

3、视觉算法演变

3.1 黎明前黑暗——深度学习之前的方法

  早期的特征是人通过观察和数学上的推导获取的特征,再利用一些数学上的一些原理定义分类器,从而实现对目标的分类。这时期的算法在实验室条件,也就是严格控制环境条件下能取得不错的效果,但是基本上无法推广使用。这阶段主要方法haar+adaboost、HoG+SVM、LBP、PCA等等。

3.2 黎明——深度学习方法

  我们现在处于黎明时期。这个时期,深度学习方法使得视觉算法获得了一定的社会应用,但是在有些时候也会出错,但是要么人可以忍受,要么用于辅助人的工作。不管怎样,是真的可以用了。这阶段的算法结构基础是卷积神经网络和Transformer。

3.3 未来

  视觉算法未来会是什么样,现在无法预测,但是未来算法的数据基础很可能现在已经完善了,只是尚未到其爆发的时候。

4、总结

  视觉算法已经获得了很多的应用,不仅仅是传统的分类、分割、检测获得应用,多模态大模型也逐步在各种场景有应用。
  但是算法在应用中会遇到很多问题,这些问题归根到底主要是成本问题。因为算法在应用中是一个系统,而不仅仅是算法,系统其他部分也需要占用资源。如果为了追求效果而把算法模型做的很大,需要的资源就很多,这样成本就很高,特别是GPU资源。有的算法集成到低端的端侧芯片里,这些单薄的芯片里,不仅仅要运行算法,还有其他的业务需要运行,导致资源异常紧张,导致这个的主要原因就是成本。因为成本高了,愿意付费的用户就少了,企业可能入不敷出,所以为了保证企业生存,企业需要平衡各方面的因素。

相关文章:

计算机视觉之可做什么

1、计算机视觉的应用 计算机视觉在我们生活中已经有了很广泛的应用,在我们可见、不可见;可感知、不可感知的地方,深深地影响了我们的生活、生产方式。 日常生活:美颜相机、火车站刷脸进站、线上办理业务的身份认证、自动驾驶等等…...

观察者模式的思考

观察者模式由来 观察者模式(Observer Pattern)是一种行为型设计模式,它的起源可以追溯到20世纪90年代初,由设计模式四人帮(Erich Gamma, Richard Helm, Ralph Johnson 和 John Vlissides)在其著作《设计模…...

ORACLE SELECT INTO 赋值为空,抛出 NO DATA FOUND 异常

例子: DECLARE ORDER_NUM VARCHAR2(20); BEGIN SELECT S.ORDER_NUM INTO ORDER_NUM FROM SALES_ORDER S WHERE S.ID122344; DBMS_OUTPUT.PUT_LINE(单号: || ORDER_NUM); END; 在查询结果为空的情况下,以上代码会报错:未找到任何数据 解决方…...

GPT提示词

参考 提示词大全: GPT提示词大全(中英文双语)持续更新 提示词.com...

Redis协议详解及其异步应用

目录 一、Redis Pipeline(管道)概述优点使用场景工作原理Pipeline 的基本操作步骤C 示例(使用 [hiredis](https://github.com/redis/hiredis) 库) 二、Redis 事务概述事务的前提事务特征(ACID 分析)WATCH 命…...

LeetCode213:打家劫舍II

题目链接&#xff1a;213. 打家劫舍 II - 力扣&#xff08;LeetCode&#xff09; 代码如下 class Solution { public:int rob(vector<int>& nums) {if(nums.size() 0) return 0;if(nums.size() 1) return nums[0];if(nums.size() 2) return max(nums[0…...

linux一二三章那些是重点呢

第一章 静态库动态库的区别 什么是库 库文件是计算机上的一类文件&#xff0c;可以简单的把库文件看成一种代码仓库&#xff0c;它提供给使用者一些可以直接 拿来用的变量、函数或类。 如何制作 静态动态库 静态库&#xff1a; GCC 进行链接时&#xff0c;会把静态库中代码打…...

C语言中的程序入口:超越main函数的探索

在C语言中&#xff0c;尽管main函数是标准程序的默认入口点&#xff0c;但借助编译器特性和链接器选项&#xff0c;我们可以指定其他函数作为程序的入口。GCC编译器通过-e选项&#xff0c;允许我们将任何符合签名的函数作为程序的入口。这一特性可以用于特定的实验需求、特定系…...

《面试之MQ篇》

《面试之MQ篇》 1. 为什么要使用MQ 首先,面试官问的第一个问题或者说是逼问的一个问题&#xff1a;“为什么要使用MQ”其实面试官问这个问题就是想考察你MQ的特性&#xff0c;这个时候呢&#xff0c;我们必须要答出三点&#xff1a;解耦、异步、削峰。 1. 解耦 1. 传统系统…...

Git 分支操作-开发规范

一、背景 在实际开发中&#xff0c;一般在主分支的基础上单独创建一个新的分支进行开发&#xff0c;最后合并到master分支&#xff0c;而不是直接在master分支进行开发。 二、新建分支 1、初始状态&#xff0c;local为本地分支&#xff0c;remote为远程分支 2、单击 “Remot…...

JSONArray根据指定字段去重

JSONArray dataList new JSONArray();这儿省略dataList 加数据的过程 dataList new JSONArray(dataList.stream().distinct().collect(Collectors.toList())); Set<String> timestamps new HashSet<>();根据时间字段去重 dataList dataList.stream().map(obj -…...

线程有哪几种状态? 分别说明从一种状态到另一种状态转变有哪些方式?

在 Java 中&#xff0c;线程的生命周期管理通过不同的状态来跟踪。一个线程在其生命周期中可以处于多种状态&#xff0c;不同的状态之间会通过特定的事件发生转变。以下是 Java 线程的几种状态及其之间的转移方式&#xff1a; 1. 线程的状态 1.1 NEW&#xff08;新建状态&…...

自注意力机制self-attention中的KV 缓存

在自注意力机制中&#xff0c;KV 缓存&#xff08;Key-Value Caching&#xff09;主要用于加速模型在推理阶段的计算&#xff0c;尤其是在处理长序列或者生成任务&#xff08;如文本生成&#xff09;时&#xff0c;这种缓存机制可以显著提高效率。 1. KV 缓存的背景 在 Trans…...

前端库--nanoid(轻量级的uuid)

文章目录 定义&#xff1a;生成方式&#xff1a;现实使用:NanoID 只有 108 个字节那么大NanoID更安全NanoID它既快速又紧凑 使用步骤1.安装nanoid包2.引入使用3.使用4.自定义字母 定义&#xff1a; UUID 是 通用唯一识别码&#xff08;Universally Unique Identifier&#xff…...

计算机基础-什么是网络端口?

网络端口可以想象成一个大型公寓楼的邮箱。每个公寓楼&#xff08;这里指的是一个计算机或服务器&#xff09;有很多个邮箱&#xff08;即网络端口&#xff09;&#xff0c;每个邮箱都有一个独一无二的编号&#xff08;端口号&#xff09;。当一封信&#xff08;网络数据包&…...

力扣动态规划基础版(斐波那契类型)

70. 爬楼梯https://leetcode.cn/problems/climbing-stairs/ 70.爬楼梯 方法一 动态规划 考虑转移方程和边界条件&#xff1a; f&#xff08;x&#xff09; f&#xff08;x -1&#xff09; f&#xff08;x - 2&#xff09;;f&#xff08;1&#xff09; 1&#xff1b;f&…...

Java重修笔记 InetAddress 类和 Socket 类

InetAddress 类相关方法 1. 获取本机 InetAddress 对象&#xff1a;getLocalHost public static InetAddress getLocalHost() throws UnknownHostException 返回值&#xff1a;本地主机的名字和地址 异常&#xff1a;UnknownHostException - 如果本地主机名无法解析成地址 2…...

秋招突击——8/6——万得数据面试总结

文章目录 引言正文面经整理一1、讲一下java的多态&#xff0c;重载&#xff0c;重写的概念&#xff0c;区别2、说一下Java的数组&#xff0c;链表的结构&#xff0c;优缺点3、创建java线程的方式有哪些&#xff0c;具体说说4、创建线程池呢、每个参数的意义5、通过那几种方式保…...

STM32定时器

目录 STM32定时器概述 STM32基本定时器 基本定时器的功能 STM32基本定时器的寄存器 STM32通用定时器 STM32定时器HAL库函数 STM32定时器概述 从本质上讲定时器就是“数字电路”课程中学过的计数器&#xff08;Counter&#xff09;&#xff0c;它像“闹钟”一样忠实地为处…...

第七课 Vue中的v-for遍历指令

Vue中的v-for遍历指令 v-for用于对象遍历&#xff08;数组/JSON&#xff09;&#xff0c;渲染数据列表 基础示例&#xff1a; <div id"app"><ul><li v-for"val in arr">{{val}}</li></ul></div><script>new V…...

【NTN 卫星通信】卫星通信的专利

1 概述 好久没有看书了&#xff0c;最近买了本讲低轨卫星专利的书&#xff0c;也可以说是一个分析报告。推荐给喜欢的朋友。 2 书籍截图 图1 封面 图2 波音低轨卫星专利演进 图3 低轨卫星关键技术专利发展阶段 图4 第一页 3 参考文献 产业专利分析报告–低轨卫星通信技术...

vue3 element table 插槽外的数据更新,插槽内的数据未更新。

在使用element table组件时候&#xff0c;有时候需要对table内部的header插槽进行单独的列的数据操作&#xff0c;比如在列头增加一个筛选功能&#xff0c;对指定范围的值进行一个筛选&#xff0c;需要对input的值进行v-model的绑定&#xff0c;对绑定的值进行清空时候&#xf…...

飞凌嵌入式FET527N-C核心板已适配OpenHarmony4.1

近期&#xff0c;飞凌嵌入式为FET527N-C核心板适配了OpenHarmony4.1系统——进一步提升了核心板的兼容性、稳定性和安全性。 OpenHarmony4.1在应用开发方面展现了全新的开放能力&#xff0c;以更加清晰的逻辑和场景化视角提供给开发者丰富的API接口&#xff0c;应用开发能力得…...

CVPR 2024最佳论文候选-pixelSplat论文解读

目录 一、概述 二、相关工作 1、单场景下的视角合成 2、基于先验的三维重建和视图合成 3、多视图几何测量 三、3DGS的缺点 1、容易陷入最小值 2、需要大量输入图像 3、尺度模糊性 四、pixelSplat 1、解决尺度模糊性&#xff08;深度信息生成&#xff09; 2、编码器…...

在Android中如何切割一张图片中的不规则“消息体/图片/表情包等等”?

在Android应用中&#xff0c;判断一张图片中“消息体”的大小&#xff0c;可以通过图像处理技术来实现。主要的步骤包括&#xff1a;将图像转换为灰度图&#xff0c;进行二值化处理&#xff0c;接着使用轮廓检测或边缘检测来识别消息体的边界&#xff0c;最后计算消息体的大小。…...

Jenkins+Ant+Jmeter接口自动化集成测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、Jenkins安装配置 1、安装配置JDK1.6环境变量&#xff1b; 2、下载jenkins.war&#xff0c;放入C:\jenkins目录下&#xff0c;目录位置随意&#xff1b; J…...

JavaSE——集合4:List接口实现类—LinkedList

目录 一、LinkedList的全面说明 二、LinkedList的底层操作机制 (一)LinkedList添加结点源码 (二)LinkedList删除结点源码 三、LinkedList常用方法 四、ArrayList与LinkedList的选择 一、LinkedList的全面说明 LinkedList底层实现了双向链表和双端队列的特点可以添加任意…...

FPGA图像处理之三行缓存

文章目录 一、前言二、FPGA实现三行缓存的架构三、Verilog代码实现四、仿真验证五、输入图像数据进行仿真验证 一、前言 在 FPGA 做图像处理时&#xff0c;行缓存是一个非常重要的一个步骤&#xff0c;因为图像输入还有输出都是一行一行进行的&#xff0c;即处理完一行后再处理…...

10月15日,每日信息差

第一、《哈利・波特与魔法石》在中国内地总票房突破 3 亿元&#xff0c;包括 2002 年首映的 5600 万&#xff0c;2020 年重映的 1.923 亿&#xff0c;以及 2024 年重映的 5170 万。 第二、全国铁路实施新货物列车运行图&#xff0c;增开城际班列至 131 列&#xff0c;多式联运…...

4G、5G通信中,“网络侧“含义

在5G通信中&#xff0c;"网络侧"这个术语可以指代不同的网络元素&#xff0c;具体取决于上下文。通常&#xff0c;网络侧可以包括以下两个主要部分&#xff1a; 基站&#xff08;gNB&#xff09;&#xff1a; 基站是无线接入网&#xff08;RAN&#xff09;的一部分&a…...