[源码梳理][机器学习]PointMAE项目源码梳理和修改思路
Point_MAE项目源码中类的功能梳理。笔者要对它大刀阔斧,但发现自己作为调包侠,对torch的底层很多细节不熟悉,所以细细梳理一下这个项目。
Encoder
- 输入点云(这里为patch),返回该点云的全局特征
- 简单的PointNet代码
- first_conv和second_conv将三维坐标逐步投影到encoder_dim维
- 通过池化,拼接再投影再池化,得到点云的全局特征,返回
Group
输入点,返回center和neighborhood,即patch
MLP
一个两层的多链接层,用于transformer
Attention
- 输入token序列,映射到三倍维度的空间,拆下来三个同维度的就是qkv。(这个操作有意思,既有共享参数,又有独立参数的参数量)
- q乘k的转置,得到attention score。这里也就是attention_map了(为了处理不同大小的点云,这里需要加上padding mask的操作,详见上一篇博客)
- softmax得到attentionmap,然后乘v,过一个fc,drop一下,返回。
- mask map得从Block类输入
Block
-
transformer模块,输入x,输出transformer之后的x,维度不变
-
mask map得从TransformerEncoder和Decoder输入
TransformerEncoder
编码器,过depth个block
TransformerDecoder
解码器,过block,然后norm,过输出头
MaskTransformer
mask掉一些token,剩下的输入到TransformerEncoder,位置信息的处理略
PointMAE
主类,就是论文的pipeline了。先用MaskTransformer,然后用TransformerDecoder。
都得提供mask map。
PointTransformer
用于下游任务的类,encoder接一个head。略
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)