roomformer-端到端矢量检测模型

news2024/9/21 8:01:55

论文:Connecting the Dots: Floorplan Reconstruction Using Two-Level Queries

论文地址:https://arxiv.org/pdf/2211.15658

code:https://github.com/ywyue/RoomFormer or https://github.com/woodfrog/poly-diffuse

参考:https://blog.csdn.net/qq_50199113/article/details/131500487


目标:结构化2d平面重建任务,一般为点、线、面,论文中全部用的poly面(有序顶点的可变长度序列)表示。

常用方法:

  • 自上而下,基于分割提取掩码,再通过策略优化得到多边形平面图。非端到端训练的方式使得结果优劣很大程度上取决于优化方式的好坏。
  • 自下而上,基于神经网络提取角点,然后寻找角点之间的边缘(即墙段),最后将它们组装成平面布置图。其效果取决于初始角点查询方式的优劣,局部数据缺失严重影响重建。即无法从未检测到的角中恢复边缘。

本文贡献:提出RoomFormer,基于Transformer架构端到端训练poly矢量,通过两级查询实现室内平面图的预测。详细的说,利用Transformers的序列预测功能,直接输出每个房间的有序、变长的顶点序列。①基于CNN对房间密度图进行特征提取;②Transformer+位置编码输出多个有序的角点序列。③通过简单地按预测顺序连接恢复平面布置图。

模型评估数据集:Structured3D和SceneCAD

平面图建模方法:核心思想将平面图重建作为多边形预测问题,每个多边形代表一个房间,且被建模为一个有序顶点序列。而边则由顶点的顺序隐式编码,因此不需要额外的边预测步骤。即输出为一组任意长度的序列,序列中每一项代表一个闭合多边形。多边形由任意数量的顶点序列表示,每个顶点被建模为由cn和pn组合成的向量,pn代表其2D位置,而cn={0,1}则表示该点是否为有效顶点。一旦模型预测了有序的角点序列,就连接所有有效的角点,以获得所有房间的多边形表示。

模型框架:

模型架构如上图,a基于resnet提取多尺度图像特征,b基于deformable attention编码图像特征,c由6层堆叠(每一层由一个自注意力模块(SA),一个多尺度可变形交叉注意力模块(MS-DCA)和一个FFN组成)每个解码器层接收来自编码器的增强图像特征和来自前一层的一组多边形查询信息。多边形查询信息首先在SA模块中彼此交互,然后再MS-DCA模块中查询密度图中的不同区域,最后由一个共享CNN来预测每个查询位置作为角点的有效性,过程中使用两级查询,即一级用于查询多边形,另一级则用于顶点,多边形集被表示为一个M*N*2的矩阵,M是多边形最大数量,N是每个多边形顶点最大数量。d在训练过程中,多边形匹配模块在预测多边形和真实多边形之间的差距,从而实现端到端监督。

下面重点拆解下decoder结构:

  • detr decoder的输入一般为query的 embedding(tgt)和 pos embedding,以及encoder输出的memory及其pos embedding。(这里忽略mask)
  • deformable detr decoder的输入一般为query的 embedding(tgt)和 pos embedding,以及encoder输出的memory(src)及reference points。
  • roomformer的decoder结构本质上和deformable detr ecoder一致,其将reference points视为两级查询的polygon queries,微小的区别在于query的pos embedding是由随机初始化的tensor加上reference points经过MLP的结果。

decoder这样设计的好处:

  • decoder对所有角点计算自注意力,不仅允许单个房间的角落之间的交互,还允许不同房间的角落间的交互,从而实现全局推理。
  • 在多尺度可变形注意力模块中,直接使用多边形查询作为参考点,使网络能够使用显式空间先验来汇集多边形顶点周围多尺度特征图中的特征。
  • 房间和角落的数量是通过将每个查询分类为有效或无效来实现。

输出层结构:

  • 分类:Transformer解码器最后一层输出为一个M*N*C的矩阵,通过对角特征求平均来聚合每个房间的特征,获得聚合后大小为M*C的特征矩阵。最后,将矩阵输入到一个线性投影层中,用softmax函数求每个房间的标签概率。M通常大于场景中房间的实际数量,因此会使用额外的空类标签来表示无效房间。
  • 坐标:reference points。

