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

【图像压缩感知】论文阅读:Self-supervised Scalable Deep Compressed Sensing

tips:本文为个人阅读论文的笔记,仅作为学习记录所用。

Title:Self-supervised Scalable Deep Compressed Sensing

Journal:IJCV  2024

代码链接GitHub - Guaishou74851/SCNet: Self-Supervised Scalable Deep Compressed Sensing (IJCV 2024) [PyTorch]Self-Supervised Scalable Deep Compressed Sensing (IJCV 2024) [PyTorch] - Guaishou74851/SCNeticon-default.png?t=O83Ahttps://github.com/Guaishou74851/SCNet

论文地址: Self-supervised Scalable Deep Compressed Sensing | International Journal of Computer VisionCompressed sensing (CS) is a promising tool for reducing sampling costs. Current deep neural network (NN)-based CS approaches face the challenges of collecicon-default.png?t=O83Ahttps://link.springer.com/article/10.1007/s11263-024-02209-1

问题动机: 

压缩感知(CS)是一种很有前途的降低采样成本的工具。当前基于深度神经网络(NN)的CS方法面临着收集标记测量 Ground Truth 数据并将其推广到实际应用中的挑战,特别是CS在医学成像领域的应用,如MRI成像等,这些领域的 Ground Truth 数据的获取更为困难。

解决方法:

提出了一种新的自监督可扩展深度CS方法,该方法包括一个名为SCL的深度学习方案和一个名为SCNet的网络家族,该方法不需要 Ground Truth 数据,并且一旦在部分测量集上训练就可以处理任意采样比率和矩阵。SCL包含双域损失和四阶段恢复策略。前者鼓励两个测量部分的交叉一致性和对任意比率和矩阵的采样-重构周期一致性,以最大限度地利用数据。后者可以逐步利用外部测量中的公共信号和测试样本的内部特性以及学习的神经网络来提高精度。SCNet结合了优化算法的显式指导和高级神经网络块的隐式正则化来学习协作信号表示。

相关工作:

现有的自监督学习压缩感知存在的不足,

1、表现不佳

现有的自监督CS对不同CS任务之间的数据和共享知识的利用不足,导致正则化弱,并且对不完整的测量结果进行过拟合的风险很高。其次,大多数方法只关注神经网络架构和学习方案设计的一部分(例如损失函数),由于其过时的组件和训练技术,导致不平衡的发展和欠拟合。

2、缺乏灵活性和可扩展性
现有的自监督CS将替换不同采样矩阵或采样率等视为独立问题,虽可以进行更换,但往往需要进行重新训练模型,费时费力,导致灵活性、可扩展性较差。

主要贡献:

1、基于双域损失函数和四阶段深度递进重建策略,提出了一种新的自监督可扩展CS学习方案SCL

2、一种被称为 SCNet 的新 NN 家族,它结合了传统近端梯度下降 (PGD) 算法 的显式指导和来自高级 NN 组件的隐式正则化。

3、在一维、二维和三维信号的模拟和真实数据上进行的大量实验表明,我们的方法在提高恢复质量和泛化能力方面具有显著的优势和有效性

整体架构:

自监督可扩展重构学习(SCL)

双域损失函数(Dual-Domain Loss Function)

DMC(Division-based Measurement-domain Consistency  loss)

面对传统CS方法的损失函数存在的问题:(1)噪声的存在;(2)解决方法模糊,输出不稳定

为了缓解这些问题,并使NN适应采样矩阵和采样率的变化,设计了DMC loss,其使用y中的测量元素的组合来构建数千个互补的矩阵和比例对的新任务,以增强数据多样性。其中隐含的假设是训练集是足够大的,可以划分出足够的任务组合。

其中存在两个约束:

如此设计的神经网络损失函数是免于噪声影响的,这是在N2N和S2S(2020,CVPR)的先验基础上的发展。

DMC的定义如下,本文的p范数设置为1范数:

DOC(matrixnetwork Disentanglement-based Original-domain Consistency loss)

为了让训练后的NN可以突破内部数据的限制,达到真正的泛化,如采样率(0 - 1),推广到整个矩阵空间。对原始图像进行几何变换,并添加随机生成的噪声、矩阵、采样率。

