AOT源码解析4.1-对输入数据和mask进行处理(Associating Objects with Transformers for Video Object Segmentation)

news2024/12/23 4:14:41

论文阅读

  • paper
  • github
  • 论文阅读笔记
  • AOT源码解析1-数据集处理
  • AOT源码解析2-encoder+decoder
  • AOT源码解析3-模型训练
  • AOT源码解析4.1-model主体
  • AOT源码解析4.2-model主体
  • AOT源码解析4.3-model主体
  • AOT源码解析4.4-model主体
  • AOT源码解析4.5-model主体

输入数据

VOS的数据集处理操作可见数据集操作,这里是进行数据集提取完毕后的操作。
在这里插入图片描述

图2:如图所示,使用datasets提取出数据之后,在模型训练阶段对数据做图中操作。即:将batch_size大小的ref_imgs、prev_imgs,和3batch_size大小的curr_imgs在通道维度上进行合并。如图例,batch_size为4时,得到203465465大小的合并图像和201465*465大小的合并mask。

AOTEngine

初始化loss

在这里插入图片描述

1、输入进encoder:offline_encoder

这一模块是对输入的图像数据和mask数据进行处理。

针对图像数据:

  • 将图像输入进encoder中,获取四个不同比例大小的预测特征图。(具体步骤见图3)
  • 对这四个预测特征图按batch大小进行分块,共分成5块,它们分别代表相关图像(ref_imgs)、前一帧图像(prev_imgs)、目前图像 * 3(curr_imgs * 3),这样总共获得20块预测特征图。
  • 按照图像归属对这些预测特征图块进行分类,共获得五个列表,每个列表包含四个不同比例大小的预测特征图。(具体步骤见图4)

针对mask数据:

  • 将mask图像进行one-hot-编码,分离出前后景的mask。源码中设置每张图像的最大目标数量为10,假设原始mask的张量大小为(1 * 465 * 465),那么经过编码后,得到的编码mask张量大小为(11 * 465 * 465).
  • 将原始mask和编码后的mask按照batch大小进行分块,共得到五块特征图。每块特征图分别代表相关图像、前一帧图像和当前图像*3。具体步骤见图5.

1.1 提取backbone features

  • 提取特征图

mobilenetv2共有19个block,分成四个阶段,如下面代码所示。提取不同阶段的特征图,分别得到下采样4倍、下采样8倍、下采样16倍和下采样32倍的特征图。最后的下采样32倍的特征图通过1*1的卷积(代码中命名为:encoder_projector)降维,由原来的1280维降到256维,如下图所示。

其中FrozenBatchNorm2d的相关解释见encoder和decoder代码讲解。
下图展示的是单张shape为3465465的图像经过mobilenetv2得到的变化。
在这里插入图片描述

图3:如图3所示,是mobilenet的整体结构,mobilenet共有19层,这19层被切分成4个阶段,每个阶段生成不同比例大小的特征图,并将这些特征图进行打包输入到程序的下一步。

        # make it nn.Sequential
        self.features = nn.Sequential(*features)

        self._initialize_weights()

        feature_4x = self.features[0:4]
        feautre_8x = self.features[4:7]
        feature_16x = self.features[7:14]
        feature_32x = self.features[14:]

        self.stages = [feature_4x, feautre_8x, feature_16x, feature_32x]

        self.freeze(freeze_at)

    def forward(self, x):
        xs = []
        for stage in self.stages:
            x = stage(x)
            xs.append(x)
        return xs
  • 对特征图进行分块

程序中所有图像经过mobilenetv2的过程如下图所示,经历mobilenetv2之后,对features进行分割,按照batch的大小进行分割。
在这里插入图片描述

图4:是整体数据经过encoder(即mobilenetv2)时的步骤。在源码中,在得到4个不同比例的特征图后,程序会对特征图按照batch的大小进行分块,每一个小块所代表的图像特征如图所示,依次为:ref_imgs(参考图像)、prev_imgs(前一帧图像)、curr_imgs * 3 (现在的图像 * 3)

