探索人工智能 | 计算机视觉 让计算机打开新灵之窗
前言
计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。
文章目录
- 前言
- 主题
- 原理
- 常用算法
- CNN
- SVM
- 应用
- 自动驾驶
- 医学影像分析
- 无人机和机器人
- 小结
- 面临挑战
- 总结
主题
计算机视觉既是工程领域,也是科学领域中的一个富有挑战性重要研究领域。计算机视觉是一门综合性的学科,它已经吸引了来自各个学科的研究者参加到对它的研究之中。其中包括计算机科学和工程、信号处理、物理学、应用数学和统计学、神经生理学和认知科学等。
作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取‘信息’的人工智能系统。这里所指的信息指Shannon
定义的,可以用来帮助做一个“决定”的信息。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中“感知”的科学。
原理
要想对计算机视觉有更加深入的了解,首先我们得了解下它的原理。
计算机视觉就是用各种成像系统代替视觉器官作为输入敏感手段,由计算机来代替大脑完成处理和解释。计算机视觉的最终研究目标就是使计算机能象人那样通过视觉观察和理解世界,具有自主适应环境的能力。计算机视觉的原理可以概括为以下几个主要步骤:
- 图像获取:计算机视觉系统首先需要获取图像或视频数据,可以通过摄像头、相机或其他传感器来实现。图像数据可以是数字化的像素点组成的二维数组。
- 图像预处理:获取到原始图像后,需要对图像进行一系列预处理操作以提高图像质量和减少干扰。预处理包括去噪、调整亮度和对比度、图像增强等操作。
- 特征提取:特征提取是计算机视觉的关键步骤,它通过从图像中提取出有用的信息来捕捉图像的重要特征。常见的特征包括边缘、纹理、颜色等。特征提取的方法包括传统的基于特征的方法(如SIFT、SURF、HOG等)和基于深度学习的方法(如卷积神经网络)。
- 目标检测和识别:目标检测是计算机视觉的一个重要任务,它旨在从图像中定位和识别特定的目标物体。目标检测可以使用各种算法和模型,如基于特征的方法(如Haar特征、HOG特征)和基于深度学习的方法(如Faster R-CNN、YOLO)。
- 图像分割:图像分割是将图像分成不同的区域或对象的过程,它能够为图像中的每个对象提供精确的边界。图像分割可以基于阈值的方法、基于区域的方法或基于边缘的方法等。
- 图像分类和识别:图像分类是将图像分成不同的类别,而图像识别是识别出图像中包含的具体物体或场景。这些任务通常使用深度学习模型,如卷积神经网络(CNN),通过训练大量的图像数据来实现。
以上是计算机视觉的基本原理步骤,不同的应用领域和任务可能会有相应的改进和变化。
常用算法
CNN
卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)”。
卷积神经网络仿造生物的视知觉(visual perception)机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化(grid-like topology)特征,例如像素和音频进行学习、有稳定的效果且对数据没有额外的特征工程(feature engineering)要求。
它的结构主要包含输入层、隐含层、输出层三部分:
- 卷积神经网络的输入层可以处理多维数据,常见地,一维卷积神经网络的输入层接收一维或二维数组,其中一维数组通常为时间或频谱采样;二维数组可能包含多个通道;二维卷积神经网络的输入层接收二维或三维数组;三维卷积神经网络的输入层接收四维数组。
- 卷积神经网络的隐含层包含卷积层、池化层和全连接层3类常见构筑,在一些更为现代的算法中可能有Inception模块、残差块(residual block)等复杂构筑。在常见构筑中,卷积层和池化层为卷积神经网络特有。卷积层中的卷积核包含权重系数,而池化层不包含权重系数,因此在文献中,池化层可能不被认为是独立的层。
- 卷积神经网络中输出层的上游通常是全连接层,因此其结构和工作原理与传统前馈神经网络中的输出层相同。对于图像分类问题,输出层使用逻辑函数或归一化指数函数(softmax function)输出分类标签 。在物体识别(object detection)问题中,输出层可设计为输出物体的中心坐标、大小和分类 。在图像语义分割中,输出层直接输出每个像素的分类结果。
SVM
支持向量机(Support Vector Machine,简称SVM)是一种常用的机器学习算法,主要用于分类和回归问题。
SVM的基本思想是通过在特征空间中找到一个最优的超平面来实现数据的分类。这个最优的超平面被选定为离数据点最近的样本点的中心,使得两类数据点到该超平面的距离最大化。这些离超平面最近的样本点被称为支持向量。
SVM的特点和优势包括:
- 适用性广泛:SVM既可以用于二分类问题,也可以扩展到多分类问题。此外,SVM还可以应用于回归问题和异常检测等其他领域。
- 鲁棒性强:SVM适用于高维空间的问题,并且对于训练集以外的新数据有较好的泛化能力,能够处理小样本、非线性、高维度的数据。
- 解决非线性问题:通过使用核函数,SVM能够将非线性问题转化为高维特征空间中的线性问题,从而更好地解决复杂的分类问题。
- 可解释性强:SVM的决策边界只依赖于支持向量,这些支持向量可以解释分类结果,便于理解和解释模型。
然而,SVM也有一些限制和挑战:
- 计算复杂度高:在处理大规模数据集时,SVM的训练时间较长,并且内存消耗较大。
- 参数选择困难:SVM中包含多个参数,如核函数的类型和参数、惩罚系数等,选择合适的参数对算法的性能影响较大,需要通过交叉验证等方法进行调优。
- 对噪声敏感:SVM对噪声和异常点较为敏感,如果数据中存在大量噪声或异常点,可能会影响分类结果的准确性。
总的来说,支持向量机是一种强大的机器学习算法,具有广泛的应用和较好的性能。它在许多领域中都有成功的应用,如图像识别、文本分类、生物信息学等。然而,在实际应用中需要根据具体情况选择适当的参数和技术手段,以达到最佳的分类效果。
应用
人类正在进入信息时代,计算机将越来越广泛地进入几乎所有领域。计算机视觉具有广泛的应用场景,下面列举了一些常见的应用领域:
自动驾驶
计算机视觉在自动驾驶领域发挥着重要作用。通过感知和分析摄像头、激光雷达等传感器获取的图像和数据,自动驾驶系统能够实时识别和理解道路、车辆、行人等信息,以做出准确的决策和操作。至于对自动驾驶的理解,欢迎查看上篇文章【走进人工智能|自动驾驶 开启智能出行新时代】
医学影像分析
计算机视觉可以辅助医生进行医学影像的分析和诊断。它能够自动检测肿瘤、病变、骨折等疾病,并提供定量化的数据,帮助医生作出准确的诊断和治疗计划。
-
影像识别与分类:计算机视觉可以帮助医生在医学影像中自动识别和分类不同的结构和组织,如肿瘤、脑出血、骨折等。通过训练深度学习模型,计算机可以学习从影像中提取特征,并根据这些特征进行自动分类和识别。
-
病变检测与定位:计算机视觉可以自动检测医学影像中的异常病变,并帮助医生准确定位。例如,在乳腺X光片中,计算机可以自动检测和标记潜在的肿块或钙化灶,为医生提供参考和辅助诊断。
-
区域分割与分析:计算机视觉可以将医学影像中的结构进行精确的分割,划定每个区域的边界,如脑部、心脏等。这有助于医生定量化地分析不同区域的形态和功能,并对病变进行更详细的研究和评估。
-
图像配准与对比:计算机视觉可以对不同时间点或不同模态的医学影像进行配准和对比,以便医生观察病变的演变和治疗效果。例如,将同一患者的CT扫描和MRI扫描进行配准,可以更清晰地了解病情。
-
三维重建与可视化:计算机视觉可以将二维医学影像转换为三维模型或体积数据,以进行更全面和直观的观察与分析。这有助于医生进行手术规划、病灶分布的空间分析等。
-
辅助诊断与治疗规划:基于计算机视觉的技术还可以提供辅助诊断和治疗规划的支持。医生可以借助计算机视觉系统的分析结果,作为决策的参考和指导,提高诊断的准确性和治疗的效果。
计算机视觉在医学影像分析中的应用,能够提高诊断的准确性、提供更全面的信息、减少医生的工作负担,并对疾病的早期发现和治疗起到重要的帮助作用。但需要注意的是,计算机视觉技术目前仍然处于发展中,其结果和判断仍需医生的审核和确认。
无人机和机器人
计算机视觉能够帮助无人机和机器人实现环境感知和导航。通过处理图像和视频数据,无人机和机器人可以识别障碍物、定位目标,实现智能导航和任务执行。具体包括以下几个方面:
- 环境感知与导航:无人机和机器人需要了解周围环境,计算机视觉可以帮助它们感知和理解物体、障碍物以及地形等信息。通过分析摄像头、激光雷达等传感器获取的图像和数据,无人机和机器人可以实时识别和定位目标,判断安全路径,并进行精准导航。
- 目标检测与跟踪:计算机视觉可以帮助无人机和机器人检测和跟踪特定目标,如人、车、动物等。通过训练深度学习模型,计算机可以学习并识别目标的特征,并实时跟踪其位置和运动轨迹,从而实现自动追踪、监测和定位。
- 三维建模与地图构建:通过计算机视觉技术,无人机和机器人可以采集环境的图像和数据,并利用这些信息进行三维重建和地图构建。通过将多个视角的图像融合,无人机和机器人可以生成高精度的三维模型和地图,为后续的导航、路径规划和场景分析提供基础。
- 物体抓取与操作:计算机视觉可以帮助无人机和机器人进行物体抓取和操作。通过分析图像中物体的位置、形状和大小等特征,无人机和机器人可以精确地控制机械臂或抓取装置,实现自动化的物体抓取任务,如工业生产线上的零件组装。
- 场景分析与事件检测:计算机视觉可以帮助无人机和机器人进行场景分析和事件检测。通过分析图像和视频数据,无人机和机器人可以识别和分析场景中的各种物体、行为和事件,如火灾、交通事故等,从而及时报警并采取相应的措施。
- 智能交互与协作:计算机视觉还可以帮助无人机和机器人实现智能交互和协作。通过识别和理解人的姿态、表情和手势等信息,无人机和机器人可以与人进行自然的交流和合作,实现更智能、灵活的应用场景。
小结
除上述应用场景外,计算机视觉还涉及视频监控与分析、增强现实、人脸识别、安防监控、智能交通图像搜索、图像生成、虚拟现实等领域。随着技术的不断进步和创新,计算机视觉的应用领域将继续扩展和深化。
面临挑战
计算机视觉正在不断的向上生长,但是也会不断面临新的挑战,毕竟挑战是与进步共存的嘛,以下列举几项主要挑战:
- 复杂场景处理:计算机视觉需要能够理解和分析复杂的场景。这可能涉及到多个对象、遮挡、光照变化、背景干扰等因素。处理这些复杂场景需要更加鲁棒和高效的算法和模型。
- 大规模数据分析和处理:计算机视觉需要处理海量的图像和视频数据。处理这些大规模数据需要高效的算法和存储技术。此外,数据的质量和标注对于计算机视觉任务的准确性至关重要,而获取高质量的标注数据仍然是一个挑战。
- 实时性要求:许多计算机视觉应用需要在实时环境中运行,如自动驾驶、智能监控等。这要求计算机视觉算法具备高速处理和实时决策的能力,以满足实时性的要求。
- 多模态融合:计算机视觉通常与其他传感器或领域知识进行融合。例如,结合语音识别、自然语言处理等技术可以实现图像和文本之间的理解和交互。多模态融合带来了新的挑战,需要处理不同类型数据之间的异构性和复杂性。
- 隐私与安全:计算机视觉应用涉及到大量的个人信息和隐私数据,如人脸识别、行为分析等。因此,保护个人隐私和确保计算机视觉系统的安全性成为一个重要挑战。
- 可解释性和公平性:随着深度学习等技术的发展,计算机视觉模型变得越来越复杂和黑盒化。这导致了模型的可解释性不足,并且可能存在对某些特定群体的不公平性。因此,提高计算机视觉模型的可解释性和公平性是一个重要挑战。
面对这些挑战,研究者们在不断改进算法和模型,提出新的方法和解决方案。例如,深度学习、迁移学习、增强学习等技术的发展为解决这些挑战提供了新的思路和工具。同时,跨学科合作和伦理规范的制定也是解决这些挑战的关键。
总结
总之,计算机视觉行业发展前景广阔,未来将继续保持良好发展态势。随着技术的不断进步,计算机视觉将继续迎接新的挑战,并为人们带来更多的创新和应用。随着人工智能技术的发展,计算机视觉行业将会受到更多的关注,从而推动其发展。
相关文章:

