MVSnet 代码详解(pytorch)

大致过一下MVSnet 论文中核心的点对应代码应该怎么写。

forward 函数需要 照片,映射矩阵,以及深度值。 照片的shape是 (1,5,3,1184,1600)代表着1个batch,5张图片,然后一次是每张图片的channel和大小。projection_matrix是 (1,5,4,4)代表着5个(4*4)的举证。深度shape是(192,1) (这个还不知道为什么是这个shape)。

首先这输入进入self.feature里面去提取特征,self.feature 是一个feature net。他包括了6层 con2d +batchnorm2d

得到特征之后,就需要构建cost volume。

homo_warping是一个比较重要的函数,他的主要功能就是去实现differentiable homography。

这个函数需要src_fearture,src projection metrics, reference projection matrix,以及相对应的depth value。我的理解是,这里给到的 src_projection matrix是指,从src的相机坐标系投射到世界坐标系的投影矩阵。同理reference projection matrix 也是从reference image 的相机坐标系投影到世界坐标系。我们想要的是,将src的特征投影到ref的feature plane 上面。通过,src_projection左乘ref_projection的逆得到先将src投射到世界坐标系,然后再讲它们从世界坐标系中投射到ref plane上。

首先使用torch.meshfgrid这个函数来初始化点云。这个点之后xy两个方向,我们之后继续将生成的点的Z轴的值初始化成1。 然后初始化,depth volume. 创建一个深度网格。

其实上面三个图片的代码是在实现一下这个公式:

然后使用src_feature 在这个网格中进行采样。

采样得到的特征的shape是(1,32,192,296,400),大小和特征图大小一致,只是多了一个用来表示深度范围的维度。因为mvs 它不是要计算精确的depth,而是一个depth probability。这个应该对应的是原图中画圈的地方。

然后对得到的feature volume 之后, 把 feature volume 合成一个 大的volume

下一步需要计算cost regularization,它使用的是一个类似于U-net的网络啊

将得到的cost_volume 做一个 softmax得到 probability volume ,然后用回归深度。

最后的refinement 网络 就是一个很简单的小网络。

相关推荐
麦聪聊数据2 分钟前
为什么 AI Agent 需要 RESTful API 而不是直接执行 SQL?
人工智能·sql·restful
Sagittarius_A*2 分钟前
霍夫变换:几何特征检测与量化验证【计算机视觉】
图像处理·人工智能·opencv·算法·计算机视觉·霍夫变换
这张生成的图像能检测吗3 分钟前
(论文速读)Mono3DVLT:基于单眼视频的3D视觉语言跟踪
深度学习·计算机视觉·视觉语言模型·3d目标追踪·单目视频
Oflycomm3 分钟前
瑞昱亮相 AWE 2026:从 Wi-Fi 7 到 AIoT,全场景连接能力再升级
人工智能·wifi模组·qogrisys·awe·o8852pm·瑞昱芯片
AI精钢4 分钟前
NVIDIA 可以挑战中国 AI 在开源社区的统治地位吗?
人工智能·ai·开源·llm·nvidia·open source·open weight
小陈phd4 分钟前
多模态大模型学习笔记(十八)——基于 DeepSeek-7B 的 LoRA 微调训练实战教程
人工智能·笔记·学习
GISer_Jing5 分钟前
AI Agent技能Skills设计
前端·人工智能·aigc·状态模式
信鸽爱好者6 分钟前
RTX5060显卡+windows CUDA12.8+cuDNN8.9.7+pytorch安装
人工智能·pytorch·windows·深度学习
Allen_LVyingbo8 分钟前
GTC2026前瞻(二)Agentic AI 与开源模型篇+(三)Physical AI 与机器人篇
开发语言·人工智能·数学建模·机器人·开源·知识图谱
FriendshipT8 分钟前
Ultralytics Docker 安装使用教程(以训练 YOLO26 模型为例)
linux·运维·人工智能·目标检测·ubuntu·docker·容器