姓名:劉一婷;學(xué)號(hào):20021210599;學(xué)院:電子工程學(xué)院
轉(zhuǎn)自 https://blog.csdn.net/yongxiebin9947/article/details/79368752
【嵌牛導(dǎo)讀】PointNet 是一種點(diǎn)云分割深度學(xué)習(xí)框架,它到底有什么作用?
【嵌牛鼻子】PointNet
【嵌牛提問】PointNet的流程是什么?
【嵌牛正文】
PointNet 是斯垣福大學(xué)在2016年提出的一種點(diǎn)云分類/分割深度學(xué)習(xí)框架。眾所周知,點(diǎn)云在分類或分割時(shí)存在空間關(guān)系不規(guī)則的特點(diǎn),因此不能直接將已有的圖像分類分割框架套用到點(diǎn)云上,也因此在點(diǎn)云領(lǐng)域產(chǎn)生了許多基于將點(diǎn)云體素化(格網(wǎng)化)的深度學(xué)習(xí)框架,取得了很好的效果。但是將點(diǎn)云體素化勢(shì)必會(huì)改變點(diǎn)云數(shù)據(jù)的原始特征,造成不必要的數(shù)據(jù)損失,并且額外增加了工作量,而 PointNet 采用了原始點(diǎn)云的輸入方式,最大限度地保留了點(diǎn)云的空間特征,并在最終的測(cè)試中取得了很好的效果。

? 簡(jiǎn)單介紹可以參考 http://blog.csdn.net/yongxiebin9947/article/details/78706591 ,主要是那張流程圖。文章中的其他地方基本都是對(duì)各種方法的比較與數(shù)學(xué)證明,前者一直在說為啥我這個(gè)框架中的這個(gè)地方要用這個(gè)方法,對(duì)理解這個(gè)框架用途不大;而后者我直接跳過了,等有興趣了(N年過后?)再來深究。
這里主要說一下PointNet的程序在分類模塊實(shí)現(xiàn)的大致流程。
PointNet 官方使用了 tensorflow 實(shí)現(xiàn),代碼寫的相當(dāng)工整易讀,而這個(gè)方法在代碼中實(shí)現(xiàn)起來也比論文中看起來更簡(jiǎn)單。其主要分成以下三部分:數(shù)據(jù)處理 TF圖譜構(gòu)建 開始學(xué)習(xí)
數(shù)據(jù)處理,將點(diǎn)云處理成程序可用的格式,具體實(shí)現(xiàn)在 provider.py 中,主要包含了數(shù)據(jù)下載、預(yù)處理(shuffle、rotate等)、格式轉(zhuǎn)換(hdf5->txt)
TF圖譜
構(gòu)建,綠線框是一些很常規(guī)的操作,對(duì)應(yīng)流程圖中相對(duì)應(yīng)的部分看看就好了。

紅線框部分才是這篇論文一直在強(qiáng)調(diào)、證明的部分。下面先看一下第一個(gè)紅線框中 input_transform_net() 對(duì)應(yīng)的代碼部分(下圖)??梢钥闯觯恼轮械霓D(zhuǎn)換矩陣是使用額外一個(gè)小網(wǎng)絡(luò)(T-Net),對(duì)其輸入訓(xùn)練數(shù)據(jù)而學(xué)習(xí)得到的3*K的矩陣(K=3)。

而第二個(gè)轉(zhuǎn)換矩陣微微有些不同,由于當(dāng)進(jìn)行到這一步的時(shí)候,點(diǎn)云已經(jīng)被處理成了一條條的特征向量(B*N*1*K)。輸入不同了,網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)也自然有了一些變化。最終輸出 B*K*K 的轉(zhuǎn)換矩陣。

在網(wǎng)絡(luò)圖譜整體框架搭好之后,就可以用TF提供的API進(jìn)行訓(xùn)練了。
以上即為 PointNet分類網(wǎng)絡(luò)的大致框架。