Deeo Closest Point(DCP[1])可以算是小数据集ModelNet40上使用深度学习做配准的开山之作了,首先呈现整体模型架构图:

总体来说,DCP模型主要由4个部分构成:
1. 初始特征生成(Initial Feature Embedding)
2. 注意力机制模块(Attention)
3. 虚拟点对匹配关系生成(Pointer Generation)
4. SVD求解位姿变换
下面按照这几个模块的顺序依次进行分析:

Network

  1. Initial Feature Embedding
    对于输入的XXX(source)与YYY(target)点云,首先使用DGCNN[2]架构或者PointNet[3]进行特征提取Feature Embedding,给点云中的所有点生成一个初始的逐点特征,即:
    X→DGCNNFX,Y→DGCNNFYX\mathop \to \limits^{DGCNN} {F_X},Y\mathop \to \limits^{DGCNN} {F_Y}XDGCNNFX,YDGCNNFY
  2. Attention
    由于以上Feature Embeddings FX,FY{F_X},{F_Y}FX,FY的计算是相互独立的,即FX{F_X}FXFY{F_Y}FY是没有任何交互的,因此进一步为了使两点云的特征能够进行相互感知,DCP使用Attention模块以进行信息交互:

    ϕ(⋅)\phi ( \cdot )ϕ()即transformer操作,可以看出,上式相当于对FX{F_X}FXFX{F_X}FX多加了一个信息余项(residual term)ϕ(⋅)\phi ( \cdot )ϕ().
    经过以上操作,ϕX,ϕY{\phi _X},{\phi _Y}ϕX,ϕY为新的XXXYYY的逐点特征。
  3. Pointer Generation
    经过以上的Feature Embedding操作,接着给点云XXX中的每一个点,利用点云YYY,生成匹配点对correspondences. 例如对xi∈X{x_i} \in XxiX,生成一个点y^i{\hat y_i}y^i与之形成匹配对关系:

    可以看到,y^i{\hat y_i}y^i的形成相当于对点云YYY中的所有点进行加权求和,即利用点云YYY生成一个对应匹配点,而权重由以下式子生成:

    可以看到,即使用xi{x_i}xi的feature与点云YYY的feature做了一个向量内积,接着softmax成概率。
    利用以上公式,即可对点云XXX中的所有点xi{x_i}xi生成一个correspondence y^i{\hat y_i}y^i.
  4. SVD Pose Estimation
    利用以上得到的点对对应关系:xi↔y^i{x_i} \leftrightarrow {\hat y_i}xiy^i
    利用SVD进行位姿求解,这里文章提到传统SVD是不可微的,因此使用[4]中的SVD,以便于梯度反向传播。

Loss & Supervision

这里使用的loss比较直接,使用gt进行监督即可:

正则项为了减少模型的复杂程度。

Experiment

ModelNet40共由40个label下的12311个点云(2048 points)所组成,作者在DCP中将9843/2468个点云划分为训练及测试集。一共进行了三组测试:

  1. Full Dataset Train & Test (9840/2468 for training/testing)
    第一组实验是在全类别下进行,在40个labels下的训练集(大小为9840)下进行网络训练,在测试集(大小为2468)上进行测试,目的是检测DCP在unseen point clouds上的配准效果:
DCP_v2 comment rot_MSE rot_RMSE rot_MAE trans_MSE trans_RMSE trans_MAE
papers 1.307329 1.143385 0.770573 0.000003 0.001786 0.001195
dcp_v2.t7 provided by author 1.217547 1.103425 0.750243 0.000003 0.001696 0.001170
model.best.t7 batch_size = 32 GPU = 3 EPOCH=250 29.563711 5.437252 3.530627 0.000177 0.013301 0.009703
  1. Category Split(unseen categories)(5112/1266 for training/testing)
    第二组实验的目的是测试DCP在unseen categories上的配准效果,因此训练集只包括前20个label(大小为5112),测试集只包括后20个label(大小为1266)
DCP_v2 comment rot_MSE rot_RMSE rot_MAE trans_MSE trans_RMSE trans_MAE
papers 9.923701 3.150191 2.007210 0.000025 0.005039 0.003703
unseen-clean.t7 provided in this issue 10.985620 3.314456 2.153236 0.000035 0.005931 0.004376

由于时间久远,之前训练保存的模型已找不到,因此这里并没有在unseen categories这个设定下重新训练,这里只evaluate了RPMNet[4]作者在this issue中提供的权重。

  1. Resilience to Noise(9840/2468 for training/testing)
    第三组实验目的是测试DCP在噪声扰动下的配准效果,使用第一组实验(即在无噪声添加下训练)得到的权重,在添加噪声下的测试集上进行评估
DCP_v2 comment rot_MSE rot_RMSE rot_MAE trans_MSE trans_RMSE trans_MAE
papers 1.169384 1.081380 0.737479 0.000002 0.001500 0.001053
dcp_v2.t7 provided by author 1.163321 1.078573 0.732567 0.000002 0.001505 0.001056
model.best.t7 batch_size = 32 GPU = 3 EPOCH=250 30.158920 5.491714 3.582376 0.000175 0.013214 0.009648

Analysis

