当前位置: 首页 > news >正文

MuRF代码阅读

对图像Size的处理, 以适应Transformer

  • MVSPlat 当中使用 Center_Crop 裁剪图像,适用于 Transformer 的32 倍数, 其中 焦距 f 不变化,只改变 cx,cy.
  • MuRF 直接对图像进行 插值,合成理想的 size. 根据 ori_sizeinference_size 计算出来 scale, 然后分别乘上 对应的 内参。 这个时候 内参数的 所有参数fcx,cy都会改变。
 ori_size = var.images.shape[3:]
scale_factor_y = inference_size[0] / ori_size[0]
scale_factor_x = inference_size[1] / ori_size[1]tmp_imgs = var.images.view(-1, 3, *ori_size)
tmp_imgs = F.interpolate(tmp_imgs, size=inference_size, mode='bilinear', align_corners=True)# update intrinsics
intrinsic = var.intrinsics.clone()  # [B, V, 3, 3]
intrinsic[:, :, :1] = intrinsic[:, :, :1] * scale_factor_x
intrinsic[:, :, 1:2] = intrinsic[:,:, 1:2] * scale_factor_y

使用 Transformer 对于图像进行处理,得到不同分辨率的 Feature Map

# extract multi-view image features,用列表存储
# list of [B, V, C, H, W], multi-scale, resolution from low to high
ref_feats_list = self.get_img_feat(ref_images)

Render

生成的 Ray 是从 downsample 之后的图像生成的, 假设原图像的分辨率是(352,1408), 论文中的参数 radiance_subsample_factor = 4, 那么会从 降采样4倍之后的图像 size = (88,352)生成光线。 每条光线如果采样 64 个点,那么组成的 Tensor pts_3D 对应的 shape 是 # [B,HW,D,3], 将这些采样点投影到 feature_map 上面然后计算 Reference Image 之间的 feature 相似度,去得到 Geometry 的 Cues.
在这里插入图片描述

Patch-based for High-Resolution rendering

MuRF 可以对于 高分辨率的图像在 Test 的阶段做 Rendering

sample window on the image

  • 先生成一个小范围的 window. uv像素坐标系;
* window_grid = generate_window_grid(-local_radius, local_radius,-local_radius, local_radius,local_h, local_w, device=grid.device)  
  • 上一部生成的 grid 坐标 [-1,1] 之间转换到 uv像素坐标系;
 b, n, d = grid.shape[:3]# grid is in [-1, 1]color_sample_grid = grid.view(b, n * d, 1, 2)  # [B, H*W*D, 1, 2]color_sample_grid = (color_sample_grid + 1) / 2  # [0, 1]color_sample_grid = torch.cat((color_sample_grid[:, :, :, :1] * (
img_w - 1), color_sample_grid[:, :, :, 1:] * (img_h - 1)), dim=-1)  # image scale
  • window 的 size 和实际采样点坐标相加, 生成 最后的采样范围,变换到[-1,1]之间,使用 grid_sample 函数来实现最后的 query;
 color_sample_grid = color_sample_grid + \
window_grid  # [B, H*W*D, (2R+1)^2, 2]# normalize to [-1, 1]
c = torch.Tensor([(img_w - 1) / 2., (img_h - 1) / 2.]).float().to(color_sample_grid.device)
color_sample_grid = (color_sample_grid - c) / c  # [-1, 1]sampled_color = torch_F.grid_sample(
ref_images[:, view_idx], color_sample_grid, align_corners=True, mode='bilinear', padding_mode='border')
http://www.lryc.cn/news/412376.html

相关文章:

  • pycharm无法导入pyside2模块;“ModuleNotFoundError: No module named ‘PySide2“
  • c语言指针中“数组名的理解”以及“一维数组传参”的本质
  • 计算机毕业设计Python+Flask微博舆情分析 微博情感分析 微博爬虫 微博大数据 舆情监控系统 大数据毕业设计 NLP文本分类 机器学习 深度学习 AI
  • KubeBlocks v0.9 解读|最高可管理 10K 实例的 InstanceSet 是什么?
  • ZW3D二次开发_菜单_禁用/启用表单按钮
  • windows子系统wsl完成本地化设置locale,LC_ALL
  • MYSQL 根据条件order by 动态排序
  • DirectX修复工具下载安装指南:电脑dll修复拿下!6种dll缺失修复方法!
  • vue3(1)虚拟数字键盘的封装,(2)以及子组件改变父组件变量的值进而使子组件实时响应值的变化,(3)子组件调用父组件中的方法(带参)
  • 反序列化靶机serial
  • 扎克伯格说Meta训练Llama 4所需的计算能力是Llama 3的10倍
  • CTFHUB-文件上传-双写绕过
  • RabbitMQ docker部署,并启用MQTT协议
  • Python面试宝典第25题:括号生成
  • 计算机毕业设计选题推荐-社区停车信息管理系统-Java/Python项目实战
  • Python面试整理-自动化运维
  • 自动化测试与手动测试的区别!
  • 下属“软对抗”,工作阳奉阴违怎么办?4大权谋术,让他不敢造次
  • 爬猫眼电ying
  • 政安晨:【Keras机器学习示例演绎】(五十七)—— 基于Transformer的推荐系统
  • 15.4 zookeeper java client之Curator使用(❤❤❤❤❤)
  • 哈默纳科HarmonicDrive谐波减速机的使用寿命计算
  • 前后端完全分离实现登录和退出
  • 生信技能55 - WisecondorX分析结果过滤和质控
  • 待办管理软件电脑版哪个好?待办事项清单app
  • 【Mind+】掌控板入门教程01 “秀”出我创意
  • 操作系统篇--八股文学习第十一天|进程调度算法你了解多少,进程间有哪些通信方式,解释一下进程同步和互斥,以及如何实现进程同步和互斥
  • 慢慢欣赏arm64内核启动6 primary_entry之el2_setup代码第三部分
  • 初谈Linux多线程--线程控制
  • 文件工具类 - FileUtils