在这里插入图片描述

图5:是源码debug时的结果可视化

1.2extract mask embeddings

  • 对mask进行one-hot编码

下图是mask可视化的结果,它在程序中的存储形式如图5上方的矩形框所示,背景为用0填充,前景对象由1~10(源码中规定一张图可出现的最大对象数为10)的数字填充,同一前景对象的填充数字一致。源码使用one-hot-mask编码,将所有的前景对象提取出来,具体的代码和步骤如下所示:

def one_hot_mask(mask, cls_num):
    if len(mask.size()) == 3:
        mask = mask.unsqueeze(1)
    indices = torch.arange(0, cls_num + 1,
                           device=mask.device).view(1, -1, 1, 1)
    return (mask == indices).float()

在这里插入图片描述

图5:对原始mask进行前后景分离。假如对形状为[1,465,465]的mask张量进行分割,会得到[11,465,465]的mask张量,里面代表的是11个目标对象的mask情况,可视化后的结果如图所示。

  • 对编码后的mask进行分块

分块操作和上面特征图的分块操作一致。具体过程如图5下方所示:分块后共有五个list,同样的,每一个list所代表的图像特征和图4的表示一致,浅粉色代表ref_imgs、玫粉色代表prev_imgs、深红色代表curr_imgs*3。

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

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

相关文章

Python基础语句教学

Python是一种高级的编程语言,由Guido van Rossum于1991年创建。它以简单易读的语法和强大的功能而闻名,被广泛用于科学计算、Web开发、数据分析等领域。 Python的应用领域广泛,可以用于开发桌面应用程序、Web应用、游戏、数据分析、人工智能等…

【中台资料】数字中台建设资料合集(Word,PPT)

目录 1 编写目的 2 背景概述 3 中台概念 4 推动企业组织模式演进 5 建设方法 6 中台内容 7 数据安全体系 8 参考资料 软件全套资料部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需…

Redis 的 Java 客户端有哪些?官方推荐哪个?

Redis 官网展示的 Java 客户端如下图所示,其中官方推荐的是标星的3个:Jedis、Redisson 和 lettuce。 Redis 的 Java 客户端中,Jedis、Lettuce 和 Redisson 是最常用的三种。以下是它们的详细比较: Jedis: 线程安全&…

springboot在线教学平台

基于springbootvue实现的在线教学平台 (源码L文ppt)4-069 4.1系统结构设计 这些功能可以充分满足在线教学平台的需求。此系统功能较为全面如下图系统功能结构如图4-1所示。 图4-1功能结构图 4.2系统功能模块设计 在线教学平台的使用者主要有二类…

AI视频技术:引领影视剧拍摄的未来

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 当科技遇见艺术,一场视听盛宴正…

华为GaussDB数据库之Yukon安装与使用

一、Yukon简介 Yukon(禹贡),基于openGauss、PostgreSQL、GaussDB数据库扩展地理空间数据的存储和管理能力,提供专业的GIS(Geographic Information System)功能,赋能传统关系型数据库。 Yukon 支…

破局汽车智能化浪潮:Tire 1供应商的网络优化与升级策略

在汽车行业经历电动化、智能化的深刻变革中,Tier 1供应商正面临着前所未有的挑战与机遇。Tier 1 供应商,即一级供应商,是汽车产业链中占据关键地位的合作伙伴。这类供应商不仅直接向整车制造商提供核心总成和模块,还深度参与整车的…

ISSCC 34.8 用于AI边缘设备的22nm,31.2TFLOPS/W,16Mb ReRAM存内浮点计算架构

本文将分享存内浮点计算前沿论文——ISSCC 2024《34.8 A 22nm 16Mb Floating-Point ReRAM Compute-in-Memory Macro with 31.2TFLOPS/W for AI Edge Devices》。下面将从文章基本信息、创新点解析、芯片测试与对比及未来展望四个部分展开介绍。 基本信息介绍 1、研究背景及面临…

QualiMap:一款强大的二代测序比对文件质控工具

