Pointnet學習以及對代碼的實現

由于點云不是常規數據格式,通常將此類數據轉換為規則的 3D 體素網格或圖像集合,然后再用神經網絡進行處理。數據表示轉換使生成的數據過于龐大。

PointNet是第一個直接處理原始點云的方法。只有全連接層和最大池化層,PointNet網絡在推理速度上具有強大的領先優勢,并且可以很容易地在CPU上并行化。

應對點云的無序性有三種方案:

方案1:排序

高維空間的排序,不可穩定

方案2:假如有N個點,N!種排列訓練一個RNN。

2015年《Order Matters: Sequence to sequence for sets》證明RNN網絡對序列的排序還是有要求的。

方案3:設計對稱函數,因為輸入順序對于對稱函數沒有影響。比如:加法、乘法

PointNet使用的最大池化,是對稱函數。

分類網絡以n個點為輸入,應用輸入和特征變換,然后通過最大池化聚合點特征。輸出是 k 個類的分類分數。

Pointnet網絡的搭建(tensorflow版):

class PointNet(Model):def __init__(self):super(PointNet, self).__init__()self.MLP64 = layers.Conv1D(filters=64, kernel_size=1, strides=1, padding="valid", activation="relu")self.MLP1024 = layers.Conv1D(filters=1024, kernel_size=1, strides=1, padding="valid", activation="relu")self.Dense10 = layers.Dense(10, activation="softmax")def call(self, inputs, training=None, mask=None):x = self.MLP64(inputs)#(Batch,1,1000,64)print(x.shape)x = self.MLP1024(x)#(Batch,1,1000,1024)print(x.shape)x = tf.reduce_max(x, axis=1)#(Batch,1,1024)print(x.shape)x = layers.Flatten()(x)x = self.Dense10(x)#(Batch,10)print(x.shape)return xmodel = PointNet()
input_shape = (1, 1000, 3)
model.build(input_shape)
model.summary()

這是我看pointnet論文后復現的分類網絡,由于以前總是對圖像進行2D卷積,這里對輸入的理解還不深刻。采用了(B,H,W,C)的輸入結構,因為是每個點有3個特征,所以將其處理為(B,1,W,C)的結構。但后期發現其比較復雜,所以改進了一下,使用(B,Len,C)的輸入結構。

在深度學習中,處理點云數據(Point Cloud Data)或3D形狀數據與傳統的2D圖像數據有所不同。

原始輸入結構: (B, H, W, C)

  • B:代表批次大小(Batch Size),即一次輸入到網絡中的樣本數量。
  • H?和?W:在2D圖像中,它們分別代表圖像的高度(Height)和寬度(Width)。但在處理點云數據時,由于點云本質上是一組無序的點集合,所以這里的 H 和 W 可能并不是直觀意義上的“高度”和“寬度”。在某些情況下,它們可能被用來表示某種形式的網格化點云,但這并不是PointNet的初衷。
  • C:代表通道數(Channels),對于RGB圖像來說,C=3(紅、綠、藍)。但在點云數據中,每個點可能有多個特征,比如三維坐標(x, y, z)以及其他屬性(如顏色、密度等)。

轉換為 (B, 1, W, C)

  • 將 H 設置為 1 可能是為了嘗試將點云數據強制適配到更常見的4D張量結構(即 (B, H, W, C)),但這并不是處理點云數據的最佳方式。因為點云數據中的點是無序的,并且沒有固定的網格結構。

改進后的輸入結構: (B, Len, C)

  • B:仍然代表批次大小。
  • Len:代表每個樣本中點的數量(Length of points)。這是處理點云數據的更自然的方式,因為它直接反映了點云數據的特點——即一組無序的點集合。
  • C:仍然代表每個點的特征通道數。

使用 (B, Len, C) 的輸入結構可以更直接地處理點云數據,并且符合PointNet的設計初衷。

