显著图(Saliency map)

news2025/1/6 17:43:19

这里写目录标题

  • 概念
  • 应用
  • 算法
    • 传统算法
      • 静态显著性算法:对数光谱(SpectralResidual):
      • 静态显著性算法:细粒方法(FineGrained):
    • 人工智能算法
      • 基于眼动仪预测显著性区域方法
      • 积分梯度方法
  • 对比学习

概念

在计算机视觉中,显著图(Saliency map)是一种突出人们眼睛首先关注的区域的图像。显著图的目标是反映像素对人类视觉系统的重要程度

显著性是图像的突出部分,我们的大脑会特别关注这个部分。例如,大家有没有曾经在看广告的时候被一些特别的内容吸引,为此我们还特意停下来多看了一会儿?这就是广告的显著性,即使让我们可以一眼看到广告,也会被他吸引。

例如,在这个图像中,一个人首先看房子和灯塔,所以在显著图上它们应该突出显示。
在这里插入图片描述
在人工智能和计算机视觉中设计的显著图通常与由生物或自然视觉构建的实际显著图不同。

应用

显著图在各种不同的问题中都有应用。
一些通用应用:

  • 图像和视频压缩:人眼只关注画面中感兴趣的一小块区域。因此,没有必要以统一的质量压缩整个帧。根据作者的说法,使用显著图可以减少具有相同视觉感知的视频的最终尺寸。
  • 图像和视频质量评估:图像或视频质量指标的主要任务是与用户意见高度相关。显著区域的差异更加重要,因此对质量得分的贡献更大。
  • 图像裁剪:它旨在通过扩大或缩小非信息区域来调整图像的大小。因此,重定向算法依赖于显著图的可用性,这些显著图可以准确估计所有显著图像细节。
  • 对象检测和识别:我们可以将其用于图像中最有可能包含对象的最显著区域,而不是将计算复杂的算法应用于整个图像。
  • 图像分割
    显著性估计可以看作是图像分割的一个实例。在计算机视觉中,图像分割是将数字图像划分为多个片段(像素集,也称为超像素)的过程。分割的目标是将图像的表示简化和/或更改为更有意义且更易于分析的东西。图像分割通常用于定位图像中的对象和边界(直线、曲线等)。更准确地说,图像分割是为图像中的每个像素分配标签的过程,使得具有相同标签的像素共享某些特征。

算法

传统算法

在 OpenCV 中实现了三种形式的经典显著性估计算法:

  • 静态显著性:依靠图像特征和统计数据来定位图像的感兴趣区域。
  • 运动显著性:依赖于视频中的运动,由光流检测。移动的物体被认为是突出的。
  • 物体性:物体性反映了图像窗口覆盖物体的可能性。这些算法生成一组边界框,表示对象可能位于图像中的位置。

显著性检测的Saliency模块是在opencv-contrib-python这个库中的。
在这里插入图片描述

pip install opencv-contrib-python

和opencv-python无法共存

在pypi中解释到:

run pip install opencv-python if you need only main modules

run pip install opencv-contrib-python if you need both main and contrib modules
 (check extra modules listing from OpenCV documentation)

opencv-python 是只包含了主要模块的包,opencv-contrib-python包含了主要模块以及扩展模块,扩展模块主要是包含了一些带专利的收费算法(如shift特征检测)以及一些在测试的新的算法(稳定后会合并到主要模块)。
这个链接是关于这个库的官方介绍。

静态显著性算法:对数光谱(SpectralResidual):

该算法分析了输入图像的对数谱,提取了图像在光谱域中的光谱残差,并提出了一种构造显着图的快速方法,该显著图建议了原型物体的位置。
相似性意味着冗余。对于旨在最小化冗余视觉信息的系统,它必须意识到输入刺激的统计相似性。因此,在可以观察到很大形状相似性的不同对数谱中,值得我们注意的是跳出平滑曲线的信息。我们认为,频谱中的统计奇异性可能是图像中出现异常对象的异常区域的原因。
在这里插入图片描述
在这里插入图片描述

静态显著性算法:细粒方法(FineGrained):

人眼的视网膜由神经节细胞组成。有两种类型的神经节细胞,中心和偏心。中心位于黑暗背景包围的明亮区域。偏心对明亮背景包围的黑暗区域做出反应。该算法根据中心上和中心外的差异计算显著性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

人工智能算法

基于眼动仪预测显著性区域方法

