点云网络的论文理解(四)-点云网络的优化 PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
目錄
- 0.Abstract
- 0.1逐句翻譯
- 0.2總結
- 1.Introduction
- 1.1逐句翻譯
- 1.2總結
- 2.Problem Statement
- 2.1翻譯
- 2.2總結
- 3.Method
- 3.1 Review of PointNet [20]: A Universal Continuous Set Function Approximator
- 3.1.1原文翻譯
- 3.1.1總結
- 3.2 Hierarchical Point Set Feature Learning
- 3.2.1逐句翻譯
- 3.2.2總結
- 3.3 Robust Feature Learning under Non-Uniform Sampling Density
- 3.3.1逐句翻譯
- 3.3.2總結
- 4.試驗
這里是文章的逐句翻譯,所以如果您想對論文有一個整體的認知,那么請看:PointNet++的總體概述
0.Abstract
0.1逐句翻譯
Few prior works study deep learning on point sets.
以前很少有關于點集的深度學習的研究。
PointNet [20] is a pioneer in this direction.
PointNet[20]是這方面的先驅。
However, by design PointNet does not capture local structures induced by the metric space points live in, limiting its ability to recognize fine-grained patterns and generalizability to complex scenes.
然而,根據設計,PointNet沒有捕獲點所在的度量空間點引起的局部結構,限制了它識別細粒度模式的能力和對復雜場景的通用性。
In this work, we introduce a hierarchical neural network that applies PointNet recursively on a nested partitioning of the input point set.
在這項工作中,我們介紹了一個遞階神經網絡,應用PointNet遞歸在輸入點集的嵌套空間上。
By exploiting metric space distances, our network is able to learn local features with increasing contextual scales.
通過利用度量空間距離,我們的網絡能夠學習局部特征隨著上下文尺度的增加。
With further observation that point sets are usually sampled with varying densities, which results in greatly decreased performance for networks trained on uniform densities, we propose novel set learning layers to adaptively combine features from multiple scales.
進一步觀察到點集通常以不同的密度進行采樣,這導致在均勻密度下訓練的網絡性能大大下降,我們提出了新的集學習層來自適應地組合多個尺度的特征。 Experiments show that our network called PointNet++ is able to learn deep point set features efficiently and robustly.
實驗表明,PointNet++網絡能夠有效、穩健地學習深度點集特征。
In particular, results significantly better than state-of-the-art have been obtained on challenging benchmarks of 3D point clouds.
特別是,在具有挑戰性的3D點云基準上獲得了明顯優于最新水平的結果。
0.2總結
PointNet的不足
我們可以看到這里其實是在PointNet的一個提升,那么既然是對已有成果的優化,那么一定是要指出之前方案的不足,這里指出的不足我第一次于都理解的是這里說的是這里出現的問題是沒有考慮空間距離對結果的影響,也就是點和點之間的距離。
之后,文章中又提到的空間中點的密度在基礎PointNet當中也沒有考慮的問題。這個點問題其實和之前的距離是密切相關的,但是又不太一樣,點的距離是兩個人之間的事情,點的密度是一群人直接的事情。就像計算機網絡當中的流量控制和擁塞控制一樣。但是兩者雖然不同,但是密度的形成原因其實也和距離息息相關。
解決方案
這里沒有細說,只是說提出來了新的層
解決效果
state-of-the-art 也就是好于現在所有的情況。
1.Introduction
1.1逐句翻譯
第一段(將點集的特點,引出需要考慮距離和密度信息的問題)
We are interested in analyzing geometric point sets which are collections of points in a Euclidean space.
我們感興趣的是分析幾何點集,它是歐氏空間中點的集合。
A particularly important type of geometric point set is point cloud captured by 3D scanners, e.g., from appropriately equipped autonomous vehicles.
一種特別重要的幾何點集類型是由3D掃描儀捕獲的點云,例如,從適當裝備的自動駕駛車輛。
As a set, such data has to be invariant to permutations of its members.
作為一個集合,這樣的數據必須對其成員的排列保持不變。
In addition, the distance metric defines local neighborhoods that may exhibit different properties.
此外,距離度量定義了可能顯示不同屬性的本地鄰域。(沒有讀懂)
For example, the density and other attributes of points may not be uniform across different locations — in 3D scanning the density variability can come from perspective effects, radial density variations, motion, etc.
例如,不同位置的點的密度和其他屬性可能不一致——在3D掃描中,密度的可變性可能來自視角效果、徑向密度變化、運動等。
第二段(肯定PointNet的工作,同時指出其不足–沒有局部信息)
Few prior works study deep learning on point sets.
以前很少有關于點集的深度學習的研究。
PointNet [20] is a pioneering effort that directly processes point sets.
PointNet[20]是直接處理點集的開創性工作。
The basic idea of PointNet is to learn a spatial encoding of each point and then aggregate all individual point features to a global point cloud signature.
PointNet的基本思想是學習每個點的空間編碼,然后將所有單獨的點特征聚合為一個全局點云信號。
By its design, PointNet does not capture local structure induced by the metric.
根據它的設計,PointNet不捕獲由度量(我理解這里應該理解為距離)引起的局部結構。
However, exploiting local structure has proven to be important for the success of convolutional architectures.
然而,利用局部結構已經被證明對卷積結構的成功非常重要。
A CNN takes data defined on regular grids as the input and is able to progressively capture features at increasingly larger scales along a multi-resolution hierarchy.
CNN將在規則網格上定義的數據作為輸入,能夠沿著多分辨率層次逐步捕獲越來越大的尺度上的特征。
At lower levels neurons have smaller receptive fields whereas at higher levels they have larger receptive fields.
在較低水平的神經元有較小的接受域,而在較高水平的神經元有較大的接受域。(我理解這里的receptive fields應該理解為感受野)
The ability to abstract local patterns along the hierarchy allows better generalizability to unseen cases.
沿著層次結構抽象局部模式的能力允許更好地一般化到看不見的情況
第三段(大約如何借鑒CNN的優點)
We introduce a hierarchical neural network, named as PointNet++, to process a set of points sampled in a metric space in a hierarchical fashion.
我們引入了一個層次神經網絡,稱為PointNet++,以一種層次的方式處理在度量空間采樣的一組點。
The general idea of PointNet++ is simple.
PointNet++的總體思想很簡單。
We first partition the set of points into overlapping local regions by the distance metric of the underlying space.
我們首先通過距離度量的基礎空間將點集劃分為重疊的局部區域。(也就是類似聚類的一個東西,通過聚類劃成一堆)
Similar to CNNs, we extract local features capturing fine geometric structures from small neighborhoods; such local features are further grouped into larger units and processed to produce higher level features.
與CNN相似,我們從小鄰域中提取局部特征捕捉精細的幾何結構;這些局部特征被進一步分組成更大的單元,并被處理以產生更高層次的特征。
This process is repeated until we obtain the features of the whole point set.
這個過程不斷重復,直到我們得到整個點集的特征。
第四段(具體怎么實現對CNN的借鑒)
The design of PointNet++ has to address two issues: how to generate the partitioning of the point set,and how to abstract sets of points or local features through a local feature learner.
PointNet++的設計必須解決兩個問題:如何生成點集的劃分,以及如何通過局部特征學習器抽象點集或局部特征集。
The two issues are correlated because the partitioning of the point set has to produce common structures across partitions, so that weights of local feature learners can be shared, as in the convolutional setting.
這兩個問題是相關的,因為點集的劃分必須產生跨分區的公共結構,這樣局部特征學習者的權值就可以共享,就像在卷積設置中一樣。(這里必須得到一樣的結構體,因為想要產生類似卷積的參數共用)
We choose our local feature learner to be PointNet.
我們選擇我們的局部特征學習器為PointNet。
As demonstrated in that work, PointNet is an effective architecture to process an unordered set of points for semantic feature extraction.
正如在該工作中所演示的,PointNet是處理無序點集以提取語義特征的有效體系結構。
In addition, this architecture is robust to input data corruption.
此外,該體系結構對于輸入數據損壞是健壯的。
As a basic building block, PointNet abstracts sets of local points or features into higher level representations.
作為一個基本的構建塊,PointNet將局部點或特性集合抽象成更高層次的表示。
In this view, PointNet++ applies PointNet recursively on a nested partitioning of the input set.
在這個視圖中,PointNet++遞歸地在輸入集的嵌套分區上應用PointNet。
第五段(怎么產生類似卷積中每一步的相同結構:質心的產生)
One issue that still remains is how to generate overlapping partitioning of a point set.
仍然存在的一個問題是如何生成點集的重疊分區。
Each partition is defined as a neighborhood ball in the underlying Euclidean space, whose parameters include centroid location and scale.
每個分區被定義為底層歐氏空間中的一個鄰域球,其參數包括質心位置和尺度。
To evenly cover the whole set, the centroids are selected among input point set by a farthest point sampling (FPS) algorithm.
為了均勻地覆蓋整個集合,采用最遠點采樣(FPS)算法從輸入點集中選擇質心。
Compared with volumetric CNNs that scan the space with fixed strides, our local receptive fields are dependent on both the input data and the metric, and thus more efficient and effective.
與以固定步數掃描空間的體積CNN相比,我們的本地接受域既依賴于輸入數據,也依賴于度量,因此效率更高。
第六段(怎么產生類似卷積中每一步的相同結構:半徑的產生)
Deciding the appropriate scale of local neighborhood balls, however, is a more challenging yet intriguing problem, due to the entanglement of feature scale and non-uniformity of input point set.
然而,由于特征尺度的糾纏和輸入點集的不均勻性,確定局部鄰域球的適當尺度是一個更具挑戰性和耐受性的問題。
We assume that the input point set may have variable density at different areas, which is quite common in real data such as Structure Sensor scanning [18] (see Fig. 1).
我們假設輸入點集可能在不同的區域有不同的密度,這在實際數據中很常見,如Structure Sensor掃描[18] (Fig1)。
Our input point set is thus very different from CNN inputs which can be viewed as data defined on regular grids with uniform constant density.
因此,我們的輸入點集與CNN輸入非常不同,CNN輸入可以看作是定義在均勻恒定密度的規則網格上的數據。
In CNNs, the counterpart to local partition scale is the size of kernels.
在cnn中,與本地分區規模對應的是內核的大小。
[25] shows that using smaller kernels helps to improve the ability of CNNs.
[25]表明使用較小的內核有助于提高神經網絡的能力。
Our experiments on point set data,however, give counter evidence to this rule.
然而,我們在點集數據上的實驗給出了與此規則相反的證據。
Small neighborhood may consist of too few points due to sampling deficiency, which might be insufficient to allow PointNets to capture patterns robustly.
由于取樣不足,小的鄰域可能包含太少的點,這可能不足以讓PointNets健壯地捕獲模式。
第七段(本文貢獻)
A significant contribution of our paper is that PointNet++ leverages neighborhoods at multiple scales to achieve both robustness and detail capture.
我們的論文的一個重要貢獻是PointNet++利用了附近的信息,在多個尺度上實現魯棒性和細節捕獲。
Assisted with random input dropout during training,the network learns to adaptively weight patterns detected at different scales and combine multi-scale features according to the input data.
借助訓練過程中的隨機輸入dropout,網絡學習自適應加權不同尺度檢測到的模式,并根據輸入數據組合多尺度特征。
Experiments show that our PointNet++ is able to process point sets efficiently and robustly.
實驗表明,PointNet++能夠有效地處理點集,且具有魯棒性。
In particular, results that are significantly better than state-of-the-art have been obtained on challenging benchmarks of 3D point clouds.
特別是,在具有挑戰性的3D點云基準上獲得了明顯優于目前最先進水平的結果。
1.2總結
先介紹點云:
點云是一個點的集合,來自于各種掃描設備、雷達(我之前一直認為只有雷達),文章肯定了PointNet當中提出來的點的無序性,之后提出來一個新的考量因素——點的距離,或者是密度,也應該作為一個重要的屬性被考量。因為這些密度的變化來自于視角效果、徑向密度變化、運動等,這些在我的理解當中,視角變化、運動都是雷達的主要應用方向,也就是自動駕駛的主要考量因素。
在提出文章自己的構思(主要設計思想):
我第一次讀到這里的時候有如下結論:
之前提到的點的密度上沒有考慮的不足,是沒有考慮局部信息導致的,所以還是得考慮局部信息,然后作者就提到了考慮局部信息最好的還是卷積網絡啊。
于是文正開始分析卷積網絡是如何考慮局部信息的,并取得成功的。卷積網絡是逐層逐漸擴大的感受野(文章里描述為receptive fields,我理解應該指的是感野),不斷提取逐漸全面的信息。這取得了很好的成功。
但是因為在PointNet那篇當中,作者就已經否定了直接使用卷積網絡的可能性,所以這里不能對卷積網絡進行真正的照抄照搬。需要提取其中可以借用的部分。于是本文主要參考的是卷積網絡的層次結構,所以本文也提出了一種層次網絡。好了到了這里主要的設計思路就已經搞清楚了。
(上面是文中內容的總結,下面我說一下我第一次讀到這里的理解,下面全是我個人的理解,如果不對,我期待與您進行交流)
我覺得文章有一個沒有描述清楚的事情,我自己思考了一下,那就是:**這個文章怎么想到按照距離先進行聚類這件事的呢?**想要知道問題的答案,我們就得代入作者的角度,作者當時只能看到PointNet這個東西,那么PointNet當中沒有使用卷積來處理,不能很好的抓住圖像數據相接近的點之間能提取出更多信息的關鍵。這個是一個顯而易見的,但是不使用卷積也是被逼無奈的,PointSet的特點就放在那里,不能使用就是不能使用。
所以我們就得想怎么:1.怎么改變PointSet的特點,或是2.怎么改變卷積對數據結構的要求,顯然第二個好很多。所以,作者才順利想到了聚類這個方向。
大致說明本文如何實現的:
上面,我們明確了設計思路之后,文章真正開始說明這個網絡的情況,首先,進行聚類,之后對聚類進行卷積類似的操作,目標是有效地提取信息,之后再繼續向上迭代,相當于不斷擴大感受野,進而得到想要的信息。
(讀完之后的內容)
這里描述為聚類顯然不好,因為聚類不需要相同的結構,但是這里需要相同的結構。
細致說明本文的實現方式:
應該將這部分分成兩個主要問題理解
-
1.怎么產生相同結構的數個“聚類”
為什么需要使用相同的結構?因為必須要和卷積網絡一樣共享參數,這樣可以在計算量一定的情況下,獲得更好的效果(當然可能引起過擬合,但是還有什么各種正交化來制約,因此不用過于在意)
然后怎么產生這個相同的部分就比較簡單了,只需要使用一個球體劃進來相同的部分就可以了,想要使用一個球,就需要兩個要素需要生成:1.一個質心2.一個半徑。
怎么獲得質心
之后使用a farthest point sampling (FPS) algorithm來產生中心點就行(剛剛讀到這里的時候這里我還不懂)。
怎么獲得半徑
這里面對的一個大問題就是一個圖片的不同區域的密度是不相同的,CNN相當于是使用相同大小的半徑,但是這里因為不均勻,所以我們應當使用不同的半徑,另外半徑應該適當地大,因為適當地大才能得到足夠的信息。
另外,
1.文章中提出來一個點就是:這里不像卷積一樣使用固定的步長和固定距離的卷積中心,是依據輸入的數據集靈活生成的,所以效果好一些(這里我很好奇,一會得深究一下怎么實現的)
2.[25] shows that using smaller kernels helps to improve the ability of CNNs.這句話對應的論文沒看過,應該得再看一下了。 -
2.怎么提取信息?
文章回答這個問題就非常簡單了,直接使用之前就用有的PointNet不就行了。
最后
總結文章可以有效地獲得多尺度信息,并獲得很好的結果。
2.Problem Statement
描述文章的內容
2.1翻譯
Suppose that X = (M, d) is a discrete metric space whose metric is inherited from a Euclidean space Rn, where M ? Rn is the set of points and d is the distance metric.
假設X = (M, d)是一個離散度量空間,其度量繼承自歐幾里得空間Rn,其中 M ? Rn 是點的集合,d為距離度量。
In addition, the density of M in the ambient Euclidean space may not be uniform everywhere.
此外,環境歐幾里得空間中的M密度可能不是處處均勻的。
We are interested in learning set functions f that take such X as the input (along with additional features for each point) and produce information of semantic interest regrading X .
我們感興趣的是學習集函數f,它將X作為輸入(以及每個點的附加特征),并產生優化過的語義信息X
In practice, such f can be classification function that assigns a label to X or a segmentation function that assigns a per point label to each member of M
在實踐中,這樣的f可以是為X分配一個標簽的分類函數,也可以是為M的每個成員分配一個點標簽的分段函數。
2.2總結
輸入:一個點集X = (M, d)
中間結果:一個語義的特征集合
最終過程:依據需求選擇整體大標簽或是點集的小標簽。
這里的說明我覺得說的比較模糊,沒有對聚義的數據集情況進行說明,應該是PointNet論文中已經定義的很好的原因吧。
3.Method
下面是原文給出來的章節介紹,我直接翻譯一下也就不總結了。
Our work can be viewed as an extension of PointNet [20] with added hierarchical structure.
我們的工作可以看作是PointNet[20]的擴展,增加了層次結構。
We first review PointNet (Sec. 3.1) and then introduce a basic extension of PointNet with hierarchical structure (Sec. 3.2).
我們首先回顧PointNet(第3.1節),然后介紹具有層次結構的PointNet的基本擴展(第3.2節)。
Finally, we propose our PointNet++ that is able to robustly learn features even in non-uniformly sampled point sets (Sec. 3.3).
最后,我們提出了即使在非均勻采樣點集中也能穩健地學習特征的PointNet++(第3.3節)。
3.1 Review of PointNet [20]: A Universal Continuous Set Function Approximator
這里就是帶著大家回顧一下之前的PointNet
3.1.1原文翻譯
Given an unordered point set {x1, x2, …, xn} with xi ∈ Rd, one can define a set function f : X → R that maps a set of points to a vector:
給定一個無序點集{x1, x2,…, xn}對于xi∈Rd,可以定義集合函數f: X→R,將一組點映射到一個向量:
where γ and h are usually multi-layer perceptron (MLP) networks.
其中γ和h通常是多層感知器(MLP)網絡。
The set function f in Eq. 1 is invariant to input point permutations and can arbitrarily approximate any continuous set function [20].
式1中的集合函數f對于輸入點排列是不變的,可以任意逼近任何連續集合函數[20]。
Note that the response of h can be interpreted as the spatial encoding of a point (see [20] for details).
注意,h的響應可以解釋為一個點的空間編碼(詳見[20])。
PointNet achieved impressive performance on a few benchmarks.
PointNet在一些基準測試上取得了令人印象深刻的表現。
However, it lacks the ability to capture local context at different scales(就是我們從不同大小的感受野獲得信息).
然而,它缺乏捕獲不同規模的本地上下文的能力。
We will introduce a hierarchical feature learning framework in the next section to resolve the limitation.
我們將在下一節介紹一個層次特征學習框架來解決這個限制。
3.1.1總結
就是又說了一下之前的PointNet。然后提出來了不足,沒有層次信息的提取。
這里雖然之前完整的度過了PointNet的文章,但是這里讀起來還是有很多收獲。
收獲如下:
1.對PointNet的理解又更加的深入了,我覺得原因是讀原文和讀別人總結過的東西是不一樣的。所以以后一件事還得多聽一些建議。
2.其他收獲沒有
3.2 Hierarchical Point Set Feature Learning
3.2.1逐句翻譯
第一段與之前的比起來,作了什么優化
While PointNet uses a single max pooling operation to aggregate the whole point set, our new architecture builds a hierarchical grouping of points and progressively abstract larger and larger local regions along the hierarchy.
當PointNet使用一個單一的最大池操作來聚合整個點集時,我們的新體系結構建立了一個分層的點分組,并沿著分層逐步抽象出越來越大的局部區域。
第二段簡單說明PointNet++的過程
Our hierarchical structure is composed by a number of set abstraction levels (Fig. 2).
我們的層次結構由許多集合抽象級別組成(圖2)。
At each level, a set of points is processed and abstracted to produce a new set with fewer elements.
在每個層次上,處理和抽象一組點以產生一個包含更少元素的新集合。
The set abstraction level is made of three key layers: Sampling layer, Grouping layer and PointNet layer.
集合抽象層由三個關鍵層組成:采樣層、分組層和PointNet層。
The Sampling layer selects a set of points from input points, which defines the centroids of local regions.
采樣層從輸入點中選擇一組點,定義局部區域的質心。
Grouping layer then constructs local region sets by finding “neighboring” points around the centroids.
分組層通過尋找質心周圍的“鄰近”點來構造局部區域集。
PointNet layer uses a mini-PointNet to encode local region patterns into feature vectors.
點網層使用一個小點網將局部區域模式編碼為特征向量。
第三段(介紹網絡單層的輸入輸出的變化情況)
A set abstraction level takes an N × (d + C) matrix as input that is from N points with d-dim coordinates and C-dim point feature.
集合抽象層以N × (d + C)矩陣作為輸入,該輸入來自N個具有d-dim坐標和C-dim點特征的點。
It outputs an N0 × (d + C0) matrix of N0 subsampled points with d-dim coordinates and new C0-dim feature vectors summarizing local context.
輸出具有d-dim坐標的N0下采樣點的N0 × (d + C0)矩陣和總結局部上下文的新的C0-dim特征向量。
We introduce the layers of a set abstraction level in the following paragraphs.
我們將在下面的段落中介紹集合抽象層。
第四段
Sampling layer. Given input points {x1, x2, …, xn}, we use iterative farthest point sampling (FPS)to choose a subset of points {xi1, xi2, …, xim}, such that xij is the most distant point (in metricdistance) from the set {xi1, xi2, …, xijj 1 } with regard to the rest points.
給定輸入點{x1, x2,…, xn},我們使用迭代最遠點采樣(FPS)選擇一個點的子集{xi1, xi2,…, xim},使xij是離集合{xi1, xi2,…, xijj 1}關于其余的點。
Compared with random sampling, it has better coverage of the entire point set given the same number of centroids.
與隨機抽樣相比,在相同質心數的情況下,它對整個點集的覆蓋效果更好。
In contrast to CNNs that scan the vector space agnostic of data distribution, our sampling strategy generates receptive fields in a data dependent manner.
與掃描向量空間不可知數據分布的cnn相比,我們的采樣策略以數據依賴的方式生成接受域。
第五段
Grouping layer. The input to this layer is a point set of size N × (d + C) and the coordinates of a set of centroids of size N0 × d.
該層的輸入是一個大小為N × (d + C)的點集和一組大小為N0 × d的質心的坐標。(也就是在原有數據集的基礎上額外輸入我們選擇了哪個點)
The output are groups of point sets of size N0 × K × (d + C), where each group corresponds to a local region and K is the number of points in the neighborhood of centroid points.
輸出為大小為N0 × K × (d + C)的點集組,其中每組對應一個局部區域,K為質心點鄰域內的點數。
Note that K varies across groups but the succeeding PointNet layer is able to convert flexible number of points into a fixed length local region feature vector.
注意,K在組之間是不同的,但是后續的PointNet層能夠將靈活數量的點轉換為固定長度的局部區域特征向量。(也就是上文所說的K其實大約是一個抽象值,其實并不存在這么個值,因為每個group之間k的大小都是不相同的)
第六段(談和卷積的區別)
In convolutional neural networks, a local region of a pixel consists of pixels with array indices within certain Manhattan distance (kernel size) of the pixel.
在卷積神經網絡中,一個像素的局部區域由像素的一定曼哈頓距離(核大小)內的數組索引的像素組成。(大約說的就是在特征圖中一個像素對應的就是一個卷積和大小個數的元素)
In a point set sampled from a metric space, the neighborhood of a point is defined by metric distance.
在從度量空間采樣的點集中,點的鄰域由度量距離定義。(正常的圖的)
第七段(介紹中心點確定之后,如何選擇附近的元素的方法)
Ball query finds all points that are within a radius to the query point (an upper limit of K is set in implementation).
球形查詢查找與查詢點半徑范圍內的所有點(在實現中設置了K的上限)。
An alternative range query is K nearest neighbor (kNN) search which finds a fixed number of neighboring points.
另一種可選的范圍查詢是K近鄰(KNN)搜索,它能找到固定數量的鄰近點。
Compared with kNN, ball query’s local neighborhood guarantees a fixed region scale thus making local region feature more generalizable across space, which is preferred for tasks requiring local pattern recognition (e.g. semantic point labeling).
與kNN相比,球查詢的局部鄰域保證了固定的區域尺度,使得局部區域特征在空間上更具有泛化性,這對于需要局部模式識別的任務(如語義點標記)更有優勢。
第八段
PointNet layer. In this layer, the input are N0 local regions of points with data size N0×K×(d+C).
在這一層中,輸入是N0個數據大小為N0×K×(d+C)的點的局部區域。
Each local region in the output is abstracted by its centroid and local feature that encodes the centroid’s neighborhood. Output data size is N0 × (d + C0).
輸出中的每個局部區域通過其質心和對質心的鄰域進行編碼的局部特征來提取。輸出數據大小為N0 × (d + C0)。
3.2.2總結
首先,與PointNet比起來,PointNet++的分層聚合的方法可以提取出更多的信息。
之后,介紹了網絡大致的處理流程,我將其總結成三個步驟:
- 1.選定質心
- 2.選定每個質心的半徑
- 3.使用PointNet對其進行聚合。
通過這三個步驟我們最后完成的一個操作就是:
- 1.我們看一個局部空間的結果,將每個質心和半徑(局部空間)形成的一個小空間,聚合成為一個特征向量。
- 2.如果看一個整體的空間,得到的結果就是,我們將一個空間中的點集,提取信息成為一個點數更少,更有代表性的點集。
進而,介紹硬核心的輸入輸出結構,好了現在我們得去看復現了。
// 復現不太順利,還有bug之后上線。- 1.我們先理解這個數據變化的過程:數據的處理過程是在原來的中心點的坐標的后面,加入更多特征維度,這些維度來自于這個點周圍圓形空間點的信息,也就是第三段說的內容。
從N × (d + C)到N0 × (d + C0),其中N很好理解就是原來的點的個數;N0表示的是我們選取的中心點的個數將原來的點集提取出N0個更具有代表性的點;d表示的是點最原始的坐標維度,也就是如果是三維空間這里就是三維,如果是二維空間這里就是二維;C表示的是之前一層的特征提取結果的維度;C0表示的則是新一層的特征維度。 - 上面的部分是綜述部分,下面才開始真正的詳細敘述了:
- 2.Sampling layer.首先是采樣的方法:farthest point sampling (FPS),論文描述其依賴數據集,覆蓋性更好,并且畢竟是結合數據集提取的點,所以效果好一點。我覺得這里還需要繼續優化,因為我們畢竟不是直接讓機器提取的信息,而是使用了某種算法。
- 3.Grouping layer. 首先傳入的是上一層得到的點集(這里的坐標的特征已經被擴張了),另外一個輸入就是我們選擇了哪些點作為中心。
當然,選定這些之后,一個新的問題就是出現了,就是如何圍繞這些點選擇一個需要聚合的部分。文章給出了兩種方式:1.選擇附近某個距離的區域。2.選擇與當前點最近的k個點。
然后,我們知道文章最后選擇了第一個,但沒有給解釋,我自己理解了一下:如果選擇第二種,結合點集有的地方稀疏有的地方密集的特點,那么稀疏的部分將會選出很大的一個范圍,那么我們的網絡就很難獲得這些部分的局部信息,這是我們不希望看到的。 - 4.PointNet layer.前面將組都給大家分好了,之后Poinet直接給他們聚合到一起就完事了。
3.3 Robust Feature Learning under Non-Uniform Sampling Density
3.3.1逐句翻譯
第一段
As discussed earlier, it is common that a point set comes with non-uniform density in different areas.
如前所述,點集在不同區域具有不均勻的密度是很常見的。
Such non-uniformity introduces a significant challenge for point set feature learning.
這種非均勻性給點集特征學習帶來了巨大的挑戰。
Features learned in dense data may not generalize to sparsely sampled regions.
在密集數據中學習到的特征可能不能推廣到稀疏采樣區域。
Con-sequently, models trained for sparse point cloud may not recognize fine-grained local structures.
因此,為稀疏點云訓練的模型可能無法識別細粒度的局部結構。
第二段(盡量提取細微的特征和稀疏點集處輸入過少的矛盾)
Ideally, we want to inspect as closely as possible into a point set to capture finest details in densely sampled regions.
理想情況下,我們希望盡可能近地檢查到一個點集,以捕獲密集采樣區域的最精細細節。
However, such close inspect is prohibited at low density areas because local patterns may be corrupted by the sampling deficiency.
然而,這種近距離的檢查是禁止在低密度區域,因為局部模式可能被取樣缺陷損壞。
In this case, we should look for larger scale patterns in greater vicinity.
在這種情況下,我們應該在更大范圍內尋找更大規模的模式。
To achieve this goal we propose density adaptive PointNet layers (Fig. 3) that learn to combine features from regions of different scales when the input sampling density changes.
為了實現這一目標,我們提出了密度自適應PointNet層(圖3),當輸入采樣密度變化時,該層可以學習組合來自不同尺度區域的特征。
We call our hierarchical network with density adaptive PointNet layers as PointNet++.
我們將具有密度自適應PointNet層的分層網絡稱為PointNet++。
第三段
Previously in Sec. 3.2, each abstraction level contains grouping and feature extraction of a single scale.
在前面的3.2節中,每個抽象層包含單個尺度的分組和特征提取。
In PointNet++, each abstraction level extracts multiple scales of local patterns and combine them intelligently according to local point densities.
在PointNet++中,每個抽象層提取多個尺度的局部模式,并根據局部點密度智能組合它們。
In terms of grouping local regions and combining features from different scales, we propose two types of density adaptive layers as listed below.
根據局部區域的分組和結合不同尺度的特征,我們提出了兩種密度自適應層,下面的部分將細說。
第四段
Multi-scale grouping (MSG). As shown in Fig. 3 (a), a simple but effective way to capture multiscale patterns is to apply grouping layers with different scales followed by according PointNets to extract features of each scale. Features at different scales are concatenated to form a multi-scale feature.
3.3.2總結
首先,提出問題:我們小的點云的點分布是不均勻的,所以,我們如果選擇一個相同的結構在各處提取信息,那么很難達到很好的結果。進而,拋出一個矛盾,也就是我們想要在每一層都提取盡量細微的特征(也就是將group范圍設置的更小),和有些稀疏的部分如果使用過小的范圍只能選到非常少的點(也就是group范圍不能設置過小)。
所以,提出了我們要結合多尺度信息。
4.試驗
PointNet++一開始點比較密集的時候,可以看到他的效果很好,這個大致是因為多層的網絡結構。可以看到,如果半徑不能進行動態調整的話,隨著點的丟失變多,PointNet++的準確率下降的可怕。
可以看到加入多半徑之后取得了很好的效果。并且讓網絡自適應的選擇特征值之后,網絡對于特征丟失的魯棒性提升很大。
當然為了了解上圖還需要了解什么是MSG和MRG,
總結
以上是生活随笔為你收集整理的点云网络的论文理解(四)-点云网络的优化 PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 错误记录 Could NOT find
- 下一篇: Pytorch离线安装的纯净版