探索人工智能 | 计算机视觉 让计算机打开新灵之窗
前言 计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。 文章目录 前言…...

7.物联网操作系统互斥信号量
1.使用互斥信号量解决信号量导致的优先级反转, 2.使用递归互斥信号量解决互斥信号量导致的死锁。 3.高优先级主函数中多次使用同一信号量的使用,使用递归互斥信号量,但要注意每个信号量的使用要对应一个释放 优先级翻转问题 优先级翻转功能需…...

Vue - Element el-form 表单对象多层嵌套校验
针对el-form的数据源是对象嵌套对象,在进行数据绑定和校验时和单层的对象有一点区别, 具体是下面两部分: 数据源: fromData: {name: ,health: {height: } }1、 给 el-form-item 的 prop设为:prop"health.height&…...

elementUI全屏loading的使用(白屏的解决方案)
官网中有使用方法,但是我实际上手之后会出现白屏,解决办法如下: <el-button type"text" size"small" click"delRow(scope)"> 删除</el-button>loading: false, // loading 动画loadingInstance…...

flutter开发实战-flutter_spinkit实现多种风格进度指示器
flutter开发实战-flutter_spinkit实现多种风格进度指示器 最近开发过程中flutter_spinkit,这个拥有多种种风格加载指示器 一、flutter_spinkit 引入flutter_spinkit # 多种风格的模糊进度指示器flutter_spinkit: ^5.1.0效果示例 const spinkit SpinKitRotatingC…...