除了经典方法外,基于神经网络的方法也很受欢迎:
这里有一个在线链接来调用摄像头实现实时的显著性检测,可以尝试一下,来自于文章: Contextual encoder-decoder network for visual saliency prediction (2020) and on arXiv
其他的一些比较经典的方法包括:

  • TASED-Net:由两个building blocks组成。首先,编码器网络提取低分辨率时空特征,然后下面的预测网络解码空间编码特征,同时聚合所有时间信息。
  • STRA-Net:强调两个基本问题。首先,通过外观和光流耦合整合时空特征,然后通过注意力机制学习多尺度显著性。
  • STAViS:结合了时空视觉和听觉信息。这种方法采用单个网络来学习定位声源并融合两个显著性以获得最终显著性图。
数据集分辨率数量采集人数持续时长眼动仪
CAT20001920×10804000张图片245sEyeLink 1000 (1000Hz)
EyeTrackUAV21280×72043段视频3033sEyeLink 1000 Plus (1000 Hz, binocular)
CrowdFix1280×720434段视频261-3sThe Eyetribe Eyetracker (60 Hz
SAVAM1920×108043段视频5020sSMI iViewXTM Hi-Speed 1250 (500Hz)

积分梯度方法

积分梯度是一种神经网络可解释性方法

现在想要知道某个特征对做预测的重要程度,最简单的想法就是修改它的值或直接拿掉它,看看预测结果变化有多大,变化越大就越重要。看下面这个图像分类任务的例子,在测试图片的任意位置贴一个固定大小的灰色方块,看看方块贴各个位置时对于预测结果的影响,把综合结果显示为热力图(越偏蓝影响越大),如图可见这种方法找到的关键特征是比较合理的。
在这里插入图片描述
这就是积分梯度的大概思路,具体的数学解释,请参照下面这篇文章。

对比学习

每次我们的文章都会通过对比记忆来了解不同方法的原理,侧重点,目的,以达到更好的理解和记忆效果,这次也是一样。

显著性区域检验主要有两大方法类别:传统方法深度学习方法

  • 传统方法包括对数光谱和细粒方法。其主要思路是利用人眼成像的特性,寻找人可能感兴趣的区域,虽然计算速度较快,但是因为是对人眼的注意力情况进行建模,所以并不能算是一种普适性的方法,收到图像本身性质影响较大。
  • 深度学习方法也包括两个方向,神经网络可解释性方向和基于眼动仪的显著性区域预测。前者主要是为了搞清楚神经网络每一层关注图像的重点区域在哪里,属于研究神经网络可解释性的附加成果。而后者意在通过已有的眼动仪数据来通过神经网络预测一张新的图片人们会首先关注哪个区域。

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

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

相关文章

jsp学生宿舍管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 学生宿舍管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使…

【Vue】Vue的简介和特性

一、Vue简介Vue.js可以说是MVVM架构的最佳实践,是一个JavaScript MVVM库,是一套构建用户界面的渐进式前端框架。专注于MVVM中的ViewModel,不仅做到了数据双向绑定,而且也是一款相对比较轻量级的JS 库,API简洁。1. 构建…

Day 15 SpringBoot Condition

1 Condition作用:该功能可以选择性的创建Bean1.1 验证在Spring的IOC容器中有一个User的 Bean,现要求导入Jedis坐标后,加载该Bean,没导入,则不加载。【第一步】创建User对象Repository Conditional(ClassCondition.clas…

【yolov5系列】yolov5-onnxruntime在Ubuntu和RK芯片上运行

前言 这里yolov5的onnx模型的推理,分别在 x64上 和 移动端上运行,前者在自己本地Ubuntu系统上运行,后者在瑞芯微的rk3566上运行。 要完成如上工作我们需要一下步骤: 1 下载onnxruntime编译好的库2 下载opencv库并安装3 下载交叉编…

88E1548P大流量传输插拔网线导致网络不通

1、测试环境硬件:NXP LS1046A ARM64平台 88E1548P 软件:linux 4.19.26 linux 5.10.35环境说明:88E1548P 是一个QSGMII 的 phy 芯片,LS1046A CPU 提供4个GMAC 与 88E1548P 连接,就是4个千兆网口。2、具体现象eth7发包…

OFDM系统架构梳理(1)

1、ofdm简介OFDM是一种特殊的多载波传输方案,它可以被看作是一种调制技术,也可以被当作一种复用技术。多载波传输把数据流分解成若干子比特流,这样每个子数据流将具有低得多的比特速率,用这样的低比特率形成的低速率多状态符号再去…

Spring Batch 批处理-步骤Step与Tasklet

引言 接着上篇:Spring Batch 批处理-执行上下文,了解作业执行上下文后,本篇就来了解一下Spring Batch批处理步骤Step对象与任务处理对象Tasklet,看下Spring Batch 如何运作的。 步骤介绍 一般认为步骤是一个独立功能组件&#…

密码学大咖DavidWong历经数年创作编写而成的这本书

从我开始写本书到图书出版已经有几年了。最初,我打算将本书作为介绍现实世界常用密码原语的图书。但是,这显然是一件不可能完成的事情。任何一个领域都不可能用一本书来总 结清楚。出于这个原因,我必须在知识的深度和广度之间找到平衡。我希望…

3.6双端口RAM和多模块存储器

文章目录关键词正文一、存取周期二、引子三、双端口RAM四、多体并行存储器&#xff08;1&#xff09;高位交叉编址方式&#xff08;2&#xff09;低位交叉编址方式&#xff08;3&#xff09;编址&#xff08;4&#xff09;特性举例<1> 高位交叉编址<2> 低位交叉编址…

word实用技巧:拼音指南用法及注意事项

如果你是一位语文老师&#xff0c;在为学生准备试卷时&#xff0c;时常会用到Word拼音指南功能&#xff1b;如果你是一位职场白领&#xff0c;在为领导准备发言稿、颁奖名单时&#xff0c;以防领导读错音&#xff0c;也会用到Word拼音指南功能对生僻字&#xff0c;多音字进行单…

RabbitMQ 获取消息(Ack Mode)

在服务器端的客户端页面从队列中获取消息是一个危险的动作&#xff0c;生产环境一定要了解业务之后再做操作。 Act Mode Nack message requeue true 接收消息但不做确认&#xff0c;消息会重新加入队列 Automatic ack 获取消息&#xff0c;应答确认&#xff0c;消息不…

C#,编程语言的基本概念与知识点

本文归纳整理C#的一些知识点&#xff0c;便于快速浏览与掌握C#语言的一些基本概念。本文并没有很好地层次与组织&#xff0c;抄了不少&#xff0c;写了不少&#xff0c;想到什么&#xff0c;就写什么。01 类 class类是C#等面向对象编程语言&#xff08;Object-oriented program…

分享152个ASP源码,总有一款适合您

ASP源码 分享152个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 152个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/1fOOs06p6YghEzceqJ4twaA?pwd0p4z 提取码&#x…

Vue-透传Attributes使用解析

透传是vue中一种特性&#xff0c;官方的解释是&#xff1a;“透传 attribute”指的是传递给一个组件&#xff0c;却没有被该组件声明为 props 或 emits 的 attribute 或者 v-on 事件监听器。最常见的例子就是 class、style 和 id。这句话解释过来就是一些不被prop定义的属性直接…

面对层出不穷的问题,延迟开学的原因就是取消延时服务?

面对层出不穷的问题&#xff0c;延迟开学的原因就是取消延时服务&#xff1f; #延迟开学#请问为什么要延迟&#xff1f;疫情期间说要回家可以理解&#xff0c; 这两天都传着说郑州市的中小学、幼儿园推迟开学了&#xff0c;到底有没有这种情况&#xff1f;我们现在又来到了郑…

零基础入行软件测试怎么学习~

随着近几年软件测试行业的异军突起&#xff0c;加之这又是个进入门槛相对较低的行业&#xff0c;导致不少人都想从事这个岗位。那么&#xff0c;许多初学者在一开始都会想知道&#xff0c;零基础入门软件测试要学什么?希望本文可以对大家的软件测试学习之路有一定的指导意义&a…

Vue实现考勤记录删除-自定义右击删除菜单

一、定义和使用oncontextmenu 事件在元素中用户右击鼠标时触发并打开上下文菜单。注意&#xff1a;所有浏览器都支持 oncontextmenu 事件&#xff0c; contextmenu 元素只有 Firefox 浏览器支持。二、语法HTML 中:<element oncontextmenu"myScript">JavaScript…

RabbitMQ面试题

什么是 MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是 message 而已。 还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。 在互联网架构中&#xff0c;MQ 是一种非常常见的…

一文走进多核架构下的内存模

一、走进多核编程CPU 发展早期阶段&#xff0c;性能的提升主要来自于主频的提升和架构的优化&#xff0c;当这条优化途径出现瓶颈后&#xff0c;多核 CPU 开始流行起来。多核心同时执行任务极大地提高了系统整体性能&#xff0c;但也对硬件架构和软件编写提出了更大的挑战。各个…

C语言#define的用法

#define 叫做宏定义命令&#xff0c;它也是C语言预处理命令的一种。所谓宏定义&#xff0c;就是用一个标识符来表示一个字符串&#xff0c;如果在后面的代码中出现了该标识符&#xff0c;那么就全部替换成指定的字符串。我们先通过一个例子来看一下 #define 的用法&#xff1a;…