【论文阅读】(2023TPAMI)PCRLv2
目录
- Abstract
- Method
- Method
- nsU-Net中的特征金字塔
- 多尺度像素恢复
- 多尺度特征比较
- 从多剪切到下剪切
- 训练目标
- 总结
Abstract
现有方法及其缺点:最近的SSL方法大多是对比学习方法,它的目标是通过比较不同图像视图来保留潜在表示中的不变合判别语义,然而它主要保留高级语义信息,不包含足够的局部信息,局部信息对医学图像分析很有用。
提出的解决方法:提出将像素级恢复任务纳入,以将更多像素级信息显示编码到高级语义信息中。讨论了尺度信息保留,提出的框架可以表述为在特征金字塔上的多任务优化问题。
效果很好。
Method

上面是动机插图。三层分别表示像素、尺度和语义。像素是图片的像素值,通过特征图重建生成(从特征图中恢复未损坏的输入,以保留像素级细节),特征是网络学习到的特征,语义信息是一维编码。这些在不同的尺度上进行像素恢复和特征比较(特征比较怎么做?)引入多尺度自监督潜在特征表示,以更好地迁移到下游任务。
贡献:
- 从像素、语义和尺度三个方面统一了潜在特征中视觉信息的保存。在不同特征尺度上进行像素恢复和特征比较。
- 我们引入了非跳过U-Net(nsUNet)来构建特征金字塔。因防止跳跃连接踢狗学习的捷径,同时高级特征和低级特征直接组合不利于高级语义信息的提取。
- 受多剪切的启发,提出使用子剪切比较全局剪切块和局部剪切块。为了缓解 3D 空间中全局视图和局部视图之间互信息减少的问题,子裁剪限制了全局视图的 3D 最小边界框内的局部视图裁剪。
- 广泛全面的实验。
PCRLv1证明了通过对比学习获得的不便和判别语义之外,还包含更多像素级语义信息的好处。对PCRLv1进行实质性修改。改进主要包括不限于:
(i) 除了本地像素级和全局语义信息外,比例信息也保留在自监督视觉信息表示中。这证明可以提升在下游任务中的性能。
(ii) PCRLv2将PCLv1的注意力像素级恢复和混合特征对比操作简化为简洁的多任务问题。
(iii) 与PCELv1相比PCRLv2的引入了nsU-Net(非跳跃连接的U-Net)。
usU-Net好处如下:
a. nsU-Net的特征金字塔允许进行多尺度像素级上下文恢复和语义特征比较。像素、语义和比例的统一产生了更多可转移的视觉表示
b. 它可以避免产生捷径解决方案,与典型跳跃连接相比,性能明显提高。
(iv) 我们整合多剪切的想法到PCRLv2中。通过在全局视图中的3D最小边界框中随机剪切多个局部体积块来增加相互信息。
(v) 实验效果好。
Method

PCRLv2的整体结构。提出nsU-Net。nsU-Net由5个特征缩放组成删除了跳跃连接,防止网络找到恢复上下文信息的捷径解决方法。在nsU-Net基础上,提出将像素级、语义和尺度信息的保存解耦为两个任务 a.多尺度像素恢复 b.多尺度特征比较。原理将像素细节和语义合并到不同比例的特征图中。在训练阶段,从特征金字塔中随机选择一个特征尺度,在尺度上进行像素恢复和特征比较,x是一批输入图像,t1和t2表示两个不同的全局增强,t1’和t2’表示连续的局部增强。
全局增强t1,t2;例如翻转和旋转,目标是从全局角度扭曲输入图像的语义。局部增强t1’,t2’表示局部像素级的转变,像是随机噪声和高斯滤波,目的是扰乱局部语义。最后增强后的图像传递给siamese网络取进行像素恢复和特征比较,利用经过t1和t2操作从x得到的x1和x2作为像素恢复任务的实际目标。
在特征金字塔上执行SSL以编码多尺度视觉表示。两个nsU-Net产生的特征图进行比较,这就是特征比较。每次随机抽取其中一个尺度,在所选尺度上进行像素恢复和特征比较,这是尺度方面的学习。
nsU-Net中的特征金字塔

