使用 dspsift 时, sfmTriangulation 会发生内存泄漏
Bug 1 — GUI 保存会在两个 CameraInit 流程中生成重复的节点 UID 严重度: 高(阻止计算) 摘要: 通过 GUI 保存从"照相机对象两面"模板创建的项目会为镜像节点对生成重复的实例 UID。然后计算会以"需要处理的重复节点"错误而终止。 重现: 1. 启动 Meshroom, 从"主页"→"流程"选项卡打开"照相机对象两面"模板。 2. 设置 CameraInit_1/CameraInit_2 文件夹输入。 3. 保存项目(计算流程强制保存)。 4. 重新打开保存的 .mg 文件并运行"计算所有节点"。 实际情况: 保存的 .mg 文件中包含节点对共享的 UID - 例如 CameraInit_1/CameraInit_2、FeatureExtraction_1/FeatureExtraction_2、FeatureExtraction_3/FeatureExtraction_4、ConvertSfMFormat_2/ConvertSfMFormat_3(36 个节点中有 12 个重复的 UID)。 计算失败: 无法计算,因为需要处理的一些节点重复。 找到第一个 camerainit 和 cameraint2 ... 预期: 保存时每个节点实例都会获得唯一的 UID; 计算继续。 注意: 编辑 .mg 文件以重新生成唯一的 UID(sha1(nodeName))并重新加载可以解决此问题。 此问题的根源在于保存路径 - 一个没有 UID 的项目文件(新模板)在第一次 GUI 保存时会写入重复的 UID。 Bug 2 — "节点 UID 不同于预期的 UID"升级对话框在每次重新加载时出现 中度(美观但持久) 摘要: 在任何 GUI 保存后,每次后续项目重新加载都会触发"检测到兼容性问题"对话框,列出 7 个节点(Texturing_3、DepthMapFilter_3、DepthMap_3、PrepareDenseScene_3、SfMTriangulation_4、SfMMerge_1、SfMTriangulation_2)作为"节点 UID 不同于预期的 UID",并提供升级选项。 点击"是"可以重新生成 UID,但下一次保存/重新加载时对话框会重复出现。 这很可能是与 Bug 1(保存和加载之间 UID 生成不一致)相同的根本原因。 Bug 3 — aliceVision_sfmTriangulation 在使用 dspsift 特征时会发生栈溢出 严重度: 高(阻止"两面"流程) 摘要: SfMTriangulation_2(顶部分支)在特征提取时使用 dspsift 描述符后会定时性地在启动后 3 秒内(返回代码: -11(SIGSEGV))崩溃,在"加载特征"期间或之后。具有相同设置的兄弟节点 SfMTriangulation_3(底部分支)成功,因此崩溃是由特征提取的方式引起的。 重现: 1. 保存任何"两面"项目。 2. 文件 → 打开同一个文件。 3. 升级对话框出现。 点击"是"。 4. 再次保存,再次重新加载 — 对话框返回。 预期: 由版本 X 保存的项目在版本 X 中可以清晰加载。
内容来源: alicevision/Meshroom