目标检测过程中匹配+loss:

  • roomformer本质上是deformabel detr,目标检测过程中匈牙利匹配是必不可少的。与目标检测匹配一致,包括坐标和类别。区别在于坐标目标检测通常是bbox,而本文是poly。坐标匹配度计算方法也有区别,首先将GTpoly改为顺时针,然后以每个坐标点为起点计算最小误差当做匹配误差。
  • loss过程和匹配过程相似。

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

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

相关文章

指针的指针作为形参实测

1. VS2019里面创建C控制台工程 2. 代码 #include <iostream>uint8_t buf[3][10] { {1,2,3},{4,5,6,7,8},{9,0} }; uint8_t len1 3,len2 5,len3 2;void f1(uint8_t **dstBuf, uint8_t *dstLen) {*dstBuf buf[0];*dstLen len1; }void f2(uint8_t** dstBuf, uint8_t*…

密码学基础-数据加密

密码学基础-对称加密与非对称加密 概述 安全通常从四个方面来定义&#xff1a; 机密性完整性合法性&#xff08;可用性&#xff0c;合法的数据才可用&#xff09;不可否认性&#xff08;发送方不可否认发送过的消息&#xff0c;接收方不可否认接收过的消息&#xff09; 对当…

低代码: 开发难点分析,核心技术架构设计

开发难点分析 1 &#xff09;怎样实现组件 核心问题&#xff1a;编辑器 和 页面其实整个就是一系列元素构成的这些元素的自然应该抽象成组件&#xff0c;这些组件的属性应该怎样设计在不同的项目中怎样做到统一的使用 2 &#xff09;跨项目使用 在不同的项目中怎样做到统一的…

最强开源文生图模型一夜易主!SD一作、Stabililty AI核心成员Robin Rombach下场创业了,一出手就是王炸。

时隔4个月&#xff0c;开源文生图模型霸主Stable Diffusion原班人马再创业&#xff01;2024年8月1日官宣&#xff1a;Black Forest Labs成立&#xff0c;公司的第一个产品FLUX.1系列模型包含专业版、开发者版、快速版三种模型&#xff0c;效果直接秒杀Midjourney、DALL-E和Stab…

解决报错:AssertionError: Torch not compiled with CUDA enabled

首先查看自己的cuda是否可用 torch.cuda.is_available()这里我的cuda是不适配torch的&#xff0c;所以需要重新安装适配的torch 查看自己的cuda版本 方法1 方法2 在cmd处输入nvidia-smi 这样可以找到的自己的CUDA版本安装符合自己版本的pytorch 进入pytorch官网https://pyt…

双指针实现删除字符串中的所有相邻重复项

class Solution:def removeDuplicates(self, s: str) -> str:res list(s)slow fast 0length len(res)while fast < length:# 如果一样直接换&#xff0c;不一样会把后面的填在slow的位置res[slow] res[fast]# 如果发现和前一个一样&#xff0c;就退一格指针if slow …

app逆向实战:某监管app2.0.5版本ROOT检测绕过

本篇博客旨在记录学习过程&#xff0c;不可用于商用等其它途径 场景 如下图&#xff0c;在我们打开APP时页面提示如此样式说明被检测到ROOT了&#xff0c;这种情况下无法进入页面请求抓包。 查壳 如果这个APP没有加固&#xff0c;那我们可以通过反编译修改检测的代码或者F…

Django与数据库

目录 创建项目app 路由子表 数据库 创建数据库 什么是ORM 定义数据库表 Django Admin 管理数据 过滤条件 代码直接生成HTML 使用模板 前后端分离架构 对资源的增删改查处理 列出客户 添加客户 临时取消 CSRF 校验 修改客户信息 删除客户 Django中ORM的处理 数据模…

QThread::wait: Thread tried to wait on itself

调用QThread的wait()方法时&#xff0c;报警&#xff1a;QThread::wait: Thread tried to wait on itself 原因&#xff1a;在自己的线程中调用线程的wait()方法。 解决方法&#xff1a;在线程外的其他线程中&#xff0c;调用线程的wait()方法。 示例代码如下&#xff1a; …