DOC约束:

DOC定义:

四阶段渐进恢复策略(Four-Stage Progressive Reconstruction Strategy)

核心:从粗到细(coarse-to-fine)

stage-1 —— 使用外部数据集离线学习,获得一个通用的模型。

stage-2 —— 使用测试数据集学习,获得一个使用于当前数据集的模型。

stage-3 —— 使用单个图片进行学习,模型精确到单张图片。

stage-4 —— 对单张图片进行self-ensemble,使用蒙特卡洛来近似估计。

在实践中,可以根据具体需求灵活地实现对策略的几种定制,例如对于最佳恢复质量,表示为(1→2→3→4)的完全激活策略,对于训练资源受限的设备,表示为(1→4),对于无数据集的部署,表示为(3→4)。在每个配置的第一阶段随机初始化NN参数,并在逐步学习完成后保存到下一阶段。

SCNet(基于协同表示的图像重建网络,Collaborative Representation-Based Reconstruction Network)

基于协同表示的图像重建网络——SCNet,结合了迭代优化算法(PGD)的显式结构设计启发与神经网络模块的隐式正则化约束

PGD展开 -->   提高可解释性

隐式正则化 -->  防止模型过拟合

浅层特征初始化(Shallow Feature Initialization)

使用A的伪逆将测量值y变换到图像域,并域采样率比例图R连接,然后使用卷积层提取浅层特征。

图像嵌入和位置嵌入(IE & PE)

图像嵌入将图像转成向量,方便后续处理,并将每个特定的测量 y 与整个测试集区分开来

位置嵌入为数据提供位置编码,使其能够感知位置和空间变化。

可学习的嵌入操作,增加优化自由度,防止欠拟合。

IE 和 PE 操作都只在 stage 2-4 中进行,在数据量较少时加入,防止欠拟合。

深度特征细化(Deep Feature Refinement)

将PGD算法展开,从传统的图像级优化扩展到特征级优化,

PGD模块后,使用RB/SCB模块,隐式正则化,防止过拟合。

在转化过程中,PGD算法中的Proximal Mapping部分可以用RB/SCB进行替换,是因为PM和RB/SCB存在一定的数学等价性

在某些情况下,Proximal Mapping的求解可以转化为一个优化问题,该问题具有与残差块相似的结构。具体来说,Proximal Mapping的目标是找到一个点,使得该点既满足凸函数的约束,又与给定点距离最小。这可以看作是一个最小化问题,其中包含了原始输入和一个与凸函数相关的项。而残差块在某种程度上也执行了一个类似的最小化任务,它试图保持输入信息的同时,最小化网络输出的误差。因此,在某些数学形式上,这两者可能具有等价性。

Proximal Mapping和残差块在功能上都具有“保持输入信息并尝试最小化误差”的特点。Proximal Mapping通过找到与给定点距离最小的凸函数定义域内的点来实现这一点,而残差块则通过跳跃连接来保持输入信息,并通过卷积层来最小化输出误差。这种功能上的相似性使得残差块有可能成为Proximal Mapping的一个有效替代。

最终图像重建(Final Image Reconstruction)

将深化后的特征层通过卷积生成精化图像,最后通过额外的GD(梯度下降)操作获得最终恢复结果,最后一个GD操作目的是去除噪声(2017,TIP)

本文的NN family

实验部分

一维合成稀疏信号和二维MNIST数字图像的CS重构

二维自然图像上的CS重构——PSNR对比

二维自然图像上的CS重构——PSNR和参数数对比、从DIV2K重建效果对比

二维自然图像上的CS重构——可扩展性实验

本文小结

本文提出了一种新的自监督可扩展的神经网络方法,由一个名为SCL的学习方案和一个名为SCNet的深度神经网络家族组成。

SCL通过增强和鼓励随机交叉一致性和任意采样重建周期一致性,采用双域损失来学习可推广的图像、比率和矩阵自适应映射,而不是来自固定部分测量的特定映射。四阶段策略进一步提高了准确性。

