IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 重建模型标注与对齐工具 sstk + scan2cad -> 正文阅读

[大数据]重建模型标注与对齐工具 sstk + scan2cad

最近有一个任务,对室内场景几何重建得到的模型,进行语义标注和模型替换。通过查找资料发现有两个开源工具和我的需求比较符合,这里简单介绍一下它们各自的功能,并对环境配置的流程进行梳理。

[01] SSTK简介

1)语义分割与标注

  • 输入:输入数据的格式要求如下

    • <assetid>.ply:模型/重建结果;

    • <assetid>.segs.json:模型对应的过分割结果;

    • <assetid>.png:可能的屏幕截图以预览资产;

  • 语义预分割工具:针对.ply模型,ScanNet 分割器使用 Felzenswalb 和 Huttenlocher 的Graph Based Image Segmentation 算法在计算的网格法线上创建基于顶点的分割,生成.segs.json文件。

  • 数据准备:准备描述您的资产的元数据文件和列出您资产的索引文件。最简单的索引是一个 csv 文件,其中列出了您的资产 ID,以及您想要存储的任何资产信息。

  • 官网数据测试
    在这里插入图片描述

  • 真实场景重建结果测试
    在这里插入图片描述

  • 输出

    • *.semseg.json:语义分割结果,json 文件,语义label都是自定义;

    • *.annotated.ply:基于顶点的分割和注释导出 PLY。该层具有顶点位置(x、y、z)、颜色(红色、绿色、蓝色)和标注的 objectId、categoryId、NYU40label(尝试自动映射到 NYU40 标签集)。

  • json文件格式

//.seg.json
{
  "params": {  // segmentation parameters
   "kThresh": "0.0001",
   "segMinVerts": "20",
   "minPoints": "750",
   "maxPoints": "30000",
   "thinThresh": "0.05",
   "flatThresh": "0.001",
   "minLength": "0.02",
   "maxLength": "1"
  },
  "sceneId": "...",  // id of segmented scene
  "segIndices": [1,1,1,1,3,3,15,15,15,15],  // per-vertex index of mesh segment
}
//.semseg.json
{
  "sceneId": "...",  // id of annotated scene
  "appId": "...", // id + version of the tool used to create the annotation
  "segGroups": [
    {
      "id": 0,
      "objectId": 0,
      "segments": [1,4,3],
      "label": "couch"
    },
  ],
  "segmentsFile": "..." // id of the *.segs.json segmentation file referenced
}

2)模型替换

  • 输入
    • *.ply:模型重建结果;
    • *.semseg.json:语义分割与标注结果;
  • 官网数据集测试

在这里插入图片描述

  • 问题:error not found,这个功能去用的话,目前还有一个问题是找不到模型库对应资源,待解决。。。

[02] STK环境配置

参考官网readme

  1. Install node.js:命令如下,node -v命令可查看node当前版本。nvm是node版本管理器,nvm ls命令查看安装的所有node版本,nvm use v10.23.2命令选择当前使用的node版本,注意node和npm的版本对应关系,若npm版本太高导致node不能使用需重装为对应版本。我使用的是node v10.23.2 + npm v6.14.10

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
    source ~/.bashrc
    nvm install v10.23.2
    
  2. Build and run server:命令如下,成功以后即可访问http://localhost:8010进行模型查看,默认的例子是一个沙发。

      cd stk
      ./build.sh
      cd server
      ./run.sh
    
  3. Build client:命令如下,也可直接运行build.sh,每次客户端文件变化时需重新build。

    • cd client
    • Type npm install to install client dependencies
    • Runnpm run build to package the stk source files
      • Use NODE_ENV=dev npm run build to build source maps and have webpack watch for changes.
      • Use NODE_ENV=prod npm run build to optimize (including minify) the JS assets.
  4. Running the server:命令如下,也可直接运行server/run.sh启动服务。

    cd server
    npm install                 
    npm start
    
  5. Specifying Task Configuration:参考官网

    • 修改任务配置文件server/proj/scannet/tasks/segment_annotation/default.config.yml,指向需要标注的资产。
      • scansToAnnotate: filename of your file with list of scans that you people to annotate
      • idPrefix: your asset source
    • 用ln命令在server/static/data目录下创建指向metadata/data文件夹下数据的链接。准备数据时,每个资产库结构如图,例如bf资产库首先有bf.csv 和 bf.json ,记得修改两个文件的路径位置,然后每个场景一个文件夹分别包括 .ply模型 和 .json预分割文件。
  6. data base:安装mysql,安装solr,配置server/config/index.js文件中solr的端口号和config.annDb参数,根据scripts/db下的三个表在mysql数据库中建表。

  7. start annotation

    • 准备好资产后访问http://localhost:8010/scans/segment-annotator-single?condition=manual&userId=username&taskMode=new&modelId=nyu2.bedroom_0114
    • 其中 modelId = 资产库名.场景名
    • 在右侧输入框中输入标签,再选择左侧模型中对应的面片,标注80%以上即可点击next按钮保存
  8. export annotation

    • 访问http://localhost:8010/scans/segment-annotations/list?condition=manual查看所有标注好的模型
    • 运行ssc文件夹下的js代码,导出*.semseg.json(语义分割文件)和*.annotated.ply(使用基于顶点的分割和注释的点云文件)
  9. Scan-Model-Aligner:

    • 访问http://localhost:8010/scans/segment-annotations/list?conditio进行CAD模型选择和对齐,但我这里的模型库还有一些问题不能显示模型并进行交互。

[03] Scan2cad简介

Scan2cad(CVPR 2019 oral)

  • 工具:该论文提供了一个webapp进行标注,实现重建模型到CAD模型的选择和对齐;
  • 输入
    • scene.ply:模型/重建结果;
    • scene.labels.ply:模型对应的语义分割结果,在stk第一步中由export-annotated-ply可以导出;
    • .obj:CAD模型库,作者用的是ShapeNet数据集里的模型;
  • 官网数据集测试
    在这里插入图片描述
    在这里插入图片描述
  • 标注结果
  • 输出

    • *.json:CAD模型的标注结果,json格式,包括模型label和9DOF等;

    • *.ply:根据标注的json和模型库,运行Annotation2Mesh这个python脚本,得到替换模型的组合,ply格式;

[04] Scan2cad环境配置

参考官网readme,这个配置比较简单

./server/run.sh 
visit `http://localhost:8080/Scan2CAD/new/scene0470_00 进行替换

cd ~/code/solr-8.11.1/bin
./solr start
 

一些其它安装配置参考教程如下:

  1. node+npm版本对应关系 [Link]
  2. mysql 常用命令 [Link]
  3. ubuntu安装solr [Link]
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:49:32  更:2022-05-01 15:50:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:24:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码