Mesh-gpt(点处理、保存脚本,Transformer)

news/2024/11/16 1:53:51/文章来源:https://www.cnblogs.com/sherioc/p/18391565

小结:

1、配置了学长的环境,并编写点处理(旋转、镜像)和保存(由内存numpy数组到shp文件)脚本。

2、初步阅读mesh-gpt论文,思考Transformer网络架构(翻译模型和补全模型的训练区别)

环境配置

pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118
image-20240830135620846
pip install git+https://github.com/peng0817-3dv/floorplan-reconsturtion-based-plane-triangle.git
image-20240830140108251
pip list
image-20240830140537015

安装缺少的库

pip install pytest
pip install matplotlib

1、尝试运行test/load_shp_test.py ,报错

image-20240830141430457

多种办法完美解决AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘_matplotlib.use('tkagg')-CSDN博客

添加

image-20240830141845964

成功运行test/load_shp_test.py ,并生成load_shp_test目录结果

image-20240830141932244

数据增强

faces和edges存的是vertices的索引(face是三个点+置信度信息;edge是两个点+置信度信息),也就是说face和edge本身并不包含任何位置信息,有位置的是vertices的坐标。

数据结构

vertices = [(x1, y1), (x2, y2), ...]
vertices_confidence = [pv1, pv2, ...]edges = [(1, 0), (15, 1), ...] #边的两端点序号
edges_confidence = [ev1, ev2, ...]
point_id_to_edges_id = { point1_id : [edge1_id,edge2_id,...], point2_id:[...] }faces = [(15, 1, 0), (39, 60, 38), ...] # 边的三端点序号
faces_confidences = [ef1, ef2, ...]
faces_label = [-1, -1, ...]

image-20240831114117795

所以生成旋转/翻转的数据(数据增强)实际上是对点集vertices的处理

原始点集

image-20240830193251325

在加载点的函数get_vertices_data中对点进行90度旋转

在二维空间中,绕原点逆时针旋转一个角度θ的变换可以用以下公式表示:

新的x' = x * cos(θ) - y * sin(θ)
新的y' = x * sin(θ) + y * cos(θ)

对于90度的旋转(θ = 90° 或 π/2 弧度),cos(π/2) = 0 且 sin(π/2) = 1,所以变换公式简化为:

新的x' = -y
新的y' = x

image-20240830202655128

结果(左侧为原始的,右侧为旋转90度)

image-20240830203613806

image-20240830203349162

image-20240830203400637

image-20240830203414315

image-20240830203426694

封装函数

定义rotate_vertices对点进行旋转,旋转角度(90 / 180 / 270)

定义mirror_vertices对点进行镜像,镜像轴(x / y)

def rotate_vertices(vertices, angle):"""对点进行旋转:param vertices::param angle: 旋转角度(90 / 180 / 270):return:"""if angle == 90:rotated_vertices = [(-y, x) for x, y in vertices]elif angle == 180:rotated_vertices = [(-x, -y) for x, y in vertices]elif angle == 270:rotated_vertices = [(y, -x) for x, y in vertices]return rotated_verticesdef mirror_vertices(vertices, axis):"""对点进行镜像:param vertices::param axis: 镜像轴(x / y):return:"""if axis == 'x':mirrored_vertices = [(x, -y) for x, y in vertices]elif axis == 'y':mirrored_vertices = [(-x, y) for x, y in vertices]return mirrored_vertices

只需要加载点后备份并进行vertices变换便可得到增强的数据

image-20240830210737717

疑问:点的置信度、边的置信度和面的置信度是什么意思,后者是否可以由前者得到

比如一条边有两个点,一个面有三个边(三个点),边/面的置信度是怎么算的?和点的置信度有什么关联?

image-20240830212023852

数据保存

编写保存脚本save_shp.py,实现从gpu中的数据obj_datas保存回shp文件

  • 运行save_shp.py/的test,实现加载数据到obj_datas并保存成shp文件

  • 运行load_shp.py, 将保存后的shp再次可视化

结果相同

image-20240831185212390

论文

mesh-gpt论文

Transformer的翻译模型和补全模型

对于补全模型

微信(GPT和Bert的预训练)

mesh—gpt、cad(generate)

编码器:他是谁

Transformer:整个场景表达了怎样的语义,(他是否满足这个语义,他在这个语义场景中扮演什么)