SCNet是基于PGD灵感设计的,并通过神经网络机制进行了良好的正则化。SCL和SCNet的结合和相互促进有效地利用了可用的数据和信息,推动深度重建朝着有效的方向发展,甚至可以超越监督神经网络的预测结果。实验证明了该方法在成像质量、灵活性、可扩展性、复杂性和可解释性之间取得了更好的平衡。

读者小结

这篇文章是北大VILLA实验室联合清华团队、哈工大团队最新提出的基于深度网络的CS方法。这篇文章的工作非常饱满,篇幅有30多页,其中实验部分做的扎实,我在上面放的实验部分只是作者在正文部分的内容,在附录中还有很多的实验细节内容,比如具体的消融实验、更多尺度的对比实验等。

这篇文章阅读后给我的启发最大的还是SCL学习策略部分,使用的双域函数以及四阶段渐进重建策略可以将CS扩展到整个矩阵空间,以及从粗到细的重建策略。这样的策略无疑是能达到更好的效果,但问题也是很明显的,就是时间、能耗问题,这方面作者在最后的讨论部分也提出了。对于这个问题,作者提供了神经网络家族(NN family)的方法,可以让用户来根据现实情况来自行选择。

相关文章:

【图像压缩感知】论文阅读:Self-supervised Scalable Deep Compressed Sensing

tips:本文为个人阅读论文的笔记,仅作为学习记录所用。 Title:Self-supervised Scalable Deep Compressed Sensing Journal:IJCV 2024 代码链接:GitHub - Guaishou74851/SCNet: Self-Supervised Scalable Deep Comp…...

Swift 宏(Macro)入门趣谈(一)

概述 苹果在去年 WWDC 23 中就为 Swift 语言新增了“其利断金”的重要小伙伴 Swift 宏(Swift Macro)。为此,苹果特地用 2 段视频(入门和进阶)颇为隆重的介绍了它。 那么到底 Swift 宏是什么?有什么用&…...

linux常见资源查询命令(持续更新)

年纪大了,很多命令记不住了,但偶尔也需要用到,通过搜索也需要点时间,特此记录。 不同操作系统命令会有所区别,下面是大部分时候工作的机器系统: CentOS release 7.5 (Final)Kernel \r on an \m 1、实时查…...

JavaWeb:文件上传1

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...

C++ 中的异常处理机制是怎样的?

异常处理的基本概念: 异常: 程序在运行时发生的错误或意外情况。 抛出异常: 使用 throw 关键字将异常传递给调用堆栈。 捕获异常: 使用 try-catch 块捕获和处理异常。 异常类型: 表示异常类别的标识符。 异常处理流程: 抛出异常: 当检测到错误或意…...

SwiftUI-基础入门

开发OS X 图形应用界面时有三种实现方式:XIB、Storyboard、SwiftUI。Storyboard基于XIB做了优化,但XIB基本被放弃了,而SwiftUI是苹果公司后来开发的一套编程语言,用来平替Objective-C。虽然现在Swift 6 还是有些不完善的地方&…...

C++builder中的人工智能(20):如何在C++中开发一个简单的Hopfield网络

在AI技术的发展历史中,模式识别模型是最伟大的AI技术之一,尤其是从像素图像中读取文本。其中一个是Hopfield网络(或称为Ising模型的神经网络或Ising–Lenz–Little模型),这是一种递归神经网络形式,由John J…...

video2gif容器构建指南

一、介绍 1.项目概述 Video2Gif 项目旨在提供一种便捷的方式,让用户能够将视频中的精彩片段快速转换为 GIF 动画。GIF 动画因其循环播放、文件体积小等特点,在社交媒体、聊天工具中广泛应用,用于表达情感、分享趣事等。 2.核心功能 视频导…...

探秘Spring Boot中的@Conditional注解

文章目录 1. 什么是Conditional注解?2. 为什么需要Conditional注解?3. 如何使用Conditional注解?4. Conditional注解的高级用法5. 注意事项6. 结语推荐阅读文章 在Spring Boot的世界里,配置的灵活性和多样性是至关重要的。有时候&…...

树形dp总结

这类题型在 dp 中很常见,于是做一个总结吧!!! 最经典的题:没有上司的舞会 传送门:没有上司的舞会 - 洛谷 状态表示: dp[i][0] 为 以 i 为根的子树中,选择 i 节点的最大欢乐值 d…...

