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

MobileSal:极其高效的RGB-D显著性物体检测模型

摘要

问题一:什么叫做MobileSal?

MobileSal 是指一种用于移动设备上的显著性检测(Saliency Detection)方法,通常是针对在资源受限的环境(如智能手机)上运行的视觉模型。

问题二:什么叫做隐式恢复技术?

在图像去噪、图像修复或图像超分辨率等任务中,隐式恢复技术指的是利用模型(如深度神经网络)自动学习从损坏或低分辨率图像中恢复细节的过程。与传统的显式恢复方法不同,隐式恢复往往通过学习到的特征和模式来推断缺失的信息,而无需明确地计算每个恢复步骤。

问题三:什么叫做紧凑金字塔细化(CPR)操作?

紧凑金字塔细化(Compact Pyramid Refinement, CPR) 操作通常是指在图像处理、计算机视觉或深度学习中,用于多尺度特征提取和细化的技术。它结合了金字塔结构细化操作,以提高模型在不同尺度下的性能,尤其是在目标检测、图像分割等任务中。

金字塔结构:金字塔结构是一种多尺度处理方式,通常包括空间金字塔图像金字塔。它通过对图像进行不同层次的缩放或多尺度处理,使得模型能够在不同分辨率下提取特征。金字塔结构的关键优势在于能够捕捉到大范围的上下文信息以及细节信息。

细化:细化操作指的是在图像或特征的多尺度表示中,通过某些方法增强或优化重要的信息,以提升细节和结构的准确性。细化通常用于后处理阶段,目的是提升模型的精度和准确性,修正模糊或不清晰的部分。

紧凑:意味着该方法在金字塔结构的基础上进行优化,使得不同尺度之间的特征信息更加紧密和有效,避免冗余。

一 介绍

问题1:什么叫做深度信息?

深度信息(Depth Information):是指图像中每个像素到观察者(或摄像头)之间的距离。深度图像通常通过深度摄像头(如Kinect、LiDAR等)采集,能够提供关于场景中物体相对位置和空间关系的信息。

问题二:什么叫做MobileNets网络和ShuffleNets?

MobileNets:MobileNets 是由 Google 提出的一个轻量级卷积神经网络架构,专门优化了在移动设备上的计算效率。MobileNets 的关键创新是使用 深度可分离卷积(Depthwise Separable Convolutions)来替代标准的卷积操作,从而减少计算量和参数量。

关键特点:

  • 深度可分离卷积:标准卷积操作是对输入特征图与卷积核进行全局运算,而深度可分离卷积将卷积操作分为两步:

    1. 深度卷积(Depthwise Convolution):每个输入通道独立进行卷积,计算量大大减少。
    2. 逐点卷积(Pointwise Convolution):使用 1×11 \times 11×1 卷积对深度卷积后的输出进行合并,这样可以将信息从各个通道融合到一起。
  • 宽度乘子(Width Multiplier):MobileNets 引入了一个宽度乘子 α\alphaα,用来控制网络的宽度。通过调整这个乘子,可以在精度和计算效率之间进行平衡。

  • 分辨率乘子(Resolution Multiplier):MobileNets 还使用了分辨率乘子 β\betaβ,可以改变输入图像的分辨率,进一步减少计算量。

ShuffleNet:ShuffleNet 是由华为提出的另一种高效神经网络架构,旨在通过更巧妙的设计进一步提高计算效率。ShuffleNet 的一个关键特点是引入了 通道洗牌(Channel Shuffle) 操作。

关键特点:

  • 组卷积(Group Convolutions):与标准卷积不同,组卷积将输入特征图分成若干组,并在每组内部进行卷积,从而减少了卷积操作的计算量。组卷积通过限制每次卷积操作的输入通道数来减少计算量。

  • 通道洗牌(Channel Shuffle):在组卷积之后,通道洗牌操作打乱(shuffle)不同组之间的通道,使得各组之间的特征能够融合。这一操作显著提高了组卷积的表现,同时保持了计算量较低。

  • 减少计算量:ShuffleNet 通过组卷积和通道洗牌,显著减少了计算量,同时保证了特征信息能够充分流动。

二 相关工作

2.1 显著性物体检测

2.2 RGB-D显著性物体检测