long long ago, .....

Next

Transformer-GPT原理

Mesh-GPT demo

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Magnet Acquire 2.71 Windows - 适用于智能手机和计算机的数字取证采集工具

Magnet Acquire 2.71 Windows - 适用于智能手机和计算机的数字取证采集工具Magnet Acquire 2.71 Windows - 适用于智能手机和计算机的数字取证采集工具 Digital Forensic Software 请访问原文链接:https://sysin.org/blog/magnet-acquire/,查看最新版。原创作品,转载请保留出…

Transformer网络架构

只有理解了,才能在超越经验的情况下,生成出合理的内容编解码encoder-decoder结构什么是“码”?剥离形式的表示(各种语言的不同),剩下的语义关系(上下文语义)“码”的要求:1、数字化 2、语义关系的距离分词器和one-hot编码在2不足需要找到一个纬度高,但是又没那么高的…

Gluon 编译 JavaFx - android apk

Gluon 编译 JavaFx -> android apk 本文的内容属 在linux服务器上 搭建 Gluon 编译 android-apk 环境 这一篇文章直接跟着官网操作一次性成功 虚拟机版本centos8 Architecture: x86-64开始安装相关前置工具gcc version 6 or higher ld version 2.26 or highersudo yum updat…

vue axios

axios是基于promise的http库,可以用在浏览器和node.js中 特性:从浏览器中创建XMLHttpRequests、从node.js创建http请求、支持promiseApi、拦截请求和响应、取消请求、自动转换JSON数据、客户端支持防御xsrf axios就是一个库,也可以单独独立出来发送ajax。 安装: npm install…

正点原子Linux C应用编程:移植tslib并使其适配7寸LCD1024*600的GT911触摸驱动

正点原子Linux C应用编程:移植tslib并使其适配7寸LCD1024*600的GT911触摸驱动 作者在学习【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.4时,发现移植tslib后,触摸事件触发不正常。 使用的硬件版本:正点原子 I.MX6U ALPHA V2.4版本底板,LCD:正点原子7寸1024*600,型号A…

记一次Hyperf定时任务内存异常问题

背景 最近时不时收到 K8S 告警提示项目 POD 出现 OOM 问题,只要触发了项目重新部署或者把 POD 删掉,内存就恢复了,过了一段时间才缓慢增长(基本上要隔几天,这也是这个问题比较难定位和复现的原因) 分析 起初以为是某一个SQL没有限制 limit 或者是程序有死循环把内存跑满了…

河道AI智能视频分析识别系统

河道AI智能视频分析识别系统智能检测方式,智能检测分析河道两边意外违反规定问题,确保人民人身安全问题,河道AI智能视频分析识别系统在初期处理伤害安全性的问题,保证水环境生态安全和人民生命安全安全性,使人和水的影响做到和睦情况,使不足的水源为社会经济的协调发展作…

河道水库雨水情视频监控智能分析系统

河道水库雨水情视频监控智能分析系统可以提升水利枢纽的安全性,这个问题一直是防汛管理方法机构重视的一个主要问题。为加强水利枢纽安全性监管,管理方法单位急需河道水库雨水情视频监控智能分析系统,实时监测降水信息内容,为防汛防灾减灾给予精确、立即的数据信息。系统基…

【运维系列】如何为NETCONF开放安全策略

NETCONF(Network Configuration Protocol,网络配置协议)是一种基于XML的网络管理协议,它提供了一种对网络设备进行配置和管理的可编程方法。NETCONF协议的传输层可以是BEEP、SSH、TLS或SOAP。 由于RFC协议规定必须支持SSH,所以目前SSH是NETCONF使用最广泛的传输层协议,当…

【运维系列】如何为SNMP开放安全策略

SNMP是最广泛使用的网络管理协议。 网管软件作为SNMP Manager,向被管设备中的SNMP Agent发出管理操作的请求。 被管设备在检测到异常时,也会主动向SNMP Manager发送Trap信息。 也就是说,网管软件和被管设备都会主动发起连接,如图 6-1 所示。【图】SNMP典型组网和业务访问关…

MySQL中的group by的意义

这是一道leetcode上数据库的题目,一开始确实是没有想明白哦。

算法-动态规划-多重背包

LeetCode算法刷题 动态规划之多重背包0. 动态规划五部曲:确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组