三维重建以及神经渲染中的学习(一)

news2024/11/24 9:21:45

三维重建以及神经渲染中的学习

公众号AI知识物语

本文内容为参加过去一次暑期课程学习时的笔记,浅浅记录下。

显示表征:
点云points:由一组离散三维点表征物体表面
+推理速度快,容易获取
-离散表征,无拓扑关系
在这里插入图片描述

[Fan et al,CVPR 2017]

网格(Meshes):
由离散点和面表征物体表面
+推理速度快,具备拓扑关系
-离散表征,拓扑关系难优化
在这里插入图片描述

[Groueix et al,CVPR 2018]

栅格(Voxels):
整个场景表征为离散化
+推理速度快,可表征拓扑关系
-栅格分辨率受限,可视化的时候要转化为显示表征
在这里插入图片描述
[Maturana et al IROS 2015]

神经隐式表征(Neural Implicit Representation)
+可表征拓扑关系,不受分辨率限制
-推理速度慢,可视化的时候要转为显示表征
在这里插入图片描述
在这里插入图片描述

在三维重建的过程中,不管是否以点云开始,最终我们都想用Mesh网格来呈现其最终表征

那是否可以端到端来优化Mesh?

什么是端到端学习参考:https://www.zhihu.com/question/349900338

接下来一个工作:
如何优化隐式表征,把 marching Cubes变成可导,这样我就可以去优化任意拓扑结构的一个mesh

第二个工作是:
如何优化点云,把pine变成可导,最终还是可以服务于端到端的优化最终的mesh

Marching Cubes是一种用于三维体数据的表面重建算法。它将体数据分割成小的立方体单元,然后根据每个单元内部的数值来确定表面的位置和形状。

简单来说就是遍历每一个栅格,根据每一个栅格的状态去决定其使用的拓扑的结构。
在这里插入图片描述

一个立方体有8个点,状态的话有2^8次方个种类,Marching Cubes算法中把种类大概分为上面几种,然后根据状态去选取对应的拓扑结构。

现在目的想要将Marching Cubes方法变成可导的,这样就可以直接从marching cues 提取出来的mesh把它梯度传回前面的这个隐式的表征。

在这里插入图片描述

上面提到的Marching Cubes有以上2个困难。

右图中,红色点是表示被占用的,绿色的点是空的。

根据其相邻被占用的状态,我们可以决定不同的topology拓扑取值,然后我们一般通过线性插值来得到其位置

-----公式可以表达为 x=d/(d-d’)
以图中0.5 和-0.5 为例子, x= 0.5/ 1 =0.5,举例d_i_j 0.5单位距离

但是在 d=d’的时候会产生奇异值,导致难以变化拓扑结构
在这里插入图片描述

使用 vertex displacement field 替换线性插值

具体解释就是在每一条边都放一个可能交点的位置,再根据occupancy field得到一个概率值

网络结构

在这里插入图片描述

代价函数

在这里插入图片描述

point to mesh loss

occupancy loss:使得场景(车)中间 有一部分是被占用, 四个角是空的
在这里插入图片描述

smoothness loss:约束occupancy,让其更平滑
在这里插入图片描述

curvature loss: 约束相邻两个车轮间,得到这个面的法向量应该是平滑的,来避免一些崎岖的表面

重建结果

在这里插入图片描述
在这里插入图片描述

Deep Marching Cubes:Learning Explicit Surface Representations CVPR2018

后续工作

在这里插入图片描述

论文: Shape as points : A differentiable poisson solver NeurIPS 2021
在这里插入图片描述
在这里插入图片描述

该算法的一个核心思想就是泊松重建
其indicate function的梯度可以被这个表面的点的法向量来近似,方程如上图(但很难计算)

改进

在这里插入图片描述

把泊松方程转换到频域上来求解。

优化过程

在这里插入图片描述

前向传播过程:

采用点云球来初始化(一组点及其法向量)-----使用在频率求解DPSR算法来得到indicator Function(左2图)------通过marching cubes得到指示函数且提出表面------在这个点上去采样,并构造distance loss

在这里插入图片描述

基于learning的方法来重建
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

mysql的聚簇索引和非聚簇索引的区别

MySQL InnoDB存储引擎时,索引类型可分为聚簇索引和非聚簇索引,有时候也通俗的称为主键索引和普通索引。MyISAM的引擎只有非聚簇索引,所以MYSIAM的引擎在查询的时候非主键索引的时候特别快 接下来讨论一下几个问题: 什么是聚簇索…

linux搭建vsftpd服务使用filezilla连接服务

背景:支持使用filezilla上传文件到公司的服务机器上,所以搭建vsftpd支持filezilla进行上传 一、linux机器搭建vsftpd服务 1、先看看自己的机器属于什么发行版,不同的发行版命令不一样 我的是centos,其他发行版命令不一样&#xf…

架构训练营笔记:高可用设计

2-3高可用设计 高可用复杂度模型 分为计算高可用,存储高可用,高可用本质上需要冗余,这里是集群,没有单机。 计算高可用:分为任务分配与任务分解。 计算高可用对比之前的高性能,就是多了状态检测。 任务…

请求响应-实体参数的接受