def Point_MLP(inputs, num_filters, use_bn=True, activation='relu'):x = layers.Conv1D(num_filters, kernel_size=1, activation=activation, padding='valid')(inputs)if use_bn:x = tf.keras.layers.BatchNormalization()(x)x = tf.keras.layers.Activation(activation)(x)return xdef Model_Point(point_num, feature_num, mode):inputs = layers.Input(shape=(point_num, feature_num))x64 = Point_MLP(inputs, 64) #(B,N,64)x512 = Point_MLP(x64, 512)x1024 = Point_MLP(x512, 1024) #(B,N,1024)gloable = tf.reduce_max(x1024, axis=1) #(None, 1024)if mode == "clc":x = layers.Flatten()(gloable)x = layers.Dense(10, activation="softmax")(x)model = Model(inputs=inputs, outputs=x)if mode == "seg":global_feature_tiled = tf.tile(tf.expand_dims(gloable, 1), [1, tf.shape(x512)[1], 1])concatenated_features = tf.concat([x512, global_feature_tiled], axis=2)#concatenated_features 的形狀是 (batch_size, num_points, local_feature_dim + global_feature_dim)model = Model(inputs=inputs, outputs=concatenated_features)return modelPointNet = Model_Point(10000, 3, mode="clc")
PointNet.summary()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21373.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21373.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21373.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android串口調試ADB

在Android設備上,通過串口(通常指的是ADB,即Android Debug Bridge)來執行dumpsys命令來檢查某個包(例如com.android.bluetooth)是否支持某個服務(如A2dpSinkService)是開發者或高級用…

深入理解 Python 迭代器與生成器:詳細指南

迭代器和生成器是 Python 中強大的特性,用于簡化代碼和提高效率。它們允許我們在需要時逐步計算結果,避免一次性加載所有數據到內存中。本文將詳細介紹 Python 迭代器和生成器的基本語法、命令、示例、應用場景、注意事項,并進行總結。 迭代…

Android在不同層面增加應用

1 App 應用代碼一般在開發者的項目目錄下,packages/apps/YourApp/,比如app/src/main/java目錄下 對于系統應用,源代碼可能位于packages/apps/目錄下,例如packages/apps/Settings。 用戶安裝的應用(從Google Play或其…

代碼隨想錄--哈希表--兩數之和

題目 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。 示例: 給定 nums [2, 7, 11, 15], t…

李廉洋:6.3黃金原油下周一開盤行情價格漲跌趨勢分析及最新操作建議多空布局

黃金消息面分析:上周黃金市場的走勢受到了PCE通脹數據和美聯儲政策預期的顯著影響。盡管市場對黃金的長期看漲情緒依然存在,但短期內金價的波動性預計將持續。4月份的PCE通脹數據顯示價格壓力有所降溫,這一結果與分析師預期一致,但…

2024年6月2日 (周日) 葉子游戲新聞

中醫百科中藥: 中醫百科中藥是一款非常強大的中藥知識科普軟件,該應用提供500多味中草藥的文獻資料,強大的搜索功能可根據功效、特點和關鍵詞來快速查找中藥,而且每味中藥的圖片、功效、主治、炮制方法等百科知識,可以很好的幫助你…

Pycharm SSH遠程連接時出現報錯,測試 SFTP 連接,連接到 ‘connect.westb.seetacloud.com‘ 失敗

問題由來 很離譜!今天本來打算租借AutoDL的顯卡完成一項深度學習的任務,很離譜的是同步文件夾的時候報了標題說的錯。 就很莫名奇妙,一天都在網上找解決辦法,結果都不對頭。 其他報錯 最后摸索著,在使用pycharm遠程登…

SpringBoot 定時任務+Quartz

1、分部解釋2、整體代碼 前言: 1、定時任務技術: JDK 的 Timer, 定義多個定時任務,其中某個任務出現異常,當時整個定時任務終止。Spring Task , 不支持 持久化與分布式部署,所有任務是單線程執行…

Prism 入門01,基礎

Prism 框架是支持多平臺的一種MVVM框架(Model-View-ViewModel) 除了具備一些基礎的屬性通知綁定,命令操作,消息聚合器等功能外。還具備一些強大的功能:例如,區域,導航,會話服務,模塊注入等特性。 一.如何在WPF 項目中使用Prism 框架 1.打開Visual Studio 2022,選擇創…

初探Arthasan安裝使用

最近在項目中用到 Arthas,即阿爾塞斯 是阿里開源的Java分析工具。 下載地址:Github 一、安裝運行 1)window 系統 下載 jar 包,直接通過java命令運行 // 下載 jar包 curl -O https://arthas.aliyun.com/arthas-boot.jar // 啟動…

