当前位置: 首页 > 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地址

​​

希望对你有帮助!加油!

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

相关文章:

CLIP模型也能处理点云信息

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

利用若依代码生成器实现课程管理模块开发

目录 前言1. 环境准备1.1 数据库表设计与导入 2. 使用若依代码生成器生成模块代码2.1 导入数据库表2.2 配置生成规则2.2.1 基本信息配置2.2.2 字段信息配置2.2.3 生成信息配置 3. 下载与集成生成代码3.1 解压与集成3.2 启动项目并验证 4. 优化与扩展4.1 前端优化4.2 后端扩展 结…...

用Python做数据分析环境搭建及工具使用(Jupyter)

目录 一、Anaconda下载、安装 二、Jupyter 打开 三、Jupyter 常用快捷键 3.1 创建控制台 3.2 命令行模式下的快捷键 3.3 运行模式下快捷键 3.4 代码模式和笔记模式 3.5 编写Python代码 一、Anaconda下载、安装 【最新最全】Anaconda安装python环境_anaconda配置python…...

SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD

目录 一、OFD 简介1.1 什么是 OFD?1.2 什么是 版式文档?1.3 为什么要用 OFD 而不是PDF? 二、ofdrw 简介2.1 定义2.2 Maven 依赖2.3 ofdrw 的 13 个模块 三、PDF/文本/图片 转 OFD(ofdrw-conterver)3.1 介绍&#xff1a…...

linux环境人大金仓数据库修改密码

1.进入人大金仓安装目录 cd /home/opt/Kingbase/ES/V9/Server/bin2.连接数据库 ./ksql -U system -d mydb -h 127.0.0.1 -p 54321-u 用户名 -d 数据库名 -h ip地址 -p 端口号 3.修改密码 ALTER USER system WITH PASSWORD 密码;...

使用ESP32通过Arduino IDE点亮1.8寸TFT显示屏

开发板选择 本次使用开发板模块丝印为ESP32-WROOM-32E 开发板库选择 Arduino IDE上型号选择为ESP32-WROOM-DA Module 显示屏选择 使用显示屏为8针SPI接口显示屏 驱动IC为ST7735S 使用库 使用三个Arduino平台库 分别是 Adafruit_GFXAdafruit_ST7735SPI 代码详解 首…...

Spring Cloud Alibaba(六)

目录: 分布式链路追踪-SkyWalking为什么需要链路追踪什么是SkyWalkingSkyWalking核心概念什么是探针Java AgentJava探针日志监控实现之环境搭建Java探针日志监控实现之探针实现编写探针类TestAgent搭建 ElasticsearchSkyWalking服务环境搭建搭建微服务微服务接入Sky…...

【包教包会】CocosCreator3.x——重写Sprite,圆角、3D翻转、纹理循环、可合批调色板、不影响子节点的位移旋转缩放透明度

一、效果演示 重写Sprite组件,做了以下优化: 1、新增自变换,在不影响子节点的前提下位移、旋转、缩放、改变透明度 新增可合批调色板,支持色相、明暗调节 新增圆角矩形、3D透视旋转、纹理循环 所有功能均支持合批、原生平台&…...

jupyter-lab 环境构建

我平时用来调试各种代码的。 创建环境,安装库 conda create --name jupyterlab python3.12 -y conda activate jupyterlab conda install -c conda-forge jupyterlab nodejs之前用的是3.10的,但是最近安装的时候,发现3.10的python里面的jup…...

【C++】LeetCode:LCR 026. 重排链表

题干 LCR 026. 重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值,而是需要实…...

【Linux】vim编辑器

vim是什么? vim就是命令行模式下的文本编辑器,相当于windows中的记事本,可以用来进行文本编辑。 vim有三种运行模式,分别可以执行不同的操作: 普通模式(Normal Mode):用于浏览和编辑…...

delphi 12 idhttpsever(S)+idhttp(C) 实现简单的JSON API服务

这篇博客展示了如何使用Delphi创建一个简单的HTTP服务器,并处理GET和POST请求。服务器监听6600端口,响应JSON格式的数据。客户端通过IdHttp组件进行GET和POST请求,获取并显示服务器响应的内容。 http服务器测试代码 procedure TForm1.FormSh…...

JVM 主副内存 详解

在 JVM (Java Virtual Machine) 中,内存的设计主要分为主内存和工作内存(又称为线程内存)。这种设计是基于 Java 内存模型(Java Memory Model, JMM) 的规定,它确保了多线程环境下数据的一致性和线程间的通信…...

sscanf与sprintf函数

本期介绍🍖 主要介绍:sscanf()、sprintf()这对输入/输出函数,并详细讲解了这两个函数的应用场景。 概述🍖 在C语言的输出和输入库中,有三对及其相似的库函数:printf()、scanf()、fprintf()、fscanf()、spri…...

【k8s】创建基于sa的token的kubeconfig

需求 创建一个基于sa的token的kubeconfig文件,并用这个文件来访问集群。 具体创建sa 和sa的token请参考文章: 【k8s】给ServiceAccount 创建关联的 Secrets-CSDN博客 创建sa apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata:namespace: jtkjdevnam…...

Gentoo Linux部署LNMP

一、安装nginx 1.gentoo-chxf ~ # emerge -av nginx 提示配置文件需更新 2.gentoo-chxf ~ # etc-update 3.gentoo-chxf ~ # emerge -av nginx 4.查看并启动nginx gentoo-chxf ~ # systemctl status nginx gentoo-chxf ~ # systemctl start nginx gentoo-chxf ~ # syst…...

