Some time ago I needed to solve the problem of segmenting points in Point Cloud (point clouds - data obtained from lidars).
Sample data and problem to be solved:
The search for a general review of existing methods was unsuccessful, so I had to collect information on my own. You can see the result: here are collected the most important and interesting (in my opinion) articles over the past few years. All considered models solve the problem of segmentation of a cloud of points (to which class each point belongs).
This article will be useful to those who are well acquainted with neural networks and want to understand how to apply them to unstructured data (for example, graphs).
Now in open access there are following datasets on this topic:
Neural networks have come to this area recently. And standard architectures such as fully connected and convolutional networks are not applicable to this task. Why?
Because the order of points is not important here. An object is a set of points and it does not matter in which order they are viewed. If each pixel has its place on the images, then we can calmly mix the points and the object will not change. The result of the work of standard neural networks, on the contrary, depends on the location of the data. If you mix pixels on an image, you get a new object.
Now let's see how the neural networks are adapted to solve this problem.
There are not many basic architectures in this area. If you are going to work with graphs or unstructured data, you need to be aware of the following models:
Consider them in more detail.
Dynamic Graph CNN for Learning on Point Clouds
how they decide: on the basis of the existing points they build a graph: the vertices are points, edges exist only between the current point and the k points closest to it. Next, determine Edge conv - a special convolution on the edges outgoing from the current point. The article proposed several variants of this convolution. As a result, the following was used: for each point x [i] , all its J adjacent points were considered to be M features feature [i, m] = max_j (Relu (θ [m] ∗ (x [i] −x [j]) + φ [m] ∗ x [i])) . The resulting value is stored as a new embedding point. Here, local (x [j] −x [i]) and global (x [j]) coordinates are used as input data for convolution.
After convolution is defined on the graph, a convolution network is constructed. You can also see the counting of transformations and their application to each point by analogy with PointNet.
In this article you will find an excellent overview of other solution methods.
Basically, articles differ in error counting or depth and the depth of complex blocks.
PointWise: An Unsupervised Point-wise Feature Learning Network
Feature of work - learning without a teacher
SGPN: Similarity Group Proposal Network for 3D Point Cloud Instance Segmentation
DGCNN was recently published (2018), so there are few articles based on this architecture. I want to draw your attention to one:
Here you could find brief information about modern methods for solving classification and segmentation problems in Point Clouds. There are two main models (PointNet ++, DGCNN), modifications of which are now used to solve these problems. Most often, modifications modify the function of the error and complicate these architectures by adding layers and links.
Source: https://habr.com/ru/post/459088/
All Articles