JSENet
基于 KPConv 的 3D 点云联合语义分割与边缘检测网络,ECCV 2020 论文官方实现
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 KPConv 的 3D 点云联合语义分割与边缘检测网络,ECCV 2020 论文官方实现
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
JSENet 是一个基于 TensorFlow 的 3D 点云联合语义分割与边缘检测深度学习框架,在单次前向传播中同时输出场景语义标签和边界轮廓,无需额外的后处理步骤,大幅简化了 3D 场景理解流水线。
3D 点云感知是自动驾驶、机器人导航和智能制造的核心技术之一。2019-2020 年,业界主流方案(如 PointNet++、KPConv)都将语义分割和边缘检测视为两个独立任务分别处理——先做分割,再对结果做边缘提取。这种"先分割后处理"的级联方式存在明显缺陷:边缘检测的精度完全受制于分割质量,边界区域容易出现漏检和错判。
针对这一痛点,来自国内研究机构的团队在 ECCV 2020 发表了 JSENet(Joint Semantic Segmentation and Edge Detection Network)。论文第一作者胡泽宇(Hu Zeyu)等人在 KPConv 基础上,创新性地提出"语义分支-边缘分支协同学习"机制,让两个任务在特征层面互相促进:语义分割帮助模型理解物体的完整结构,边缘检测则为语义预测提供精确的空间约束。
JSENet 基于的 KPConv 是点云深度学习领域影响力最大的工作之一,由 Hugues Thomas 等人提出,核心思想是用可学习的"核点"替代传统卷积的固定权重网格,在非结构化点云上实现了等价于图像卷积的操作。
JSENet 的核心设计是双分支协同结构。模型接收原始点云(包含 xyz 坐标和颜色/反射强度等特征)作为输入,通过 KPConv 编码器逐层下采样提取多尺度特征。解码阶段同时构建两条分支:
两条分支在解码器的多个层级上存在密集的特征交互。边缘分支通过识别出的边界点,帮助语义分支在物体交界处做出更准确的判断;语义分支提供的类别一致性信息,则反过来增强边缘分支对"有意义边界"的识别能力。
JSENet 代码库包含两套自定义计算算子,均需从源码编译:
tf_custom_ops/compile_op.shcpp_wrappers/compile_wrappers.sh这两套算子是性能关键——S3DIS 室内场景单帧包含数万个点,没有 GPU 加速的邻域搜索根本无法在合理时间内完成训练。
代码库提供两个数据集的训练脚本:
| 数据集 | 规模 | 场景类型 | 类别数 |
|---|---|---|---|
| S3DIS | 6 个室内区域,271 个房间 | 办公室、会议室、走廊等 | 13 类 |
| ScanNet | 1513 个扫描场景 | 家庭、商场等 | 21 类 |
S3DIS 提供预处理好的 demo 数据集(Fold-5,903 MB),方便快速验证模型效果。完整 S3DIS 数据集约 4.8 GB,需要额外申请下载。
项目基于成熟的 KPConv 框架,代码组织清晰:模型定义在 models/ 目录,数据处理在 dataset_modules/,工具函数在 utils/。这种模块化设计便于复用和扩展——如果要将自己的数据集接入 JSENet,只需在 dataset_modules/ 下实现对应的数据加载类即可。
JSENet.py 核心类约 500 行代码,职责单一(仅负责模型搭建和训练循环),network_blocks.py 封装了 KPConv 卷积、上下采样、特征融合等基础操作,复用度高。
README 结构完整,包含安装、数据准备、训练、测试全流程说明,引用格式规范。无自动化测试(无 pytest/unittest),对于学术代码库而言属于正常现象。代码中关键操作(如 ind_max_pool)有详细注释说明输入输出维度。
| 维度 | 评估 |
|---|---|
| 安装难度 | 高:需编译 TF 自定义 OP + C++ 算子,TF1.x 依赖复杂 |
| 硬件要求 | 高:必须 NVIDIA GPU,8GB+ 显存,CUDA 10.0+ |
| 数据准备 | 中:demo 数据可直接下载,完整数据集需额外申请 |
| 使用门槛 | 高:面向有 3D 视觉研究经验的开发者 |
纯 CLI 操作,无 Web UI。对普通用户而言,不建议直接部署;对研究者,参考 KPConv INSTALL.md 按步骤操作是唯一可行路径。
JSENet 的核心贡献——"联合学习"范式——已在 3D 视觉领域得到广泛借鉴。2021 年以后的 PointNeXt、Point Transformer 等工作或多或少吸收了多任务协同的思路。对于想深入研究 3D 点云语义分割的研究者,JSENet 是理解 KPConv 机制和联合学习设计的优秀参考实现。
该项目的另一层价值在于工程示范:如何用 TensorFlow 实现非结构化数据的卷积操作、如何编译和集成 C++/CUDA 算子、如何组织大规模点云数据集的训练代码——这些工程经验在任何 3D 视觉项目中都是可迁移的。