姓名:劉一婷;學(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)的代碼部分(下圖)±υ鳎可以看出舅柜,文章中的轉(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ò)的大致框架僚焦。