实体参数的接受 简单实体对象:请求参数名与形参属性对象名相同,定义pojo接受即可,将数据封装到实体类中实体类代码如下: package com.example.POJO;public class User {private String name;private Integer age;public String g…

系统测试——postman的400错误

如果Headers中不勾选Host,调用接口就会报400 Bad Request错误。

Hystrix 断路器

文章目录 1 问题:服务雪崩2 概念3 服务降级3.1 概念:3.2 触发服务降级的情况:3.3 应用3.3.1 依赖3.3.2 解决的问题3.3.3 生产者:3.3.4 消费者:3.3.5 配置全局fallback方法3.3.6 解耦合 4 服务熔断4.1 概念:…

Shell的条件运算语句

目录 IF语句 单分支语句语法语法 多分支结构语法 CASE语句 语法 IF语句 单分支语句语法语法 #写法1 if 条件语句 then内容 fi#写法2 if 条件语句 ;then内容 fi编写一个内容警报器的例子 #!/bin/bash free_mem$(free -m | grep "Mem:" | tr -s " "…

kubernetes源码学习之kube-scheduler

kube-scheduler是kubernetes中的调度程序,负责从api server中获得待分发的pod列表,并为他们找到最合适运行的Node。 基于kubernetes 1.27 基本框架 下面是kubernetes官发给出的框架图,先对kubernetes pod调度的大致流程有一个认识 看一下有…

眼睛:来一场视觉盛宴《手拿把掐》css特效 —— 之听说过CSS【笑】

😷😊🤺🤺🤺前期回顾 打造极简风格动效 —— 5 分钟轻松实现惊艳、震撼人心的视觉效果_彩色之外的博客-CSDN博客 😁 css动画 —— 把你喜欢css动画嵌入到浏览器中_css做的动画效果怎么嵌入网页_彩色之外的…

window电脑修复网络不能正常

问题描述 问题的起点是我打开了OpenAPI公司的GPT,在回答的过程中响应很慢,然后自己开始尝试切换连接的服务器(这里使用到了网络代理),最后自己做了一个操作是 代理软件的这个菜单里面的增强模式选项,结果…

Android爬坑指南————工信部又出新规!

工信部又出新规了! 一、背景二、整改2.1 个人信息保护2.1.1 基本模式(无权限、无个人信息获取模式)腾讯视频网易云音乐 2.1.2 隐私政策内容 2.2 app权限调用2.2.1 应用内权限调用2.2.1.1 获取定位信息和生物特征识别信息2.2.1.2 其他权限 2.3…

渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的?

在上一篇文章中我们介绍了导航相关的流程,那导航被提交后又会怎么样呢? 就进入了渲染阶段。这个阶段很重要,了解其相关流程能让你“看透”页面是如何工作的,有了这些知识,你可以解决一系列相关的问题,比如…

SVR算法简介及与其它回归算法的关系

目录 参考链接 有人可以帮助我理解支持向量回归技术和其他简单回归模型之间的主要区别是什么 支持向量回归找到一个线性函数,表示误差范围 (epsilon) 内的数据。也就是说,大多数点都可以在该边距内找到,如下图所示 这意味着 SVR 比大多数其…

TypeScript 学习笔记(一):基本类型、交叉类型、联合类型、类型断言

文章目录 一、常见类型1. 数组2. 布尔3. 数值4. 字符串5. object6. null 和 undefined7. symbol7.1 作为属性名7.2 属性名遍历7.3 静态方法:Symbol.for()和 Symbol.keyFor()7.4 内置 symbol 值7.4.1 Symbol.hasInstance7.4.2 Symbol.isConcatSpreadable7.4.3 Symbol…

Android 报错,闪退(错误)日志保存到手机内存中,以文本文件的形式保存

1.直接贴代码 import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Environment; import android.util.Log;import com.nuotu.atmBookClient.App;import java.io.File; i…

python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)

简介 本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理。在写脚本时,放到后台运行,想知道执行情况,会通过邮件、SMS(短信)、飞信、微信等方式通知管理员,用的最多的是邮件。在linu…

这份4577页的Java面试PDF,让我成功斩获阿里、字节等大厂offer

我为大家准备了一份超级全面的Java 学习面试笔记,这份电子版笔记涵盖了诸多后端技术栈的面试题和答案,相信可以帮助大家在最短的时间内复习Java后端的大多数技术点和面试题,从而拿到自己心仪的offer。共4577页。整体还是比较清爽的&#xff0…

Postman的细节回顾

之前在学校摸索着玩过postman,工作后要使用postman,发现对于很多细节,这里补充说明一下,当作使用手册。 之所以使用postman,是因为更便捷的查看接口情况,不需要每次在浏览器f12查看。 目录 1 创建请求2 测…

产品经理怎么管理项目进度?

作为在职七年的项目管理人员,在项目进度管理上确实有一点发言权。产品经理作为企业的核心骨干岗位之一,在进行项目进度管理时也会有很多问题出现,那么应该怎样去管理项目进度呢?以下是答主的一些拙见,有需要的朋友们就…

C. Particles

Problem - C - Codeforces 思路:通过题意能够知道如果移除i,那么i-1与i1会合成一个新的,同时后面的往前移动两个单位,并且我们发现可以让1 3 5 7 ... 2*n-1合成一个数,让2 4 6 8 ... 2*n合成一个数,同时我们…