Visual Saliency Transformer (VST) 源代码实现

news2025/5/28 2:44:15

1.论文信息

1.1论文标题:Visual Saliency Transformer (VST)

Nian Liu, Ni Zhang, Kaiyuan Wan, Junwei Han, and Ling Shao

1.2 Github源代码地址:https://github.com/nnizhang/VST

1.3论文下载链接:http://openaccess.thecvf.com/content/ICCV2021/papers/Liu_Visual_Saliency_Transformer_ICCV_2021_paper.pdf

2.论文解读

Xmind源文件下载:Visual Saliency Transformer (VST)
在这里插入图片描述

3.源代码实现

3.1云服务器平台

启智社区:

您的好友正在邀请您加入OpenI启智AI协作平台,畅享充沛的普惠算力资源(GPU/NPU/GCU/GPGPU/MLU)。现在使用国产算力参与打榜任务,奖金+算力积分+礼品盲盒等你来拿哦~
注册地址:https://openi.pcl.ac.cn/user/sign_up?sharedUser=STRUGGLE
推荐人:STRUGGLE

这里可以每天登录领取积分,免费训练模型。

3.2 训练步骤

在启智社区新创建一个项目,把源代码上传到启智社区,可以使用Git工具进行远程仓库同步。
将代码上传完成之后,上传对应的模型和数据集。然后就可以先进行调试,在项目中创建一个调试环境,根据自己的需要选择对应的镜像,我的调试环境如下:
在这里插入图片描述
因为调试任务只能维持四个小时,所以我们可以先在调试环境中配置好实验所需要的依赖包,测试一下能否顺利训练,然后将调试的镜像提交一下,如下图:
在这里插入图片描述
提交好的镜像,我们可以在后续创建训练任务的时候选中这个镜像,这样我们就可以直接开始训练模型了。需要注意到是,我们的源代码是放在
/code路径,数据集放在 /dataset,模型存放路径 /pretrainmodel,在训练代码中要注意修改路径如下:
在这里插入图片描述
调试好了代码之后,可以创建训练任务,这里要注意训练任务中,预训练权重的默认参数是–ckpt_url,所以要在train_test_eval.py中修改:
在这里插入图片描述
并在其他使用到这个参数的地方修改:
在这里插入图片描述
在保存模型的时候也要注意,直接保存在/tmp/output/ 文件夹下,不要以args参数的形式,如下:
在这里插入图片描述

4.源代码解读

论文的核心是ImageDepthNet.py文件在这里插入图片描述
模型结构定义: 模型包括三个主要部分,分别是 VST Encoder、VST Convertor 和 VST Decoder。

VST Encoder: 使用 T2t_vit_t_14 模型(Transformer-based Vision Transformer with token size 14)分别对输入的图像(image_Input)和深度信息(depth_Input)进行编码,提取不同层次的特征表示(rgb_fea_1_16、rgb_fea_1_8、rgb_fea_1_4、depth_fea_1_16)。

VST Convertor: 使用 Transformer 模块将编码后的图像和深度特征进行转换,得到新的特征表示(rgb_fea_1_16、depth_fea_1_16)。

VST Decoder: 使用 Token-based Transformer 模块和 Decoder 模块对转换后的特征进行解码,得到最终的输出(outputs)。

下面分别介绍这三个部分

4.1VST Encoder

在这里插入图片描述
Encoder中使用T2t_vit_t_14作为backbone提取RGB和Depth图像进行编码,源代码如下:
在这里插入图片描述

4.2 VST Convertor

在这里插入图片描述
这里调用Transformer.py文件的Transformer类。
在这里插入图片描述
该模块的主要作用是通过调用内部的 TransformerEncoder 进行特征的编码。
在这里插入图片描述
该类主要作用是通过多个互相交互的 Transformer 模块对输入的 RGB 特征和深度特征进行编码。

4.3 VST Decoder

在这里插入图片描述

这里先使用self.token_trans 对输入特征进行处理,包括自注意力机制(Attention)、多层感知机(MLP)等操作。代码如下:
在这里插入图片描述
该模块通过学习输入特征的非线性映射,生成了经过自注意力机制处理的特征表示。