【算法一周目】双指针(2)

目录 有效三角形的个数 解题思路 C代码实现 和为s的两个数字 解题思路 C代码实现 三数之和 解题思路 C代码实现 四数之和 解题思路 C代码实现 有效三角形的个数 题目链接:611. 有效三角形的个数题目描述:给定一个包含非负整数的数组nums&…...

vue内置方法总结

目录 1. 生命周期钩子方法 2. 响应式系统方法 3. DOM 更新方法 4. 事件处理方法 5. 访问子组件和 DOM 元素 6. 数据观察方法 7. 其他方法 1. 生命周期钩子方法 这些方法在 Vue 实例的不同生命周期阶段自动调用。 beforeCreate: 在实例初始化之后&#xff0c…...

面向对象分析与设计

前言: 感觉书本上和线上课程, 讲的太抽象, 不好理解, 但软件开发不就是为了开发应用程序吗?! 干嘛搞这么抽象,对吧, 下面是个人对于软件开发的看法, 结合我的一些看法, 主打简单易懂, 当然,我一IT界小菜鸟, 对软件开发的认识也很浅显, 这个思维导图也仅仅是现阶段我的看…...

lineageos-19 仓库群遍历,打印第一条git log

lineageos-19 仓库群遍历,打印第一条git log RepoLsRootD/app4/lineage19_oneplus6 LogF/app4/wiki/repo_head_log_ls-lineageos19.1.log rm -v $LogF && \ cd $RepoLsRootD && \ find . -type l -path "*/*.git" -not -path "./.repo/*"…...

详解基于C#开发Windows API的SendMessage方法的鼠标键盘消息发送

在C#中,SendMessage方法是一个强大的工具,它允许我们与Windows API交互,模拟键盘和鼠标事件。本文将详细介绍如何使用SendMessage方法来发送鼠标和键盘消息。 1. SendMessage方法概述 SendMessage是Windows API中的一个函数,它用…...

VMware安装黑苹果后ICLOUD_UNSUPPORTED_DEVICE(不支持的Icloud设备)

修改文件 关闭虚拟机找到虚拟机文件中以.vmx结尾的文件编辑内容(补充缺失) board-id "Mac-551B86E5744E2388" hw.model.reflectHost "FALSE" hw.model "MacBookPro14,3" serialNumber.reflectHost "FALSE"…...

Python | Leetcode Python题解之第542题01矩阵

题目: 题解: class Solution:def updateMatrix(self, matrix: List[List[int]]) -> List[List[int]]:m, n len(matrix), len(matrix[0])# 初始化动态规划的数组,所有的距离值都设置为一个很大的数dist [[10**9] * n for _ in range(m)]…...

【计算机网络】【传输层】【习题】

计算机网络-传输层-习题 文章目录 10. 图 5-29 给出了 TCP 连接建立的三次握手与连接释放的四次握手过程。根据 TCP 协议的工作原理,请填写图 5-29 中 ①~⑧ 位置的序号值。答案技巧 注:本文基于《计算机网络》(第5版)吴功宜、吴英…...

【LeetCode】【算法】55. 跳跃游戏

LeetCode 99 - 55. 跳跃游戏 题目 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回 …...

华为:hcia综合实验

一、拓扑图 二、实验要求 1. pc地址请自行规划,vlan已给出 2. 服务器地址自行规划,vlan,网段已给出 3. 交换机互联链路捆绑保证冗余性 4. 内网pc网关集中于核心交换机,交换机vlan 40互联路由器 ,地址网段已给出 5.配置静态路由实…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

数据库分批入库

今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

网络编程(UDP编程)

思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程

基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。

2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...

【多线程初阶】单例模式 指令重排序问题

文章目录 1.单例模式1)饿汉模式2)懒汉模式①.单线程版本②.多线程版本 2.分析单例模式里的线程安全问题1)饿汉模式2)懒汉模式懒汉模式是如何出现线程安全问题的 3.解决问题进一步优化加锁导致的执行效率优化预防内存可见性问题 4.解决指令重排序问题 1.单例模式 单例模式确保某…...