从复现结果里来看,在setting-1与setting-3下效果都比较差,这里很奇怪,由于DCP的默认batch size = 32,而这在12G显存的显卡上单卡是训不起来的,因此用的是3卡同时训练,但得到的效果并没有文章中的结果那么好,这里作者也提到small batch size可能训不出一个好的结果,也许作者的模型是使用一个大batch size在单卡上训练得到的,这里由于硬件限制就没有继续做实验去探究。
另外关于如何训练得到DCP的pretrained model在这个issue中也提到了一些问题,感觉DCP难以复现的问题并不是一个个例。

Reference

[1] Wang Y, Solomon J M. Deep closest point: Learning representations for point cloud registration[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019: 3523-3532.
[2] Wang Y, Sun Y, Liu Z, et al. Dynamic graph cnn for learning on point clouds[J]. Acm Transactions On Graphics (tog), 2019, 38(5): 1-12.
[3] Qi C R, Su H, Mo K, et al. Pointnet: Deep learning on point sets for 3d classification and segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 652-660.
[4] Yew Z J, Lee G H. Rpm-net: Robust point matching using learned features[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020: 11824-11833.

(ICCV 19) Deep Closest Point: Learning Representations for Point Cloud Registration相关推荐

  1. 翻译和理解:Deep Closest Point: Learning Representations for Point Cloud Registration

    Title: Deep Closest Point: Learning Representations for Point Cloud Registration Authors: Yue Wang J ...

  2. Learning Multiview 3D point Cloud Registration论文阅读笔记

    Learning multiview 3D point cloud registration Abstract 提出了一种全新的,端到端的,可学习的多视角三维点云配准算法. 多视角配准往往需要两个阶段 ...

  3. DCP(Deep Closest Point)论文阅读笔记以及详析

    DCP论文阅读笔记 前言 本文中图片仓库位于github,所以如果阅读的时候发现图片加载困难.建议挂个梯子. 作者博客:https://codefmeister.github.io/ 转载前请联系作者 ...

  4. Deep Image Retrieval: Learning global representations for image search

    Deep Image Retrieval: Learning global representations for image search 文中贡献 学习特征权重,构建区域特征. 2. 使用区域推荐 ...

  5. 【HRNet2019】Deep High-Resolution Representation Learning for Visual Recognition

    Deep High-Resolution Representation Learning for Visual Recognition 用于视觉识别的深度高分辨率表示学习 文章地址:https://a ...

  6. 年龄论文阅读——Deep Label Distribution Learning With Label Ambiguity

    论文阅读--Deep Label Distribution Learning With Label Ambiguity 版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.c ...

  7. 模型加速--CLIP-Q: Deep Network Compression Learning by In-Parallel Pruning-Quantization

    CLIP-Q: Deep Network Compression Learning by In-Parallel Pruning-Quantization CVPR2018 http://www.sf ...

  8. Learning representations by back-propagating errors原文解读

    反向传播的原文是: 1986年的<Learning representations by back-propagating errors> xj=∑iyiwji(1)x_j=\sum_iy ...

  9. some understandings about 《Learning representations by back-propagating errors》

    Dear Professor Ronald J. Williams: From<Learning representations by back-propagating errors> t ...

  10. COMA(一): Learning to Communicate with Deep Multi-Agent Reinforcement Learning 论文讲解

    Learning to Communicate with Deep Multi-Agent Reinforcement Learning 论文讲解 论文链接:https://papers.nips.c ...

最新文章

  1. Nginx小功能合集
  2. 2014-06-27nbsp;20:47
  3. JSP入门 el表达式
  4. C语言中最常用标准库
  5. JavaScript中函数的变量提升问题
  6. c#中引用类型作为值参数和引用参数问题
  7. windows系统上安装mysql操作过程及常见错误处理
  8. java服务器修改缓存数据,java监控服务器数据存入缓存
  9. 在字符串中找出第一个只出现一次的字符
  10. 网络协议 21 - RPC 协议(中)- 基于 JSON 的 RESTful 接口协议
  11. 利用Aspose.PDF for .NET实现pdf转word
  12. 马哥Linux第52期-第四周作业
  13. 神经元细胞分布全身吗,人体神经细胞分布图
  14. 在mac上使用nginx配置codeigniter框架一直显示404的问题的一种方法(重启)
  15. 山东理工大学ACM平台题答案 面向对象程序设计上机练习三(有默认参数的函数)1142
  16. 基于Python实现的手写数字识别系统
  17. Linux系统入门学习
  18. 如何让RS485总线挂接更多数量的设备?
  19. Gabor变换(2)
  20. 黑苹果驱动hd4000

热门文章

  1. Sicily.1004. I Conduit!
  2. linux locale字符集设置,Linux下通过locale来设置字符集
  3. 硬核!4.5万字手把手教你搭建MySQL海量数据存储架构!!(全程实战,建议收藏)
  4. python 阮一峰_ES6 Iterator笔记(摘抄至阮一峰的ECMAScript 6入门)
  5. MongoDB之按时间查询
  6. Excel表格导入CAD后,表格内数字后的小数点怎么消除呢?
  7. 贪心 + 优先队列:程序员PIPI
  8. 单片机复位电路的简谈
  9. Docker深入浅出系列
  10. .Net framework3.5装不上解决之道错误代码 0x800F0906、0x800F081F