❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 "编码器是多余的吗?上海AI Lab用ENEL给出答案:3D多模态进入『直给时代』"
大家好,我是蚝油菜花。当全球AI团队在堆叠编码器层数时,上海AI Lab做了一件疯狂的事------他们删掉了整个3D编码器模块。
ENEL的三大颠覆性价值:
- ✅ 点云直通LLM:原始数据直接转换为离散标记,规避分辨率限制
- ✅ 几何语义双杀:混合损失函数+分层聚合,7B模型性能比肩13B
- ✅ 工业级落地:支持激光雷达/医疗影像等实时处理场景
这项突破正在引发学界激辩:传统的编码器-解码器架构,是否已成为3D多模态发展的枷锁?接下来我们将深度拆解其实现原理,手把手演示如何用消费级显卡运行这个颠覆性模型。
🚀 快速阅读
ENEL是创新的无编码器3D大型多模态模型,通过去除3D编码器直接将点云数据转换为离散点标记,与文本标记拼接后输入到大型语言模型(LLM)中。
- 核心功能:ENEL在3D对象分类、字幕生成和视觉问答等任务中表现出色,性能与13B的ShapeLLM相当。
- 技术原理:通过混合语义损失和分层几何聚合策略,ENEL实现了高效的语义编码和几何结构理解。
ENEL 是什么
ENEL(Exploring the Potential of Encoder-free Architectures in 3D LMMs)是创新的无编码器3D大型多模态模型(3D LMM),旨在解决传统编码器架构在3D理解任务中的局限性。ENEL通过去除3D编码器,直接将点云数据转换为离散的点标记,并与文本标记拼接后输入到大型语言模型(LLM)中。
这种设计避免了编码器架构中常见的点云分辨率限制和语义嵌入不匹配问题,使模型能够更高效地处理复杂的3D任务。ENEL通过两种关键策略实现高效语义编码和几何结构理解:一是LLM嵌入的语义编码策略,通过混合语义损失提取高级语义;二是分层几何聚合策略,使LLM能关注点云的局部细节。
ENEL 的主要功能
- 无编码器架构:ENEL去除了传统的3D编码器,直接将点云数据通过标记嵌入模块转换为离散点标记,与文本标记拼接后输入到LLM中,避免了编码器架构中常见的点云分辨率限制和语义嵌入不匹配问题。
- 高级语义提取:ENEL通过LLM嵌入的语义编码策略,在预训练阶段引入混合语义损失(Hybrid Semantic Loss),能提取点云的高级语义特征,同时保留关键的几何结构。
- 局部几何感知:在指令调优阶段,ENEL采用分层几何聚合策略,使LLM能主动感知点云的局部细节,通过聚合和传播操作,将局部几何信息融入LLM的早期层,实现对复杂3D结构的精细理解。
- 多任务3D理解:ENEL在多个3D任务上表现出色,包括3D对象分类、3D对象字幕生成和3D视觉问答(VQA)。7B模型在Objaverse基准测试中达到了55.0%的分类准确率和50.92%的字幕生成GPT分数,性能与13B的ShapeLLM相当。
- 高效语义对齐:ENEL通过无编码器架构实现了点云与文本模态之间的高效语义对齐,能更好地捕捉两者之间的语义相关性,为3D多模态任务提供了更强大的语义基础。
ENEL 的技术原理
- LLM嵌入的语义编码(LLM-embedded Semantic Encoding):在预训练阶段,ENEL通过探索不同的点云自监督损失(如掩码建模损失、重建损失、对比损失和知识蒸馏损失),提出了一种混合语义损失(Hybrid Semantic Loss)。这种损失函数能将点云的高级语义信息嵌入到LLM中,替代传统3D编码器的功能。
- 分层几何聚合(Hierarchical Geometry Aggregation):在指令调优阶段,ENEL引入了分层几何聚合策略。策略通过在LLM的早期层中对点云进行聚合和传播操作,将归纳偏置融入LLM,能关注点云的局部细节。具体而言,使用最远点采样(FPS)和k近邻(k-NN)算法对点云进行下采样和聚合,逐步整合点云的细粒度语义信息。
如何运行 ENEL
1. 安装
- 克隆仓库:
bash
git clone https://github.com/Ivan-Tang-3D/ENEL.git
cd ENEL
- 安装依赖包:
bash
conda create -n ENEL python=3.10 -y
conda activate ENEL
pip install --upgrade pip # enable PEP 660 support
pip install -e .
# * for training
pip install ninja
pip install flash-attn
# * for chamfer_dist
git clone https://github.com/Pang-Yatian/Point-MAE.git
cd ./extensions/chamfer_dist
python setup.py install --user
2. 数据准备
Objaverse 训练数据
- 下载660K Objaverse彩色点云文件(约77GB存储空间),解压并合并文件:
bash
cat Objaverse_660K_8192_npy_split_a* > Objaverse_660K_8192_npy.tar.gz
tar -xvf Objaverse_660K_8192_npy.tar.gz
- 在
ENEL
目录下创建data
文件夹,并创建软链接:
bash
cd ENEL
mkdir data
ln -s /path/to/8192_npy data/objaverse_data
指令跟随数据
- 在
ENEL/data
目录下创建anno_data
文件夹,并下载指令跟随数据:
bash
ENEL/data/anno_data
├── PointLLM_brief_description_660K_filtered.json
├── PointLLM_brief_description_660K.json
└── PointLLM_complex_instruction_70K.json
评估数据
- 下载引用GT文件并放入
anno_data
目录:
bash
ENEL/data/anno_data/PointLLM_brief_description_val_200_GT.json
3. 训练
- 下载初始LLM权重并放入
checkpoints
目录:
bash
cd ENEL
mkdir checkpoints
- 开始训练:
bash
scripts/ENEL_train_stage1.sh
scripts/ENEL_train_stage2.sh
4. 评估
- 下载推理权重并放入
model_zoo
目录:
bash
cd ENEL
bash scripts/eval.sh
- 运行以下命令进行推理和评估:
bash
cd ENEL
bash scripts/eval.sh
资源
- GitHub 仓库 :github.com/Ivan-Tang-3...
- HuggingFace 仓库 :huggingface.co/IvanTang/EN...
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 微信公众号|搜一搜:蚝油菜花 🥦