当前位置: 首页 > news >正文

CLIP模型也能处理点云信息


✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua小谢,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:传知代码论文复现

欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙

​​

​​

目录

概述

模型结构

模型总览图

点云的投影

视图间适配器

演示效果

零样本投影

少样本投影

核心逻辑

使用方式

部署方式

参考文献


本文所有资源均可在该地址处获取。

概述

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 ..

参考文献

pointclip论文
github地址

​​

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

http://www.lryc.cn/news/496939.html

相关文章:

  • 利用若依代码生成器实现课程管理模块开发
  • 用Python做数据分析环境搭建及工具使用(Jupyter)
  • SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD
  • linux环境人大金仓数据库修改密码
  • 使用ESP32通过Arduino IDE点亮1.8寸TFT显示屏
  • Spring Cloud Alibaba(六)
  • 【包教包会】CocosCreator3.x——重写Sprite,圆角、3D翻转、纹理循环、可合批调色板、不影响子节点的位移旋转缩放透明度
  • jupyter-lab 环境构建
  • 【C++】LeetCode:LCR 026. 重排链表
  • 【Linux】vim编辑器
  • delphi 12 idhttpsever(S)+idhttp(C) 实现简单的JSON API服务
  • JVM 主副内存 详解
  • sscanf与sprintf函数
  • 【k8s】创建基于sa的token的kubeconfig
  • Gentoo Linux部署LNMP
  • 2411C++,CXImage简单使用
  • 什么是 Kubernetes(K8s)?
  • 深入解析:TypeScript 与 Vue 的完美结合
  • 机器学习周志华学习笔记-第13章<半监督学习>
  • 软件工程——期末复习(1)
  • 【JavaEE初阶 — 网络编程】实现基于TCP协议的Echo服务
  • vue结合canvas动态生成水印效果
  • Qt 5 中的 QTextStream 使用指南
  • 中安证件OCR识别技术助力鸿蒙生态:智能化证件识别新体验
  • SpringBoot 框架下基于 MVC 的高校办公室行政事务管理系统:设计开发全解析
  • 【ArkTS】使用AVRecorder录制音频 --内附录音机开发详细代码
  • Selenium3+Python如何操作键盘
  • PLC协议
  • C_字符串的一些函数
  • 使用Native AOT发布C# dll 提供给C++调用