pointnet與++原理與代碼介紹,復現


pointnet與++最全介紹:

https://www.cnblogs.com/yibeimingyue/category/1579208.html

原理視頻文字版:https://www.cnblogs.com/yibeimingyue/p/12002469.html

代碼與原理看:https://zhuanlan.zhihu.com/p/57761392

pointNet:

https://blog.csdn.net/qq_15332903/article/details/80224387

pointNet++:

https://blog.csdn.net/qq_15332903/article/details/80261951

https://zhuanlan.zhihu.com/p/57761392

補充:只看++部分即可https://mp.weixin.qq.com/s/N8TLS4WIYT86YhPAzE3--g

代碼: https://github.com/charlesq34/pointnet2

?pointnet++分割問題處理?

變換的網絡如何和pointnet結合起來:得到分類和分割網絡

首先輸入一個n*3的矩陣,先做一個輸入的矩陣變換,T-net 變成一個3*3的矩陣,然后通過mlp把每個點投射到64高維空間,在做一個高維空間的變換,形成一個更加歸一化的64維矩陣,繼續做MLP將64維映射到1024維,在1024中可以做對稱性的操作,就是maxpooling,得到globle fearue,1024維度 ,通過級聯的全連接網絡生成k (分類)

 

如果是分割呢?

可以定以成對每個點的分類問題,通過全局坐標是沒法對每個點進行分割的,簡單有效的做法是,將局部單個點的特征和全局的坐標結合起來,實現分割的功能

最簡單的做法是將全局特征重復N遍,和每一個原來單個點的特征連接在一起,相當於單個點在全局特征中進行了一次檢索,檢索到在哪個位置就是哪個類別,對連接起來的特征進行MLP的變換,最后輸出m類相當於m個score:(將單個點和總體的特征連接到一起,判定在總體中的位置,來決定是哪個分類)

 

frustum pointnet視錐體點網.       

 

 

通過最遠點采樣減少點數量,pointNet不改變點數N,但改變特征C.d代表???

C代表特征.C3=C1+C2.分割部分相當於反卷積,將最后的點重新上卷積的方式傳回原來的點上.

interpolate代表根據NL的點,采用鄰近的3點反距離加權插值得到NL-1,將高維的點反距離插值得到與低維相同的點數,將插值得到的特征和之前跳躍連接的特征融合.最后再使用PointNet提取特征.

Conda

查看管理的所有環境conda env list

查看當前環境的所有包conda list

安裝第三方包:conda install requests[=version] 或者 pip install requests
卸載第三方包:conda remove requests 或者 pip uninstall requests
查看已安裝包:conda list 或者 pip list

切換py37環境activate py37

離開環境conda deactivate

刪除環境conda remove -n py37 --all

創建名為py37的環境並指定python版本為3(的最新版本)conda create -n py37 python=3

更新requests第三方包conda update requests

查找包的版本信息conda search package_name

查找指定的包源anaconda search -t conda tensorflow-gpu

顯示指定安裝包的安裝源anaconda show cjj3779/tensorflow-gpu

復現:

查看當前系統版本cat /proc/version

安裝tensorflow: conda install cudatoolkit==9.0 tensorflow-gpu==1.11.0

虛擬環境里cuda不受外界cuda版本影響.

未安:虛擬環境安裝cv2:pip install opencv-python    pip install h5py

tf_ops文件夾中的三個子文件夾的sh文件:

都去掉選項-D_GLIBCXX_USE_CXX11_ABI = 0.

更改tensorflow路徑為:

/home/omnisky/anaconda3/envs/PointNet++/lib/python2.7/site-packages/tensorflow等

Cuda路徑: usr/local/cuda/bin/nvcc

運行sh文件:直接sh 加上文件名.sh

參考博客:https://blog.csdn.net/qq_40196164/article/details/84638410

Scannetv2數據集不好下載,要發郵件之類的:數據集介紹https://blog.csdn.net/weixin_40766438/article/details/102969299

訓練結果:


評估結果:

分割時: python train.py --model=pointnet2_part_seg

出錯:

 

解決:數據集要是解壓后的.

代碼分析:

modelnet_dataset和modelnet_h5_dataset是對源數據集的處理,獲得訓練測試數據集.

多尺度版本pointnet2_cls_msg.py

單尺度版本pointnet2_cls_ssg.py

FPS最遠點采樣:基於cuda的並行計算實現. tf_ops/sampling/tf_sampling_g.cu

用SSG分類網絡進行采樣與分組后進行pointnet, pointnet體現在conv2d、池化、全連接。其中全連接在模型文件pointnet2_cls_ssg等中操作,ssg網絡和conv2d、池化都在pointnet_util文件的pointnet_sa_module方法里。

可視化?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM