将原始数据读取成histogram和point cloud的格式,同时设计生成式算法实现从histogran到point cloud的学习,实现:hist2pc、提取feature(特征点)
Find a file
2025-06-05 17:28:58 +08:00
.idea write the scheme of the train 2025-06-05 02:10:04 +08:00
data complete the structure 2025-06-05 17:28:58 +08:00
model complete the structure 2025-06-05 17:28:58 +08:00
train complete the structure 2025-06-05 17:28:58 +08:00
.gitignore Ignore folder 2025-06-05 02:14:07 +08:00
main.py complete the structure 2025-06-05 17:28:58 +08:00
readme.md readme 2025-06-02 17:12:20 +08:00

Hist2Point

Usage

usage histogram→feature map用于处理下游任务feature map→generate point cloud用于生成对应spad直方图

encoder 利用卷积层提取特征;

decoder 利用反卷积得到直方图和原始图对比利用pointnet得到点云图统计点云得到直方图然后和原始图对比

graph TD
	  A[(原始点云)] -->H(Histogram) & P(PointCloud)
	  P-->C[CompareModel]-->G(GenPC)
	  H-->E[\Encoder/]-->F(FeatureMap)-->D[/Decoder\]-->G
	  F & P-->S[PCalgo]-->T([Downstream])
  

Encoder 模块

encoder模块的核心是提取spad 3d image的核心feature

其输入是:

\mathcal{X}\in\mathbb{R}^{h\times w\times c}

$(h,~w)$是视角上的长和宽,$c$是time bin的长度。

其输出是:

\mathcal{Z}\in\mathbb{R}^{p\times f}

$p$是特征点的个数, $f$是每个特征点的特征数。

encoder的过程

\mathcal{X}\to\mathcal{Z}:{\rm Conv+pool}

encoder的输入是一个3d 深度图输出是一个2维特征点云。

利用卷积的提取特征能力将3d深度图提取成2维特征点云但这里的特征点云是抽象的特征点云。

若 $f=1$则encoder只是一个正常的特征提取过程若 $f=3$或 $f=4$则encoder除了前面的卷积层作为特征提取模块外还外加了一层一维特征生成模块实际上就是一维卷积操作即通常卷积操作会得到

(b, h, w, c)\xrightarrow{\rm map}(b, p,h',w',c') \xrightarrow{\rm flatten}(b,p,h'\times w'\times c')\xrightarrow{map}(b,p,f)

这样得到的feature map可在理论上为一个特征点云。

Decoder模块

decoder模块的核心是将核心的feature还原成点云或者三维深度图

其输入是:

\mathcal{Z}\in\mathbb{R}^{p\times f}

$p$是特征点的个数, $f$是每个特征点的特征数。

其输出根据设计思想的不同,可以分为两种:

1还原成三维深度图的概率分布

\mathcal{X}\in\mathbb{R}^{h\times w\times c}

$(h,~w)$是视角上的长和宽,$c$是time bin的长度。

此时decoder的过程是

\mathcal{Z}\to\mathcal{X}:{\rm deconv}

这里的过程与正常的图像生成类似,只是维度变多了。

不过,生成的可以是原始图像,但最好的是生成概率密度分布。

2还原成点云

\mathcal{P}\in\mathbb{R}^{n\times3}{\rm or}\mathbb{R}^{n\times 4}

此时decoder的过程是

\mathcal{Z}\to\mathcal{X}:{\rm PointNet}