泠邸 发表于 2025-6-8 22:04:29

3D Gaussian splatting 07: 代码阅读-训练载入数据和保存结果

目录


[*]3D Gaussian splatting 01: 环境搭建
[*]3D Gaussian splatting 02: 快速评估
[*]3D Gaussian splatting 03: 用户数据训练和结果查看
[*]3D Gaussian splatting 04: 代码阅读-提取相机位姿和稀疏点云
[*]3D Gaussian splatting 05: 代码阅读-训练整体流程
[*]3D Gaussian splatting 06: 代码阅读-训练参数
[*]3D Gaussian splatting 07: 代码阅读-训练载入数据和保存结果
[*]3D Gaussian splatting 08: 代码阅读-渲染
训练载入数据

在 train.py 中载入数据对应的方法调用栈如下, 因为convert.py预处理使用的是colmap, 读取数据最终调用的是 readColmapSceneInfo 方法
Scene(dataset, gaussians)
└─sceneLoadTypeCallbacks["Colmap"](args.source_path, args.images, args.depths, args.eval, args.train_test_exp)
└─readColmapSceneInfo(path, images, depths, eval, train_test_exp, llffhold=8)读取流程是

[*]从 images.bin, cameras.bin 读取相机参数和每一帧的位姿
[*]区分训练集和测试集
[*]从 points3D.bin 读取3D点云
def read_points3D_binary(path_to_model_file):
    """
    see: src/base/reconstruction.cc
      void Reconstruction::ReadPoints3DBinary(const std::string& path)
      void Reconstruction::WritePoints3DBinary(const std::string& path)
    """

    with open(path_to_model_file, "rb") as fid:
      num_points = read_next_bytes(fid, 8, "Q")

      # 创建未初始化的 n * 3 数组, 随机值
      xyzs = np.empty((num_points, 3))
      rgbs = np.empty((num_points, 3))
      errors = np.empty((num_points, 1))

      for p_id in range(num_points):
            binary_point_line_properties = read_next_bytes(
                fid, num_bytes=43, format_char_sequence="QdddBBBd")
            xyz = np.array(binary_point_line_properties)
            rgb = np.array(binary_point_line_properties)
            error = np.array(binary_point_line_properties)
            track_length = read_next_bytes(
                fid, num_bytes=8, format_char_sequence="Q")
            track_elems = read_next_bytes(
                fid, num_bytes=8*track_length,
                format_char_sequence="ii"*track_length)
            xyzs = xyz
            rgbs = rgb
            errors = error
    return xyzs, rgbs, errors里面用到的read_next_bytes方法, 读取一段二进制字节, 使用struct.unpack按指定的格式, 转为对应的变量
def read_next_bytes(fid, num_bytes, format_char_sequence, endian_character="

骆熙华 发表于 2025-11-22 17:10:36

过来提前占个楼

勉欤铅 发表于 2025-11-29 21:21:22

感谢,下载保存了

敖可 发表于 2025-12-11 07:54:55

谢谢分享,试用一下

后彼 发表于 2025-12-11 22:02:33

过来提前占个楼

莘度 发表于 2025-12-18 08:27:13

喜欢鼓捣这些软件,现在用得少,谢谢分享!

汪玉珂 发表于 2025-12-25 08:01:40

新版吗?好像是停更了吧。

万俟谷雪 发表于 2026-1-11 22:27:39

这个有用。

育局糊 发表于 2026-1-17 08:19:47

分享、互助 让互联网精神温暖你我

啖曼烟 发表于 2026-1-17 12:11:30

yyds。多谢分享

呶募妙 发表于 2026-1-18 20:00:57

懂技术并乐意极积无私分享的人越来越少。珍惜

盖彗云 发表于 2026-1-19 10:19:07

鼓励转贴优秀软件安全工具和文档!

打阗渖 发表于 2026-1-21 04:19:13

东西不错很实用谢谢分享

愤血冒 发表于 2026-1-26 05:31:49

谢谢分享,辛苦了

骛扼铮 发表于 2026-1-27 01:24:36

感谢分享,学习下。

凉砧掌 发表于 2026-1-29 05:53:12

感谢分享,下载保存了,貌似很强大

渭茱瀑 发表于 2026-1-30 16:39:43

收藏一下   不知道什么时候能用到

柴古香 发表于 2026-2-4 08:28:26

新版吗?好像是停更了吧。

王妍芳 发表于 2026-2-4 10:40:47

yyds。多谢分享

但婆 发表于 2026-2-5 10:09:58

分享、互助 让互联网精神温暖你我
页: [1] 2
查看完整版本: 3D Gaussian splatting 07: 代码阅读-训练载入数据和保存结果