ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

三维扫描一键变 CAD:Scan2CAD 把家具模型自动摆进真实房间

三维扫描一键变 CAD:Scan2CAD 把家具模型自动摆进真实房间 三维扫描一键变 CADScan2CAD 把家具模型自动摆进真实房间【免费下载链接】Scan2CAD[CVPR19] Dataset and code used in the research project Scan2CAD: Learning CAD Model Alignment in RGB-D Scans项目地址: https://gitcode.com/gh_mirrors/sc/Scan2CADScan2CAD 是一个把三维扫描转 CAD 的深度学习方案输入一个扫描出的室内场景和一堆 CAD 家具模型它自动告诉你每件家具是哪个模型、放在哪、多大。CVPR 2019 Oral 论文的开源实现数据集覆盖 1506 个扫描场景、14225 个物体、97607 组对应点。先跑起来三步快速上手 第 1 步装环境。克隆仓库装 Python 依赖C 小工具体素化、裁切、网格转换那几个目录各自进目录make一下即可。第 2 步拿数据。这个仓库没有现成的预训练模型权重示例数据就是你的起步包Assets/scannet-sample是一份 ScanNet 示例场景Assets/shapenet-sample是几件 ShapeNet 模型Assets/training-data是训练样本索引。想拉一份示例扫描数据跑一下python3 Assets/download_dataset.py。第 3 步执行转化。下面这条是官方 run.sh 里的核心命令git clone https://gitcode.com/gh_mirrors/sc/Scan2CAD cd Scan2CAD/Network/pytorch python3 ./main.py --name example --weight 64.0 --batch_size 8 \ --train_list ../../Assets/training-data/trainset.json \ --mask_neg 1 --with_scale 1 --with_match 1热图网络训完接着用Alignment9DoF.py解出 9DoF 位姿再用Alignment2Mesh.py把结果转成能打开看的网格一条链路就通了。它是怎么工作的体素化把三维数据变成我的世界方块网络吃不了点云和网格得先变成规整的三维数组。Scan2CAD 把扫描融合成 SDF 符号距离体素网格默认分辨率 3cm、截断距离 15cmCAD 模型变成 df 距离网格——相当于把房间变成我的世界场景每个小方块里存着离表面有多远。这块逻辑在Routines/DFGen/和CADVoxelization.py里。3D CNN 对应预测玩一局找同一处网络Network/pytorch/ 下的 model.py同时看扫描裁剪块和候选 CAD输出热图指明扫描上的特征点对应到 CAD 的哪个位置——就像找茬游戏给你一张实拍的椅子和一张理想化的椅模让你指认靠背落在哪儿。训练样本正是这样的成对数据。9DoF 姿态优化推、转、缩放推到严丝合缝热图只告诉你在哪儿。网络还顺带预测语义匹配这俩是不是同一类东西和缩放比剩下的交给优化求解器平移 3 个方向、旋转 3 个方向、缩放 3 个方向共 9 个参数一起解把 CAD 又推又转又缩放直到卡进扫描里。位姿运算基于 SE3 李群代码在Routines/AlignmentHeatmap/。调参微调出效果 参数都是main.py的命令行参数run.sh里那组就是推荐起点训练太慢先看--batch_size8和--n_threads4显存富余就把 batch_size 往上加。损失降不动把--lr从默认 0.01 降到 0.001官方脚本就是这么设的。负样本干扰大保持--mask_neg 1想让网络学语义判断开--with_match 1想让它预测尺度开--with_scale 1。体素化参数设置扫描侧默认 3cm 体素、15cm 截断。想更细就调小体素但体积和内存大致按分辨率的立方膨胀显卡和硬盘扛得住再动。卡住了怎么办问对齐结果偏了怎么查先看输入——裁剪块是不是完整、候选 CAD 和场景里的东西是否同类。再看输出目录里的predict-match.txt如果是 0说明网络自己就觉得这俩不是一回事问题在匹配而不是位姿。最后比对predict-scale.txt和gt-scale.txt差得远多半是数据或尺度学习的问题。问.vox / .df 文件打不开用Routines/Vox2Mesh/的工具转成网格./main --in 文件.vox --out 文件.ply再拖进 Meshlab 就能看到。问训练日志半天不更新把--interval_eval调小run.sh 用的是 50每 50 个迭代打印一次验证统计。它能帮你做什么 开箱即用的数据Assets/scannet-sampleScanNet 场景网格 语义标签、Assets/shapenet-sample椅子、桌子、垃圾桶等模型、Assets/training-data训练样本对拿它们就能把整条流水线跑通。公开评测Scan2CAD 维护着 CAD 模型对齐的公开 benchmark你的方法可以上去跟别人的比。能延伸的方向改model.py的网络结构、调losses.py的损失权重或者把Routines/Script/的数据管线搬到你自己扫的场景上——体素化 → 生成对应 → 训热图 → 解 9DoF这套流程换个场景照样成立。一间屋子扫得好、家具库备得全Scan2CAD 就能把是哪个、在哪、多大一次算清——这正是三维扫描转 CAD 这条路上很实用的一块起点。把仓库克隆下来照着上面三步从示例数据跑一遍你就知道它适合不适合你的场景了。【免费下载链接】Scan2CAD[CVPR19] Dataset and code used in the research project Scan2CAD: Learning CAD Model Alignment in RGB-D Scans项目地址: https://gitcode.com/gh_mirrors/sc/Scan2CAD创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表