MATLAB学习之绘图篇(二维图)

目录 1.1基础图形绘制 1.1.1使用plot函数进行图形绘制 1.1.2为图像增加图例 1.1.3为图片增加标题以及坐标轴的描述 1.1.4控制坐标轴&#xff0c;边框以及网络 1.1.5在一个图像上绘制多条曲线 1.1.6在一个窗口绘制多个图像 1.1.7对图形的对象进行操作( 坐标属性&#xff…

LeetCode Hot100 二叉搜索树中第K小的元素

给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 小的元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;1示例 2&#xff1a; 输入&#xf…

【C/C++】C语言和C++实现Stack(栈)对比

我们初步了解了C&#xff0c;也用C语言实现过栈&#xff0c;就我们当前所更新过的有关C学习内容以栈为例子&#xff0c;来简单对比一下C语言和C。 1.C中栈的实现 栈的C语言实现在【数据结构】栈的概念、结构和实现详解-CSDN博客 &#xff0c;下面是C实现的栈&#xff0c; 在St…

ImageNet数据集和CIFAR-10数据集

一、为什么需要大量数据集 人工智能其实就是大数据的时代&#xff0c;无论是目标检测、图像分类、还是现在植入我们生活的推荐系统&#xff0c;“喂入”神经网络的数据越多&#xff0c;则识别效果越好、分类越准确。因此开源大型数据集的研究团队为人工智能的发展做了大量贡献…

QT教程-十五,Qt-5.14.2安卓开发环境配

目录 一&#xff0c;Qt需要的组件 二&#xff0c;需要的环境配置 1,JDK配置 1.1 配置JDK环境 1.2 Qt中配置JDK,SDK,NDK 2,创建Qt安卓项目 2.1 配置gradle-5.5.1-bin.zip文件 最近想开发一款安卓app应用&#xff0c;但是又不想去重新学习一个新的知识体系。于是在自己更为…

2024.8.5 作业

1> 使用有名管道实现&#xff0c;一个进程用于给另一个进程发消息&#xff0c;另一个进程收到消息后&#xff0c;展示到终端上&#xff0c;并且将消息保存到文件上一份 create.c #include <myhead.h> int main(int argc,const char *argv[]) {if(mkfifo("./lin…

在windows下生成的mac苹果电脑端可以执行的unity项目程序,在mac电脑不能执行的修改方法

在windows下开发Unity项目&#xff0c;如果要执行的电脑是mac&#xff0c;必须在windows下生成for mac的程序&#xff0c;发现拷贝到mac电脑后不能执行&#xff1a; 原因是改程序没有mac的执行权限: 修改方法&#xff1a; 先打开终端&#xff1a; 进入文件所在目录 cd Downlo…

✅【文献串读】Object Counting论文串读

get宝藏博主&#xff1a;Tags - 郑之杰的个人网站 (0809zheng.github.io) 目标计数(Object Counting) - 郑之杰的个人网站 (0809zheng.github.io) 目录 1.《CountGD: Multi-Modal Open-World Counting》 2.&#xff08;2024CVPR&#xff09;《DAVE – A Detect-and-Verif…

报表控件stimulsoft操作:使用 Stimulsoft 产品连接到 OData 源

Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能&#xff0c;Stimulsoft Ultimate包含了…

FFmpeg实战 - 解复用与解码

大纲目录 文章目录 前置知识音视频基础概念解复用、解码的流程分析FFMPEG有8个常用库 常见音视频格式的介绍aac格式介绍&#xff08;ADTS&#xff09;h264格式分析FLV和MP4格式介绍 FFmpeg解码解封装实战数据包和数据帧&#xff08;AVPacket/AVFrame&#xff09;AVPacket/AVFra…

VHDX 安装操作系统

前言 使用 Win11 作为主力系统&#xff0c;再通过 VHDX 虚拟硬盘来安装另外的 Windows 系统。使用 VHDX 安装系统的好处在于&#xff1a;不影响原系统&#xff0c;用完即删。 需求 安装双系统&#xff0c;使用 VHDX 安装 WinServer 2022。 操作步骤 创建 VHDX 打开磁盘管…