24 3D Object Classification, Visual Search …
363
Fig. 24.4 Main steps scheme of preprocessing for neural network learning process
artists rather than scanned. In order for the trained model to better cope with the
classification of real objects, the data on which it is trained must be modified.
Data preprocessing for the neural network learning process consisted of the
following steps:
1. Converting a polygon model to a point cloud with a fixed number of points.
2. Initial scaling of the point cloud.
3. Random rotation around the axis that sets the direction “up”.
4. The addition of noise.
5. Random scaling.
6. Small random rotation.
7. Random translation.
All these steps define N function and schematically represented in Fig. 24.4. The
N C function is reduced to using the LDGCNN architecture to define the object class.
Converting polygonal models to point clouds. At this stage, we need to define
the function S m , which converts the model M n,m to a point cloud P
k,3 . During the
model training process, we fixed the number of points in the point clouds with value
k = 1024. Source data with point clouds for training was stored in HDF5 format.
From the scan, the results were converted using Open3D for Python [13]. Example
of point cloud sampling with k = 1500 is shown on Fig. 24.5.
Initial scaling. This transformation of the point cloud is arranged so that each
point is located after the transformation in a unit sphere. To do this, we first need to
calculate AABB −B
P
k,3
. The scaling factor s is calculated as follows:
s = 2 ·
x
1
max , x
2
max , x
3
max
T −
x
1
min , x
2
min , x
3
min
T
−1
.
As a result, we get a point cloud of the form:
P
k,3
c
=
x
|x
= s × x, x ∈ P
k,3
.
Random rotation around “up” axis. This operation is necessary to get a new
point cloud rotated around the y axis. We will define this direction as “up” in our
363
Fig. 24.4 Main steps scheme of preprocessing for neural network learning process
artists rather than scanned. In order for the trained model to better cope with the
classification of real objects, the data on which it is trained must be modified.
Data preprocessing for the neural network learning process consisted of the
following steps:
1. Converting a polygon model to a point cloud with a fixed number of points.
2. Initial scaling of the point cloud.
3. Random rotation around the axis that sets the direction “up”.
4. The addition of noise.
5. Random scaling.
6. Small random rotation.
7. Random translation.
All these steps define N function and schematically represented in Fig. 24.4. The
N C function is reduced to using the LDGCNN architecture to define the object class.
Converting polygonal models to point clouds. At this stage, we need to define
the function S m , which converts the model M n,m to a point cloud P
k,3 . During the
model training process, we fixed the number of points in the point clouds with value
k = 1024. Source data with point clouds for training was stored in HDF5 format.
From the scan, the results were converted using Open3D for Python [13]. Example
of point cloud sampling with k = 1500 is shown on Fig. 24.5.
Initial scaling. This transformation of the point cloud is arranged so that each
point is located after the transformation in a unit sphere. To do this, we first need to
calculate AABB −B
P
k,3
. The scaling factor s is calculated as follows:
s = 2 ·
x
1
max , x
2
max , x
3
max
T −
x
1
min , x
2
min , x
3
min
T
−1
.
As a result, we get a point cloud of the form:
P
k,3
c
=
x
|x
= s × x, x ∈ P
k,3
.
Random rotation around “up” axis. This operation is necessary to get a new
point cloud rotated around the y axis. We will define this direction as “up” in our