接着使用Decoder解码模块:
首先是初始化函数:
在这里插入图片描述
接下来是前向传播处理逻辑:
在这里插入图片描述
这段代码描述了一个类的前向传播逻辑,该类的作用是进行一系列的特征处理、解码和预测,最终生成不同分辨率下的显著性和轮廓图。以下是每个步骤的解释:

  1. 特征处理

    • saliency_fea_1_16contour_fea_1_16 是对输入的显著性和轮廓特征进行处理后的结果。
    • token_fea_1_16 包含显著性 token 和轮廓 token,以及对应的特征。
    • rgb_fea_1_8rgb_fea_1_4 是高层级特征,用于解码低层级特征。
  2. 显著性特征处理

    • saliency_fea_1_16 进行处理,通过线性层和激活函数 (mlp)。
    • 针对处理后的 saliency_fea_1_16,通过线性层 (pre_1_16) 得到显著性图 mask_1_16
  3. 轮廓特征处理

    • contour_fea_1_16 进行处理,通过线性层和激活函数 (mlp_c)。
    • 针对处理后的 contour_fea_1_16,通过线性层 (pre_1_16_c) 得到轮廓图 contour_1_16
  4. 1/16 到 1/8 解码

    • 使用 decoder1 模块对 token_fea_1_16 进行解码,得到 fea_1_8
    • fea_1_8 进行显著性、轮廓和 token 预测。
  5. 1/8 到 1/4 解码

    • 使用 decoder2 模块对 token_fea_1_8 进行解码,得到 fea_1_4
    • fea_1_4 进行显著性、轮廓和 token 预测。
  6. 1/4 到 1 解码

    • 使用 decoder3 模块对 saliency_fea_1_4 进行解码,得到 saliency_fea_1_1
    • 使用 decoder3_c 模块对 contour_fea_1_4 进行解码,得到 contour_fea_1_1
    • saliency_fea_1_1contour_fea_1_1 进行预测,得到分辨率为 1 的显著性图和轮廓图。

最终,返回了显著性图和轮廓图在不同分辨率下的预测结果。

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

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

相关文章

vue+elementUI+XLSX.utils.sheet_to_json实现复杂表头的导入功能

导入表excel 问题 XLSX.utils.sheet_to_json方法不带参数的调用,无法解析我们的复杂表头的excel表格,因此,我们需要通过传参数,来指定表头的真实起始位置。 关键代码分析:XLSX.utils.sheet_to_json XLSX.utils.shee…

Linux驱动开发笔记(六):用户层与内核层进行数据传递的原理和Demo

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/135384355 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

【管理篇 / 恢复】❀ 07. macOS下用命令刷新固件 ❀ FortiGate 防火墙

【简介】随着苹果电脑的普及,很多管理员都会通过苹果电脑对飞塔防火墙进行管理。当防火墙需要命令状态下刷新固件时,在macOS下用命令刷新固件,将会是一个小小的挑战。 首先是硬件的连接,USB配置线的USB一头,接入MAC的U…

【springboot+mybatis实现CURD模版项目-Jesus】

springbootmybatis实现CURD模版项目-Jesus STEP 1 项目创建 1.1 新建Spring Initializr项目   1.2 选择需要的依赖 springboot有2.7.2直接选272STEP 2 配置更改 2.1更改maven配置   2.2 检查项目配置jdk、sdk、jre版本一致   2.3 检查pom文件,Maven-Reload pr…

线程池的shutdown和shutdownnow的区别

1、先说结论 shutdown ---- 不再接收新的任务,但是已经在执行中和队列中的任务会等待执行完成, 对workers中空闲的线程执行interrupt shutdownnow ---- 不再接收新的任务,清空队列的任务,对works中所有的线程执行interrupt&…

Vue3 自定义Hooks大全:一站式解决你的疑惑!

前言 不知道喜欢 vue3 的小伙伴和我是不是一样,刚上手vue3 的时候 对自定义hooks 一脸懵逼,在一些视频网站学习的时候老师讲解到自定义hooks 最喜欢用 加减乘除来描述 自定义hooks 是咋用的,可能是我理解能力比较差吧,我看了这个…

C 练习实例19

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如61+2+3.编程找出1000以内的所有完数。 程序分析:请参照:C 练习实例14。 步骤分析: 写一个函数判断是否是完数 找出…

2.4G无线收发芯片XL2407P产品特征介绍,专为多组PWM的应用设计。