2411C++,CXImage简单使用

介绍 CxImage是一个可非常简单快速的加载,保存,显示和转换图像的C类. 文件格式和链接的C库 Cximage对象基本上是加了一些成员变量来保存有用信息的一个位图: class CxImage{...protected:void* pDib; //包含标题,调色板,像素BITMAPINFOHEADER head; //标准头文件CXIMAGEINFO…...

什么是 Kubernetes(K8s)?

什么是 Kubernetes(K8s)? Kubernetes(简称 K8s) 是一个用来管理容器的开源工具,它可以自动化部署、扩展和管理容器化应用。简单来说,K8s 就是一个“容器管家”,负责确保你的应用程序…...

深入解析:TypeScript 与 Vue 的完美结合

文章目录 前言一、准备工作二、基本用法三、进阶主题结语 前言 Vue.js 是一款流行的渐进式 JavaScript 框架,它以易于学习和灵活的特性而闻名。TypeScript 则是 JavaScript 的一个超集,它引入了静态类型检查等高级功能,有助于构建更大型且复…...

机器学习周志华学习笔记-第13章<半监督学习>

机器学习周志华学习笔记-第13章<半监督学习> 卷王,请看目录 13半监督学习13.1 生成式方法13.2 半监督SVM13.3 基于分歧的方法13.4 半监督聚类 13半监督学习 前面我们一直围绕的都是监督学习与无监督学习,监督学习指的是训练样本包…...

揭开网易游戏资源黑盒:3个步骤让你成为NPK解包专家

揭开网易游戏资源黑盒:3个步骤让你成为NPK解包专家 【免费下载链接】unnpk 解包网易游戏NeoX引擎NPK文件,如阴阳师、魔法禁书目录。 项目地址: https://gitcode.com/gh_mirrors/un/unnpk 想象一下,当你打开一个网易游戏的安装包&#…...

8051单片机中断向量号计算与配置详解

1. C51中断向量号计算方法解析在8051单片机开发中,中断处理是最核心的功能之一。作为一名长期使用Keil C51工具链的嵌入式开发者,我经常遇到新手询问如何正确计算中断向量号的问题。这个看似简单的数字背后,其实隐藏着8051架构的设计哲学。1.…...

新唐NuEzAI-M55M1开发板:基于Cortex-M55与Ethos-U55的终端AI部署实战

1. 项目概述:当AI遇见微控制器,一场边缘计算的“瘦身革命” 最近,新唐科技(Nuvoton)发布了一款名为NuEzAI-M55M1的开发板,在嵌入式圈子和AI应用开发者中激起了不小的水花。这玩意儿乍一看,又是一…...

Open WebUI企业级部署指南:全功能AI平台架构与生产环境实践

Open WebUI企业级部署指南:全功能AI平台架构与生产环境实践 【免费下载链接】open-webui User-friendly AI Interface (Supports Ollama, OpenAI API, ...) 项目地址: https://gitcode.com/GitHub_Trending/op/open-webui Open WebUI是一个功能强大的自托管A…...

Keil MDK中Flash算法RAM配置的DWORD对齐问题解析

1. 问题现象与背景解析当使用Keil MDK开发环境配合J-LINK或ULINK系列调试器时,在Flash Download配置选项卡中设置Flash算法RAM大小时,可能会遇到"Invalid Number Error: Number must be DWORD Aligned"的错误提示。这个错误通常发生在以下场景…...

5个实用技巧:使用Open Spectrometer Python进行光谱校准的最佳实践

5个实用技巧:使用Open Spectrometer Python进行光谱校准的最佳实践 【免费下载链接】open-spectrometer-python Open Source Spectrometer Python Scripts 项目地址: https://gitcode.com/gh_mirrors/op/open-spectrometer-python Open Spectrometer Python是…...

别再怪PoE不稳定了!手把手教你排查网线、供电、配置三大坑(附真实监控项目踩坑实录)

PoE稳定性实战指南:从网线到供电的深度排查手册 凌晨三点,监控室突然响起警报——某重要区域的摄像头集体离线。值班工程师的第一反应往往是"设备又坏了",但真实情况可能藏在那些容易被忽略的细节里:一根劣质网线在低温…...

嵌入式核心板选型实战:从AI加速到工业控制的设计权衡与趋势

1. 展会现场与行业风向初探上周,我作为飞凌嵌入式的一名老员工,亲身参与了2024上海国际嵌入式展。这不仅仅是一次公司产品的展示,更像是一场行业技术趋势的集中检阅。从人头攒动的展台到同行间热烈的技术交流,你能清晰地感受到&am…...

Playwright跨浏览器自动化测试快速入门与实战指南

1. 为什么是Playwright,而不是Selenium或Cypress?我第一次在团队里推动自动化测试选型时,会议室里争论了快两个小时。有人坚持用Selenium——毕竟它像浏览器自动化领域的“老大哥”,文档多、社区大、招聘JD里常年挂着;…...

Android动态调试实战:密钥提取四步法与JEB深度用法

1. 这不是“破解游戏”,而是一场对Android应用安全边界的系统性测绘你有没有遇到过这样的情况:一个内部工具APK,文档里写着“密钥已硬编码在so中”,但反编译Java层完全找不到明文;或者某SDK的初始化方法里反复调用getS…...