3個常用的Python性能分析工具及其使用方法

以下是幾個常用的性能分析工具及其使用方法和常用命令: 1. cProfile cProfile是Python標準庫中的性能分析工具,可以用來統計函數的運行時間和調用次數。 使用方法: 在命令行中使用以下命令: python -m cProfile my_script.py…

【排序】選擇排序(含優化版)

本章我們繼續講排序算法,這里我們將學習選擇排序,也是一個很普遍很常見的排序算法,邏輯和代碼都比較簡單,比較容易掌握,我們直接走起 選擇排序 基本思想:選擇排序(SelectSort)&…

Layui2.5.6樹形表格TreeTable使用

1、問題概述? Layui2.5.6的樹形表格-TreeTable終于用明白了,步驟詳細,提供源碼下載。 如果你使用的是Layui2.8+版本,那么點個贊,趕緊去官網看吧,官網更行了。 更新地址:樹表組件 treeTable - Layui 文檔 最近在項目中需要使用到樹形表格,用來顯示菜單的層級關系,當…

(delphi11最新學習資料) Object Pascal 學習筆記---第14章泛型第1節(泛型鍵值對)

14.1.1 內聯變量和泛型類型推斷 ? 在聲明泛型變量時,聲明可能相當長。在創建該類型的對象時,必須重復相同的聲明。除非您利用內聯變量聲明及其變量類型推斷的能力。因此,上面最后一個代碼片段可以寫成: beginvar Kvi : TKeyVal…

Leetcode 第 398 場周賽題解

Leetcode 第 398 場周賽題解 Leetcode 第 398 場周賽題解題目1:3151. 特殊數組 I思路代碼復雜度分析 題目2:3152. 特殊數組 II思路代碼復雜度分析 題目3:3153. 所有數對中數位不同之和思路代碼復雜度分析 題目4:3154. 到達第 K 級…

辯證 邏輯學 | 洞察 事物矛盾及變化規律 在形式邏輯基礎上 學會辯證思維(40節課)

課程下載:辯證邏輯學洞察事物矛盾及變化規律在形式邏輯基礎上學會辯證思維(40節課)-課程網盤鏈接提取碼下載.txt資源-CSDN文庫 更多資源下載:關注我。 在形式邏輯的基礎上,學會 辯證思維 敏銳 洞察事物發展變化的規…

Linux命令篇(一):文件管理部分

💝💝💝首先,歡迎各位來到我的博客,很高興能夠在這里和您見面!希望您在這里不僅可以有所收獲,同時也能感受到一份輕松歡樂的氛圍,祝你生活愉快! 文章目錄 1、cat命令常用參…

童趣盎然,米香四溢 —— 蒙自源六一兒童節特別獻禮

充滿歡聲笑語的六一兒童節馬上就要來了,在這個充滿童真和喜悅的時刻,蒙自源米線品牌以一顆童心,為所有大朋友和小朋友準備了一份特別的禮物。 從5月25日開始,蒙自源誠摯邀請您和孩子們一同前往蒙自源旗下各大門店,品嘗…

【MySQL數據庫】MySQL 高可用搭建方案——MHA實戰

MHA(Master High Availability) MHA實戰 MHA(Master High Availability) 一、MHA簡介二、MHA搭建準備要求:mha集群搭建,4臺服務器,1主2從,1臺mha2.1實驗思路2.2實驗準備 三、搭建MyS…

每日一題31:數據統計之即時配送食物

一、每日一題 配送表: Delivery -------------------------------------- | Column Name | Type | -------------------------------------- | delivery_id | int | | customer_id | int | | order_date …