XL2407P 芯片是工作在 2.400~2.483GHz 世界通用 ISM 频段,集成微控制器的的 SOC 无线收发芯片。该芯片集成射频收发机、频率收生器、晶体振荡器、调制解调器等功能模块,并且支持一对多组网和带 ACK的通信模式。发射输出功率、工作频道以及通信数据率均可…

SpingBoot的项目实战--模拟电商【5.沙箱支付】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一. 沙箱支付是什么 二.Sp…

vscode安装Prettier插件,对vue3项目进行格式化

之前vscode因为安装了Vue Language Features (Volar)插件,导致Prettier格式化失效,今天有空,又重新设置了一下 1. 插件要先安装上 2. 打开settings.json {"editor.defaultFormatter": "esbenp.prettier-vscode","…

Springcloud 微服务实战笔记 Feign

优点 基于Netflix Feign实现&#xff0c;整合了Spring cloud Ribbon 和 Spring cloud Hystrix 提供了声明式的WEB服务客户端定义方式 扩展了Spring MVC的注解支持 使用 1、pom导入包&#xff1a; <dependency><groupId>org.springframework.cloud</groupId…

系统崩溃无U盘重装Win10系统的方法

用户反映自己电脑上的操作系统出现了崩溃问题&#xff0c;无法通过简单的操作解决问题&#xff0c;想重新安装正常的操作系统&#xff0c;但是没有U盘不知道要怎么操作才能安装好系统&#xff1f;接下来小编带来系统崩溃无U盘重装Win10系统的方法步骤介绍&#xff0c;用户们可以…

Spring Boot 完善订单【五】集成接入支付宝沙箱支付

1.1.什么是沙箱支付 支付宝沙箱支付&#xff08;Alipay Sandbox Payment&#xff09;是支付宝提供的一个模拟支付环境&#xff0c;用于开发和测试支付宝支付功能的开发者工具。在真实的支付宝环境中进行支付开发和测试可能涉及真实资金和真实用户账户&#xff0c;而沙箱环境则提…

7. Mybatis 代码反向生成器(MBG)

一、插件的使用 描述: mybatis generator 的作用是根据数据库自动生成 实体类、Dao接口、Mapper 映射文件。 数据库&#xff1a; create table product( id int primary key AUTO_INCREMENT, pname varchar(20), price double, category_id varchar(32) ); INSERT INTO produ…

B样条曲线

零次 B 样条 F i &#xff0c; 0 ( t ) { 1 t i ≤ t < t i 1 0 o t h e r s \bm{F}_{i&#xff0c;0}(t) \begin{cases} 1 & t_i \leq t <t_{i1} \\ 0 & others \end{cases} Fi&#xff0c;0​(t){10​ti​≤t<ti1​others​ 2. 一次 B 样条&#xff0c;…

node加速镜像源 管理工具nrm安装使用

我们在开发node.js的时候,经常会遇到某些包无法下载, 或者下载太慢, 还有需要加载我们自己是有源中的包的问题, 今天推荐给大家的这款 nrm 镜像源管理工具就是解决这类问题的. 安装 方法也很简单, 执行 npm install nrm -g 就可以安装 # 安装nrm npm install nrm -g# 添加…

LN和BN

假设batch为2&#xff0c;&#xff08;2&#xff0c;3&#xff0c;256&#xff0c;256&#xff09;这样的样本 LN比较直观就是在每个独立的样本上计算均值和方差&#xff0c;然后归一化。&#xff08;2&#xff0c;3&#xff0c;256&#xff0c;256&#xff09; 归一化是将数…

14:00面试,14:06就出来了,问的问题真的变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到5月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

mac远程ssh免密登录

服务器部署经常会登录到远程服务&#xff0c;为方便操作&#xff0c;提高效率对运维人员来说设置免密登录还是很有必要的。其实也是很简单&#xff0c;安以下操作步骤即可。 1、进入到&#xff5e;/.ssh目录下&#xff0c;确认已经生成有公钥与私钥。如果没有请执行发下命令 …

Jetson Xavier NX安装pytorch环境《最全、简洁》

有段时间没有写嵌入式领域相关的文章了&#xff0c;近期也在学习和做嵌入式领域的相关作业&#xff0c;学习了一段时间的Jetson Xavier NX开发套件&#xff0c;总结了Jetson Xavier NX如何安装pytorch环境。文章分类在嵌入式学习&#xff1a; 嵌入式学习 ---《Jetson Xavier NX…