检测文本是否由AI生成,GPT、文心一言等均能被检测
背景 目前很多机构推出了ChatGPT等AI文本检测工具,但是准确率主打一个模棱两可,基本和抛硬币没啥区别。 先说结论,我们对比了常见的几款AI检测工具,copyleaks检测相比较而言最准确。 检测文本 AI文本片段1 来源:G…...

【3D机甲】捏造型功能
文章目录 1. 模型选择2. 变形和调整3. 材质和纹理4. 部件修改5. 关节和动作6. 物理模拟 3D机甲捏造型功能通常包括以下小功能: 模型选择:通过从库中选择机甲模型或导入自定义模型来开始设计。 变形和调整:调整机甲的大小、比例、旋转和位置&…...

设计模式之五:单例模式
有些对象只需要有一个,比如线程池、缓存和注册表等。 对比全局变量,其需要在程序开始就创建好对象,如果这个对象比较耗资源,而在后面的执行过程中又一直没有用到,就造成了浪费。 class Singleton {private:static Si…...

MATLAB的设置路径
在主页下的 或者在命令行输入path,命令行会出现所有路径 必须要将某些函数.m文件以及一些类文件包含在路径当中,否则在脚本代码中输入代码时,不会有代码提示...

Hyperledger Fabric 使用 CouchDB 和复杂智能合约开发
前言 在上个实验中,我们已经实现了简单智能合约实现及客户端开发,但该实验中智能合约只有基础的增删改查功能,且其中的数据管理功能与传统 MySQL 比相差甚远。本文将在前面实验的基础上,将 Hyperledger Fabric 的默认数据库支持 …...

这应该是最全的,Fiddler手机App抓包详解,看完还不会来找我...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 什么是抓包&#…...

使用ubuntu-base制作根文件系统
1:ubuntu官网下载最小根文件系统: 放置到电脑的ubuntu中, Mkdir Ubuntu_rootfs Cd Ubuntu_rootfs Sudo tar –zxvf Ubuntu-bash-xxxxxx.tar.gz 2:电脑的ubuntu安装qemu搭建arm模拟系统 将/usr/bin/qemu-arm-static/(64位拷贝…...

springboot-mybatis的分页查询的接口
一、安装依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version> </dependency> 二、代码定义 分页对象类 Data AllArgsConstruct…...

网络音频终端音频编码解码终端
网络对讲终端SV-7011V 网络对讲终端SV-7011V,采用了ARM音频DSP架构,集网络对讲、网络广播、监听等功能于一身,内置麦克风、配置line out、line in、Mic in功能输出接口,适用于学校,机场,广场等场所。 产品…...

cordova 12 编译失败Could not find method compile() for arguments [com....]
问题: Could not find method compile() for arguments [com.tencent.mm.opensdk:wechat-sdk-android-with-mta:] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. 问题原因: 在Cordova项目中&…...

快速开发平台 WebBuilder 9 发布
WebBuilder 是一款强大,全面和高效的应用开发和运行平台。基于浏览器的集成开发环境,智能化的设计,能轻松完成常规桌面应用和面向手机等的移动应用开发。高效、稳定和可扩展的特点,适合复杂企业级应用的运行。跨平台、数据库和浏览…...

GPT-5出世,需5万张H100!英伟达GPU陷短缺风暴
随着人工智能技术的不断突破,自然语言处理领域也掀起了一波又一波的革命。从GPT-3.5的惊艳登场,到紧随其后的GPT-4的惊世震人,人们仿佛置身于科幻电影中,亲历了一场场技术的奇迹。然而,这场奇迹背后却逐渐显现出一道不…...

Jmeter学习和一个关于jmeter获取X-XSRF-TOKEN时的坑
Jmeter学习和一个关于jmeter获取X-XSRF-TOKEN时的坑 现在想对一个接口做性能测试,需要测试它多个线程并发下的调用 1.新建测试计划和线程组 略 2.新建http接口 一个完整的http接口包含请求头和请求,这里就需要两个组件:HTTP request、HT…...

SQL注入总结
0x00 前言 简单的总结一下SQL注入的内容 0x01 常规注入 通过特殊字符测试闭合,通常使用的闭合方式有 " ) ")等 1.判断字段 a union select 1,2,3 #2.执行基础内容 a union select 1,database(),3 #3.查表 a union select 1,group_concat(table_na…...

Java 实现 后端分页
背景说明 在实际开发中,基于数据库表结构进行SQL查询,如果要对结果进行分页,可以借助一些工具类,如:基于Mybatis的 工具类 PageHelper。 但是,有时分页的对象是经过一些业务逻辑处理的列表,如…...
数据结构 | 搜索和排序——排序
目录 一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 五、归并排序 六、快速排序 排序是指将集合中的元素按照某种顺序排序的过程。 一、冒泡排序 冒泡排序多次遍历列表。它比较相邻的元素,将不合顺序的交换。每一轮遍历都将下一个最大值放到正确的位…...

【嵌入式环境下linux内核及驱动学习笔记-(18)LCD驱动框架1-LCD控制原理】
目录 1、LCD显示系统介绍1.1 LCD显示基本原理1.1.1 颜色的显示原理:1.1.2 图像的构成 1.2 LCD接口介绍1.2.1 驱动接口 - MCU接口1.2.2 驱动接口 - RGB接口1.2.3 驱动接口 - LVDS接口1.2.4 驱动接口 - MIPI接口1.2.5 RGB / MIPI / LVDS三种接口方式的区别:…...

【unity】ShaderGraph实现等高线和高程渐变设色
【unity】ShaderGraph实现等高线和高程渐变设色 等高线的实现思路 方法一: 通过Position节点得到顶点的高度(y)值,将高度值除去等高距离取余,设定余数的输出边界(step) 方法二: 将…...

快速修复应用程序中的问题的利器—— Android热修复
热修复技术在Android开发中扮演着重要的角色,它可以帮助开发者在不需要重新发布应用程序的情况下修复已经上线的应用程序中的bug或者添加新的功能。 一、热修复是什么? 热修复(HotFix)是一种在运行时修复应用程序中的问题的技术…...

什么是全局代理,手机怎么设置全局代理
目录 什么是全局代理 全局代理的优缺点 优点 缺点 手机怎么设置全局代理 注意事项 总结 在计算机网络和信息安全中,全局代理是一种常用的技术手段,用于将网络流量通过代理服务器进行转发和处理。本文将介绍什么是全局代理,探讨全局代理…...

技术领先产品ASSAR300一一基于SAR成像的角雷达产品,助力自动泊车
作为自动驾驶应用场景中最先被推广和商业化落地的自动泊车功能,目前是在一些限定环境下实现了功能跑通。面对多种多样的复杂停车场场景,系统需要不断增强感知算法能力或寻求新的传感器技术,来提升对周围环境感知和对障碍物探测的精准度。 传…...

单元测试之 - Spring框架提供的单元/集成测试注解
Spring框架提供了很多注解来辅助完成单元测试和集成测试(备注:这里的集成测试指容器内部的集成测试,非系统间的集成测试),先看看Spring框架提供了哪些注解以及对应的作用。RunWith(SpringRunner.class) / ExtendWith(SpringExtension.class)&…...

深入学习 Redis - 事务、实现原理、指令使用及场景
目录 一、Redis 事务 vs MySQL事务 二、Redis 事务的执行原理 2.1、执行原理 2.2、Redis 事务设计这么简单,为什么不涉及成 MySQL 那样强大呢? 三、Redis 事务的使用 3.1、使用场景 3.2、具体演示 开启/执行/放弃事务 watch 监控 watch 实现原理…...

异步javaScript
在本文中,我们将解释什么是异步编程,为什么我们需要它,并简要讨论 JavaScript 历史上异步函数是怎样被实现的。 预备知识:基本的计算机素养,以及对 JavaScript 基础知识的一定了解,包括函数和事件处理程序…...

看跨境电商世界区域分布,Live Market教你深入参与跨境创业
随着全球化发展带来互联网技术的进步和平台经济的触角伸向全球,跨境电商越来越成为全球贸易的重要组成部分。根据国际数据公司(IDC)的最新数据显示,全球前五大跨境电商平台分别是亚马逊、阿里巴巴、eBay、Wish和京东全球购。这五家…...