2.3 高效的骨干网络

问题一:什么叫做MobileNetV2

MobileNetV2 是一种轻量级的卷积神经网络(CNN)架构,主要用于移动端和嵌入式设备上的计算机视觉任务。它的设计旨在提高效率和降低计算开销,同时尽量保持较高的准确率。MobileNetV2 相比于 MobileNetV1 引入了一些新颖的技术来优化网络结构,尤其是以下几个关键创新:

  1. 倒残差结构(Inverted Residuals):这是 MobileNetV2 的一个核心创新。它通过使用“倒残差块”,将传统的卷积结构反转,使得通道数在卷积操作中先扩展再压缩,从而提高了计算效率。

  2. 深度可分离卷积(Depthwise Separable Convolution):类似于 MobileNetV1,MobileNetV2 也使用深度可分离卷积,减少了计算量。深度可分离卷积通过将标准卷积拆分为两步:深度卷积(对每个输入通道单独卷积)和逐点卷积(1x1卷积)来减少计算量和参数量。

  3. 线性瓶颈(Linear Bottlenecks):该结构通过在网络末端使用线性激活函数,而不是传统的ReLU激活函数,来防止信息丢失,改善了模型的表达能力。

MobileNetV2 以其高效的计算和较小的模型大小,成为了许多移动设备、嵌入式设备和资源受限的环境中的常用模型。

三 方法

3.1 概述

问题一: 什么叫做RGB信息流和深度信息流?

在你的模型中,你分别使用 RGB 信息流和深度信息流进行特征提取。也就是说,你的模型会分别处理两种不同的数据源:一种是图像的 RGB(红绿蓝)颜色信息,另一种是深度图(即每个像素的深度值)。

  • RGB 信息流:这部分处理传统的颜色图像,提取颜色和纹理等特征。
  • 深度信息流:这部分则处理深度图像,深度图通常用于表示物体的距离或深度信息,它可以帮助模型理解物体的空间结构和几何形状。

问题二:什么叫做倒置残差块?

倒置残差块(Inverted Residual Block)是一种在神经网络架构中常见的模块,特别是在轻量级卷积神经网络(如 MobileNetV2)中广泛使用。它的核心思想是通过特定的结构设计来提高计算效率,减少模型的参数量,同时保持较高的表现。

倒置残差块的设计大致可以分为以下几个关键步骤:

  • 深度可分卷积(Depthwise Separable Convolution)

    • 与常规卷积不同,深度可分卷积将卷积操作分为两步:首先对每个输入通道独立进行卷积,然后将结果进行逐点卷积(1x1卷积)。这种方式显著减少了计算量。
  • 倒置结构

    • 在倒置残差块中,首先用一个 扩展卷积(通常是 1x1 卷积)来增加通道数,从而“扩展”特征空间。然后是深度可分卷积,用来对每个通道独立处理特征。最后,再通过一个 1x1 卷积将通道数压缩回原来的规模。
    • 这个扩展和压缩的过程就像“倒置”了传统卷积块的结构。通常,传统卷积是先压缩再扩展,而倒置残差块则是先扩展再压缩。
  • 残差连接

    • 重要的一点是,倒置残差块通过残差连接(skip connection)将输入和输出进行相加,这样可以更好地进行信息流的传递,避免梯度消失或爆炸的情况,帮助更深的网络训练。

3.2 RGB特征和深度特征的跨模态融合

3.3 隐式深度恢复

问题一:什么叫做SSIM 指标?

这是一个关于隐式深度恢复(IDR)损失函数的公式。其中,表示 IDR 的损失值,它通过 1 减去预测深度图和真实深度图之间的结构相似性(SSIM)来计算。在深度学习处理深度图相关任务时,通常希望预测的深度图与真实深度图尽可能相似。这里采用 1 减去 SSIM 的方式,是因为 SSIM 值越接近 1 表示两张图越相似,那么 1 减去 SSIM 得到的损失值就越小,意味着预测图和真实图越接近,符合损失函数越小模型性能越好的目标设定。

3.4 紧凑金字塔细化

CPR 模块将多层次的深层特征有效地融合起来。“D-Conv” 代表着深度可分离卷积。

四 实验

4.1 实验环境及设置

