您的位置:首页 > 财经 > 产业 > CLIP模型也能处理点云信息(论文复现)

CLIP模型也能处理点云信息(论文复现)

2024/10/6 2:25:54 来源:https://blog.csdn.net/weixin_62765017/article/details/142207263  浏览:    关键词:CLIP模型也能处理点云信息(论文复现)

CLIP模型也能处理点云信息(论文复现)

本文所涉及所有资源均在传知代码平台可获取

文章目录

    • CLIP模型也能处理点云信息(论文复现)
      • 概述
      • 模型结构
        • 模型总览图
        • 点云的投影
        • 视图间适配器
      • 演示效果
        • 零样本投影
        • 少样本投影
      • 核心逻辑
      • 使用方式
      • 部署方式

概述

CLIP模型学习将图像与其在开放词汇设置中的相应文本进行匹配,获得了良好的效果,研究人员开始逐渐探索在2D中通过大规模图像文本对预训练好的模型是否能普适到3D知识中。PointCLIP在没有渲染的情况下将点云投影到多视角深度图中来编码点云,并聚合视图层面的零样本预测以实现从2D到3D的知识转移,是在低资源成本和数据体制下通过CLIP进行有效三维点云理解的一种很有前途的代替方案

模型结构

模型总览图

在这里插入图片描述

  • PointCLIP模型首先将点云投影到不同视图下,形成M个深度图作为图像信息。之后采用CLIP模型,对图像信息和文本信息进行编码。计算两者的余弦相似度,得到零样本输出结果。
  • 当进行少样本输出时,设计了一个轻量级的视图间适配器来聚合多视图表示并生成自适应特征,通过微调这样的适配器并冻结所有其他的模态,PointCLIP的性能得到了很大的提高。
点云的投影

在这里插入图片描述

  • 为了将点云转换为CLIP可访问的表示,从多个视图生成投影图像,以消除3D和2D之间的差距。
  • 以俯视图为例,针对点云中的某个点(x,y,z),它在俯视图下的坐标为([x/z,y/z],z为深度,此时满足近大远小的特点。即z越远,物体越小,和现实生活中的照片一致)
视图间适配器

在这里插入图片描述

  • 对整个模型进行微调,巨大的参数和不充分的样本很容易会导致过拟合
  • 视图间适配器时一个三层感知机模型,增加该结构可以在少样本设置下进一步提高模型的性能
  • 采用残差结构将CLIP的2D知识与适配器新学习的3D少样本知识进行融合,进一步的促进了跨模态的知识转移,同时可以更好的进行视图预测。

演示效果

零样本投影

在这里插入图片描述

少样本投影

在这里插入图片描述

核心逻辑

# PointCLIP主体结构
# 目的是为了获得图像和文本之间匹配的概率是多少
def forward(self, pc, label=None): # Project to multi-view depth mapsimages = self.mv_proj(pc).type(self.dtype)# Image featuresimage_feat = self.visual_encoder(images)image_feat = self.adapter(image_feat)image_feat = image_feat / image_feat.norm(dim=-1, keepdim=True)   # Store for the best ckptif self.store:self.feat_store.append(image_feat)self.label_store.append(label)# Text featurestext_feat = self.textual_encoder()text_feat = text_feat / text_feat.norm(dim=-1, keepdim=True)# Classification logitslogit_scale = self.logit_scale.exp()logits = logit_scale * image_feat @ text_feat.t() * 1.return logits# Adapter的主体结构def forward(self, feat):img_feat = feat.reshape(-1, self.num_views, self.in_features)res_feat = feat.reshape(-1, self.num_views * self.in_features)# Global featureglobal_feat = self.global_f(img_feat * self.fusion_ratio.reshape(1, -1, 1))# View-wise adapted featuresview_feat = self.view_f(global_feat)# 将全局特征和局部特征进行相加img_feat = view_feat * self.adapter_ratio + res_feat * (1 - self.adapter_ratio)return img_feat

使用方式

  1. 可视化时:修改需要读入的文件路径,可以查看不同文件下的点云形式
  2. 以零样本方式进行训练
    cd scripts
    bash zeroshot.sh
  3. 以少样本方式训练
    cd scripts
    bash fewshot.sh

部署方式

git clone https://github.com/ZrrSkywalker/PointCLIP.git
cd PointCLIPconda create -n pointclip python=3.7
conda activate pointclippip install -r requirements.txt
pip install open3d
pip install opencv-python
pip install matplotlib# Install the according versions of torch and torchvision
conda install pytorch torchvision cudatoolkit
wget https://download.pytorch.org/whl/cu116/torch-1.13.0%2Bcu116-cp37-cp37m-linux_x86_64.whl
pip install torch-1.13.0+cu116-cp37-cp37m-linux_x86_64.whl
wget https://download.pytorch.org/whl/cu116/torchvision-0.13.0%2Bcu116-cp37-cp37m-linux_x86_64.whl
pip torchvision-0.13.0+cu116-cp37-cp37m-linux_x86_64.whl# Install the modified dassl library (no need to re-build if the source code is changed)
cd Dassl3D/
python setup.py developcd ..

文章代码资源点击附件获取

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com