在生物信息学中,数据质量的评估和可视化是很重要的一环。今天我们来聊聊一个常用的工具——Qualimap,它是一个用于评估高通量测序数据质量的开源软件,尤其是对RNA-seq和DNA测序数据的分析非常友好。无论你是本科生还是刚接触生物信息学的新人…

阿博图书馆管理:SpringBoot实战指南

第二章 开发技术介绍此次B/S结构、Java技术以及mysql数据库是该阿博图书馆管理系统的主要开发技术,然后对系统的整体设计、数据库设计、功能模块设计、系统页面设计以及系统程序设计进行了详细的研究与规划。 2.1 系统开发平台 在该阿博图书馆管理系统中&#xff0c…

大学学校用电安全远程监测预警系统

1.概述: 该系统是基于移动互联网、云计算技术,通过物联网传感终端,将办公建筑、学校、医院、工厂、体育场馆、宾馆、福利院等人员密集场所的电气安全数据,实时传输至安全用申管理服务器,为用户提供不间断的数据跟踪&a…

【Axure高保真原型】标签切换动态面板页面

今天和大家分享通过标签切换动态面板页面的原型模板,点击标签可以选择并且打开下方对应的人物详细页面。标签组是用中继器制作的,所以使用也很简单,只需要在中继器表格里填写标签名,就可以生成对应的标签;标签对应的内…

网通产品硬件设计工程师:汽车蓝牙收发器用网络隔离变压器有哪些选择呢?

Hqst盈盛(华强盛)电子导读:今天分享的是网通设备有关工程师产品设计时可供选择的两款汽车蓝牙收发器用网络隔离变压器... 下面我们就一起来看看网通设备有关工程师产品设计时可供选择的两款汽车蓝牙收发器用网络隔离变压器,让您的…

实习前学一学git

工作区 暂存区 本地仓库 远程仓库 git commit -m "提交信息" 提交的是暂存区里的内容,没有git add 的不会被提交到本地仓库

浅谈电气火灾监控系统在变电所的应用

摘要:阐述电气火灾监控系统在变电所的应用,电气火灾监控系统的管理措施,包括运行标准、运行模式、运行原则、警报阈值、监控显示。安科瑞叶西平1870*6160015 关键词:监控系统;警报阀值;运行模式;医院&…

findCirclesGrid检测不到圆点棋盘格技术原因分析与解决方案

为什么你检测不到圆点标定板 简介 某日,同事反映某厂的标定板无法识别,经过多次尝试,依旧失败。最后被总结为非标尺寸标定板导致。隐隐觉的这不是真正的原因,标定板本身可以自行设计成为各种不同的参数。这让我想起几年前也遇到…

在Windows上安装Git

一、下载Git安装包 访问Git官网:首先,你需要访问Git的官方网站下载安装包:在官网页面上,找到并点击“Downloads”按钮,然后选择“Windows”系统对应的安装包进行下载。安装包通常以.exe格式提供 二、安装Git 双击运…

错误解决 ---- Unexpected lexical declaration in case block no-case-declarations

1. 报错提示 154:15 error Unexpected lexical declaration in case block no-case-declarations154:21 error resId is assigned a value but never used no-unused-vars158:15 error Unexpected lexical declaration in case block no-case-declarations158:21 e…

Excel中如何批量删除括号里的内容

一、问题的缘起 微信群里有人问,如何在Excel中删除1列单元格中的括号和其中的人名,如下图所示。传统一个个删除,不仅太麻烦,还有可能出错。有没有什么便捷的办法呢,今天我们一起来分享五种不错的解决方法。 图示 二、…

突发!OpenAI CTO Murati 官宣离职

2024 年 9 月 26 日,OpenAI 首席技术官 Mira Murati 宣布将离开 OpenAI ,这一令人意外的举动标志着这家公司近期迎来另一名重要高管的离职。 Murati 在 X 上的一篇帖子中写道:“我离开公司是由于我想腾出时间和空间来进行自己的探索”&#x…