骨干网络:MobileNetV2 

数据集:NJU2K (1985)、DUTLF-D (1200)、NLPR (1000)、STERE (1000)、  SSD (80)和 SIP(927)

训练数据集:NJU2K (1500)、NLPR (700)

测试数据集:NJU2K(485)、NLPR   (300)  除了DUTLE-D数据集,其他数据集直接用于测试

在 DUTLF-D [51] 数据集上,我们按照 [51],  [80],使用其中的 800 张图片用作训练,400 张图片用做测试。

评估指标:F-measure  Fβ,平均绝对误差(MAE)

4.2 与著名方法的比较

量化比较    定性比较    CPU推断时间

4.3 消融研究

不同的RGB-D融合策略    为 RGB-D 融合节省了时间  深度信息恢复质量   IDR 损失函数的选择

损失函数中的 λ 常数    深度信息和 CMF 模块  CMF 模块中的初始 RGB-D 融合操作   CMF 模块的混合策略  紧凑金字塔细化  混合损失函数

4.4 IDR在其他任务中的应用

五 总结

相关文章:

MobileSal:极其高效的RGB-D显著性物体检测模型

摘要 问题一:什么叫做MobileSal? MobileSal 是指一种用于移动设备上的显著性检测(Saliency Detection)方法,通常是针对在资源受限的环境(如智能手机)上运行的视觉模型。 问题二:什…...

【个人总结】1. 开发基础 工作三年的嵌入式常见知识点梳理及开发技术要点(欢迎指正、补充)

【个人总结】1. 开发基础 工作三年的嵌入式常见知识点梳理及开发技术要点(欢迎指正、补充) 工作快三年以来 分别进行了嵌入式MCU及外设开发、RTOS、传感器、文件系统及USB、Linux、GUI、通讯协议、毫米波雷达、少量的DSP和物联网开发。 特此总结&#x…...

硬核技术组合!用 DeepSeek R1、Ollama、Docker、RAGFlow 打造专属本地知识库

文章目录 一、引言二、安装Ollama部署DeepSeekR1三、安装Docker四、安装使用RAGFlow4.1 系统架构4.2 部署流程4.3 使用RAGFlow4.4 在RAGFlow中新增模型4.5 创建知识库4.6 创建私人助理使用RGA 一、引言 本地部署DeepSeek R1 Ollama RAGFlow构建个人知识库,通过将…...

MySQL官网驱动下载(jar包驱动和ODBC驱动)【详细教程】

1.打开MySQL的官网,选择下载(Download) MySQL[这里是图片001]https://www.mysql.com/cn/ 2.往下划点击MySQL Community(GPL)Downloads 3.要下载MySQL的jar包的选择Connector/J 4.进入后,根据自己的需求选择相应的版本 5.下载完成后,进行解压…...

idea 2019.3常用插件

idea 2019.3常用插件 文档 idea 2019.3常用插件idea 2023.3.7常用插件 idea 2019.3常用插件 插件名称插件版本说明1AceJump3.5.9AceJump允许您快速将插入符号导航到编辑器中可见的任何位置。只需按“ctrl;”,键入一个字符,然后在Ace Jump…...

对CSS了解哪些?

