上海哪家網(wǎng)站建得好百度seo最成功的優(yōu)化
?? 歡迎大家來訪Srlua的博文(づ ̄3 ̄)づ╭?~??🌟🌟 歡迎各位親愛的讀者,感謝你們抽出寶貴的時間來閱讀我的文章。
我是Srlua小謝,在這里我會分享我的知識和經(jīng)驗。🎥
希望在這里,我們能一起探索IT世界的奧妙,提升我們的技能。🔮
記得先點贊👍后閱讀哦~ 👏👏
📘📚 所屬專欄:傳知代碼論文復(fù)現(xiàn)
歡迎訪問我的主頁:Srlua小謝 獲取更多信息和資源。??🌙🌙
??
??
目錄
概述
模型結(jié)構(gòu)
模型總覽圖
點云的投影
視圖間適配器
演示效果
零樣本投影
少樣本投影
核心邏輯
使用方式
部署方式
參考文獻
本文所有資源均可在該地址處獲取。
概述
CLIP模型學(xué)習(xí)將圖像與其在開放詞匯設(shè)置中的相應(yīng)文本進行匹配,獲得了良好的效果,研究人員開始逐漸探索在2D中通過大規(guī)模圖像文本對預(yù)訓(xùn)練好的模型是否能普適到3D知識中。PointCLIP在沒有渲染的情況下將點云投影到多視角深度圖中來編碼點云,并聚合視圖層面的零樣本預(yù)測以實現(xiàn)從2D到3D的知識轉(zhuǎn)移,是在低資源成本和數(shù)據(jù)體制下通過CLIP進行有效三維點云理解的一種很有前途的代替方案。
模型結(jié)構(gòu)
模型總覽圖
- PointCLIP模型首先將點云投影到不同視圖下,形成M個深度圖作為圖像信息。之后采用CLIP模型,對圖像信息和文本信息進行編碼。計算兩者的余弦相似度,得到零樣本輸出結(jié)果。
- 當(dāng)進行少樣本輸出時,設(shè)計了一個輕量級的視圖間適配器來聚合多視圖表示并生成自適應(yīng)特征,通過微調(diào)這樣的適配器并凍結(jié)所有其他的模態(tài),PointCLIP的性能得到了很大的提高。
點云的投影
- 為了將點云轉(zhuǎn)換為CLIP可訪問的表示,從多個視圖生成投影圖像,以消除3D和2D之間的差距。
- 以俯視圖為例,針對點云中的某個點(x,y,z),它在俯視圖下的坐標(biāo)為([x/z,y/z],z為深度,此時滿足近大遠小的特點。即z越遠,物體越小,和現(xiàn)實生活中的照片一致)
視圖間適配器
- 對整個模型進行微調(diào),巨大的參數(shù)和不充分的樣本很容易會導(dǎo)致過擬合
- 視圖間適配器時一個三層感知機模型,增加該結(jié)構(gòu)可以在少樣本設(shè)置下進一步提高模型的性能
- 采用殘差結(jié)構(gòu)將CLIP的2D知識與適配器新學(xué)習(xí)的3D少樣本知識進行融合,進一步的促進了跨模態(tài)的知識轉(zhuǎn)移,同時可以更好的進行視圖預(yù)測。
演示效果
零樣本投影
少樣本投影
核心邏輯
# PointCLIP主體結(jié)構(gòu)
# 目的是為了獲得圖像和文本之間匹配的概率是多少
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的主體結(jié)構(gòu)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
使用方式
- 可視化時:修改需要讀入的文件路徑,可以查看不同文件下的點云形式
- 以零樣本方式進行訓(xùn)練
cd scripts
bash zeroshot.sh - 以少樣本方式訓(xùn)練
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地址
??
希望對你有幫助!加油!
若您認為本文內(nèi)容有益,請不吝賜予贊同并訂閱,以便持續(xù)接收有價值的信息。衷心感謝您的關(guān)注和支持!