上图是nsU-Net结构。彩色方块的是特征图。与之前的U-Net系列相比,nsUNet删除了跳过连接和关联的跳过特征映射,以防止像素恢复和特征比较任务的捷径解决方案。此外,nsUNet由五个级别的特征图(用不同的颜色表示)组成,其中进一步执行两个自我监督任务。
这里展示了特征提取的过程,特征图{F1,F2,F3,F4,F5}然后转发给后续任务相关头,分别并同时执行像素恢复和特征比较。
多尺度像素恢复
含义:旨在同时保留潜在视觉表示中的像素级和比例信息。
结构:下图(a)。
损失函数:每一个尺度都计算重建的2个特征图与x1,x2的MSE损失求和。

左边是像素恢复头的结构,右边是特征比较头的结构。没对特征图共享一个像素恢复头和特征比较头,不同的特征尺度使用不同的任务头。红线是比较。
多尺度特征比较
PCRLv2采用多尺度比较取代了PCRLv1中的混合对比策略。提出保留不同特征尺度的判别语义,这迫使模型保留多尺度自监督表示。
含义:旨在同时保留潜在视觉表示中的特征级和比例信息。
结构:上图(b)。
损失函数:我们将它们通过全局平均池化层和共享批量归一化层(如图4b所示)以获取一维表示vi就是红色双向箭头前面指到的地方,我们将 vi 转发给共享预测器 fP(·)预测器就是框起来的Predictor那部分,最后输出就是fp(vi)。下面那一个分支为 v i s v_i^s vis, f p ( v i s ) fp(v_i^s) fp(vis)。损失函数就是负的二分之一vi和 f p ( v i s ) f_p(v_i^s) fp(vis)计算cos相似度加上 v i s v_i^s vis和 f p ( v i ) f_p(v_i) fp(vi)计算cos相似度。
从多剪切到下剪切
多裁剪 [5] 被认为是提高自然图像中 SSL 性能的有用策略,它通过从原始输入中采样多个标准分辨率裁剪和更多低分辨率裁剪来增加输入视图的数量。多裁剪背后的一个关键见解是捕获场景或对象的各个部分之间的关系,而低分辨率视图可确保计算成本的可控增加。
在医学图像中多裁剪在2D X射线数据中效果好,单在3D体积数据中不收敛,根源是有限的输入大小与三维空间中许多候选剪切体积之间的矛盾。们负担不起大尺寸的 3D 输入,因为使用 3D 深度模型处理它们通常会花费巨大的 GPU 内存。另一方面,如果我们过度减小 3D 输入的大小,采样视图将过于分散,无法保证模型捕获局部-全局关联。
下裁剪主要包括三个步骤:
(i)在IoU约束下随机裁剪两个广泛的全局视图;
(ii) 在裁剪的全局补丁上找到最小的 3D 边界框;
(iii) 在 3D 边界框中随机裁剪多个局部补丁。
下裁剪中有两个关键操作:IoU 对全局视图的约束和最小边界框内的局部补丁采样。在实践中,第一个操作通过确保大于固定阈值的大型补丁之间的重叠来保证全局-全局关联。第二个操作缓解了局部视图的分散问题,并帮助模型发现局部-全局关系。
训练目标
LTotal有三个术语:LR(g1,g2),LC(g1,g2)和∑ m∈{1,2} ∑ˆ N k=1 LC(lk,gm)。第一项旨在保留多尺度学习表示中的像素级细节。第二个术语解决了将多尺度语义编码为潜在特征的重要性。最后一个术语旨在捕捉多尺度的全球-局部语义关系。
LR是像素恢复任务的损失,LC是特征比较任务的损失,特征比较的损失是比较特征之间语义差异用的负的cos相似度,最后一项比较的全局和局部的语义差异。
总结
我认为读了这篇论文收获就是尺度信息、特征信息、像素信息这三个它进行了细致的描述比较,因为这三种信息对下游任务都很重要,所以它设计了多任务来对三种信息进行学习。多尺度信息相比于像素、特征信息比较模糊,它使用金字塔结构,每次选择一个尺度进行学习,很好解决了这个问题。为了更好地提取多尺度特征,防止网络学到捷径,改进了U-Net为nsU-Net。然后设计了非常巧妙的损失函数。
我学习到了一般网络分为特征提取和任务头两部分,不知道理解对不对,然后特征提取很重要,要让提取的特征有泛化性、有代表性,任务头设计如何获取相应任务结果的同时,要设计合适的损失函数。
展望:未来,将继续探索如何将不同类型的信息以最佳方式集成到SSL中。(论文中的)
相关文章:
【论文阅读】(2023TPAMI)PCRLv2
目录 AbstractMethodMethodnsU-Net中的特征金字塔多尺度像素恢复多尺度特征比较从多剪切到下剪切训练目标 总结 Abstract 现有方法及其缺点:最近的SSL方法大多是对比学习方法,它的目标是通过比较不同图像视图来保留潜在表示中的不变合判别语义ÿ…...
大数据学习(17)-mapreduce task详解
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
HCIA --- DHCP服务、路由器、网络部署及基本配置
带宽计算公式: 速率 约等于 (带宽/8)*85% 网线分类: RJ-45双绞线 非屏蔽线 最佳距离100M; 民用 1000M/S 商用100000M/S 数字 光纤 光信号 RJ-11 电话线 模拟信号 同轴电缆 数字信号 光信号 数字信号--二进制 …...
手把手入门Node框架Egg.js
0.介绍 Egg.js 是一个面向企业级应用开发的 Node.js 框架,它建立在 Koa.js 之上,提供了一种更简单、灵活的开发方式。Egg.js 提供了一些默认约定和最佳实践,可以帮助开发者快速构建可靠、可扩展的应用程序。 基于 Koa.js:Egg.js …...
百度智能云推出,国内首个大模型全链路生态支持体系
在10月17日举行的百度世界2023上,百度智能云宣布,百度智能云千帆大模型服务平台已服务17000多家客户,覆盖近500个场景。 同时,新的企业和开发者还正在不断地涌入千帆,大模型调用量高速攀升。平台上既有年龄仅14岁的小…...
CUDA学习笔记(八)Branch Divergence and Unrolling Loop
Avoiding Branch Divergence 有时,控制流依赖于thread索引。同一个warp中,一个条件分支可能导致很差的性能。通过重新组织数据获取模式可以减少或避免warp divergence(该问题的解释请查看warp解析篇)。 The Parallel Reduction …...
Android MQTT连接阿里云使用Json解析数据
Android Studio 连接阿里云订阅主题然后使用JSON解析数据非常好用 导入MQTT的JAR包1、在项目中添加依赖然后使用Studio 去下载库2、直接下载JAR包,然后作为库进行导入 环境验证:给程序进行联网权限XML布局文件效果如下: MainActitive.java 主…...
生成二维码
Qt本地生成二维码-第三方库Libqrencode Chapter1 Qt本地生成二维码-第三方库Libqrencode一、功能简介二、本地生成二维码三、在线生成二维码 Chapter2 Qt生成二维码图片方法QRCode二维码简介如何选定QR码版本?主要方法(1) 下载qrencode源码(2) 将qrencode源码移植到…...
【C++入门 一 】学习C++背景、开启C++奇妙之旅
目录 1.什么是C2. C的发展史3. C的重要性3.1 语言的使用广泛度3.2 在工作领域1. 操作系统以及大型系统软件开发2. 服务器端开发3. 游戏开发4. 嵌入式和物联网领域5. 数字图像处理6. 人工智能7. 分布式应用 3.3 在校招领域3.3.1 岗位需求3.3.2 笔试题 4. 如何学习C4.1 别人怎么学…...
oracle 表空间详解以及配置操作
Oracle 数据库是由若干个表空间构成的。任何数据库对象在存储时都必须存储在某个 表空间中。表空间对应于若干个数据文件,即表空间是由一个或多个数据文件构成的。 1、常用表空间: 系统表空间 (system tablespace) 是每个 Oracle 数据库都必须具备的。…...
php判断是否是email格式
要判断一个字符串是否是有效的电子邮件地址,你可以使用正则表达式和PHP内置函数来完成。以下是一个示例代码: $email "exampleexample.com"; // 你要检查的电子邮件地址// 使用正则表达式检查电子邮件格式 if (filter_var($email, FILTER_VA…...
AJAX与JSON
1.AJAX 1.AJAX概述 AJAX(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML 本身不是一种新技术,而是多个技术综合。用于快速创建动态网页的技术 一般的网页如果需要更新内容,必需重新加载个页面。 而 Ajax通过浏览器与服务器…...
1024常玩到的漏洞(第十六课)
1024常玩到的两个漏洞(第十六课) 漏洞扫描工具 1024渗透OpenVas扫描工具使用(第十四课)-CSDN博客 流程 一 ms12-020漏洞分析 MS12-020漏洞是一种远程桌面协议(RDP)漏洞。在攻击者利用该漏洞之前,它需要将攻击者的计算机连接到受害者的计算机上。攻击者可以通过向受害者计算…...
【Edabit 算法 ★★★★★★】【两个大整数相加】Recursion: Sum of Two Numbers (With A Twist!)
Recursion: Sum of Two Numbers (With A Twist!) Instructions This is an “expert” challenge!!! Why is a sum of two numbers an “expert” challenge!!! Well, the numbers can have 1000 digits or even beyond such count… So, what’s the twist? You have to do …...
电容屏物体识别手工制作
电容屏识别物体效果2 电容屏识别物体效果1 电容屏识别物体效果3 电容屏识别物体效果4 电容识别物理效果5 我们感兴趣的是找到让我们的平面屏幕与物理三维物体和表面交互的方法。 触摸屏无处不在,成千上万的应用程序中有多种设备和屏幕格式,但我们只找到…...
13JVM进阶
JVM内存模型 1、线程私有的数据区 1)、程序计数器 我们知道,线程是CPU调度的基本单位。在多线程情况下,当线程数超过CPU数量或CPU内核数量时,线程之间就要根据 时间片轮询抢夺CPU时间资源。也就是说,在任何一个确定的时刻&#…...
java与c++中的交换方法
最近在写算法的时候,遇到一个问题。 java中编写swap(交换)方法还需要传入一个数组,但是在c中则不需要。 可以看到,在没有传入数组进行交换数组元素的时候,交换前与交换后的值是一样的。 而在c中ÿ…...
OpenCV中world模块介绍
OpenCV中有很多模块,模块间保持最小的依赖关系,用户可以根据自己的实际需要链接相关的库,而不需链接所有的库,这样在最终交付应用程序时可以减少总库的大小。但如果需要依赖OpenCV的库太多,有时会带来不方便,此时可以使…...
IMX6ULL板开发——第一个应用程序
实现第一个应用程序:在IMX6ULL开发板上运行程序hello.c #include <stdio.h>/* 执行命令: ./hello weidongshan* argc 2* argv[0] ./hello* argv[1] weidongshan*/int main(int argc, char **argv) {if (argc > 2)printf("Hello, %s!\n", arg…...
MyBatis Generator - 快速生成 实体类 和 映射文件
目录 一、MyBatis Generator 的使用 1.1、生成类和映射文件 1.1.1、在 pom.xml 中引入依赖 1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件 1.1.3、自动生成类 和 映射文件 1.1.4、在 Insert 标签中添加获取主键值的选项 1.1.5、扫描配置…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