CSS(Cascading Style Sheets,层叠样式表)是用来描述HTML文档外观和布局的语言。以下是对CSS的常见了解范围: 1. CSS 基础 选择器:如通用选择器 (*)、类型选择器、类选择器 (.class)、ID选择器 (#id)、后代选择器、伪类…...

TikTok账户安全指南:如何取消两步验证?

TikTok账户安全指南:如何取消两步验证? 在这个数字化的时代,保护我们的在线账户安全变得尤为重要。TikTok,作为全球流行的社交媒体平台,其账户安全更是不容忽视。两步验证作为一种增强账户安全性的措施,虽…...

从零到一:构建现代 React 应用的完整指南

1. create-react-app (CRA) 简介: create-react-app 是官方推荐的 React 项目脚手架工具,提供了一个开箱即用的开发环境,帮助开发者快速启动 React 应用。它会自动配置 Webpack、Babel、ESLint 等工具,让你专注于开发而不需要手动配置工具链。 特点: 零配置:CRA 自动配…...

【Python爬虫(26)】Python爬虫进阶:数据清洗与预处理的魔法秘籍

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…...

机器学习数学基础:28.卡方检验

卡方检验教程 一、引言 在统计学的广阔领域中,卡方检验(Chi - Square Test)宛如一把锐利的手术刀,能够精准剖析数据背后隐藏的关系与模式。它主要用于两大核心任务:一是深入分析两个及两个以上分类变量之间错综复杂的…...

【工具插件类教学】实现运行时2D物体交互的利器Runtime2DTransformInteractor

目录 ​编辑 1. 插件核心功能 1.1 基础变换操作 1.2 高级特性 2. 安装与配置 2.1 导入插件 2.2 配置控制器参数 2.3 为物体添加交互功能 3. 使用示例 3.1 基础操作演示 3.2 多选与批量操作 3.3 自定义光标与外观 4. 高级配置技巧 4.1 动态调整包围框控件尺寸 4.…...

回调处理器

文章目录 什么是回调处理器回调处理器的工作流程回调处理器的使用自定义链组件中的回调 内置回调处理器自定义回调处理器 在编程领域中,回调是一个非常重要的概念。简而言之,回调是一种特殊的函数或方法,它可以被传递给另一个函数作为参数&am…...

Redis-03高级篇中-多级缓存:

说明: 分布式缓存和多级缓存的视频,与springcloud高级篇redis的一模一样。这里就不在重复学习了,如果后面用到关于redis的配置,直接到springcloud模块安装的redis中学习即可。 多级缓存 0.学习目标 1.什么是多级缓存 传统的缓…...

Spring Boot ShardingJDBC分库分表(草稿)

ShardingJDBC分库分表 1.Maven 引用 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.1.1</version></dependency><dependency><…...

Jenkins 环境搭建---基于 Docker

前期准备 提前安装jdk、maven、nodeJs&#xff08;如果需要的话&#xff09; 创建 jenkins 环境目录&#xff0c;用来当做挂载卷 /data/jenkins/ 一&#xff1a;拉取 Jenkins 镜像 docker pull jenkins/jenkins:lts 二&#xff1a;设置 Jenkins挂载目录 mkdir -p ~/jen…...

如何在自定义组件中使用v-model实现双向绑定

在 Vue 2 中&#xff0c;v-model 是双向数据绑定的语法糖&#xff0c;它默认将 value 作为 prop 传入组件&#xff0c;并通过监听 input 事件来更新父组件的数据。若要在自定义组件中实现 v-model 的双向绑定&#xff0c;需遵循以下步骤&#xff1a; 1. 基本实现&#xff1a;va…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_pool_t 类型

ngx_pool_t 定义在 src/core/ngx_core.h typedef struct ngx_pool_s ngx_pool_t; ngx_pool_s 定义在 src/core/ngx_palloc.h struct ngx_pool_s {ngx_pool_data_t d;size_t max;ngx_pool_t *current;ngx_chain_t *chain;ng…...

如何在 ubuntu 上使用 Clash 与 docker 开启代理拉起

如何在 ubuntu 上使用 Clash https://github.com/doreamon-design/clash/releases上面是clash 的地址 clash_2.0.24_linux_386.tar.gz 下载 386 的 如果你的电脑是inter tar -xzvf clash_2.0.24_linux_386.tar.gz 启动 ./clash 然后会在电脑上生成一个config的文件 /home/xxx/…...

linux tcpdump抓包

参数说明: -i 指定网卡 -w 指定保存文件 -s0 完整抓包 -G 指定间隔时长(秒) -C 指定每个文件大小(M) 用法1: 指定端口输出到指定文件 tcpdump -i em3 -w 182910.pcap 用法2: 指定端口每10分钟输出到不同文件 tcpdump -i em3 -s0 -G 600 -w %Y_%m%d_%H%M_%S.pcap 用法3: 指…...

PLSQL连接Oracle 19c报错ORA-28040

PLSQL连接Oracle 19c报错ORA-28040 原因解析解决办法原因解析 使用PLSQL Developer连接19c数据库报错: ORA-28040: No matching authentication protocol报错信息解析: [oracle@ora19c ~]$ oerr ora 2804028040, 0000, "No matching authentication protocol" /…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...