# Point-Graph Neural Network Based Novel Visual Positioning System for Indoor Navigation
## 2 Related Research  
### Point Cloud-Based 3D Object Detection  
Point cloud: 3D object detection methods that use point clouds can be divided into 3D object detection based on multi-view images, voxels, and points [5]. Both multi-view image and voxel-based methods rely on the empirical quantization resolution to represent the point cloud transformation. **3D object detection based on points:** The introduction of PointNet [6] and PointNet++ [7] established a method of handling irregular and unaligned point sets. This involves learning the point-by-point function directly from the original point cloud without expression transformation. A study [8] narrowed the search range in the point cloud using the frustum proposal of two-dimensional (2D) detection for the corresponding camera image and directly regressed the prediction based on the internal point. In the reported cascading frameworks [8; 9], the performance of 3D object detection was severely limited by the results of 2D detection. Unlike generating proposals from images [8; 9], PointRCNN [10] generated 3D proposals with high recall performance in the entire point cloud. Furthermore, PointNet++ was directly applied to perform 3D semantic segmentation of the point cloud, and 3D proposals were generated simultaneously based on each foreground point. Subsequently, these 3D proposals were used to incorporate point-by-point semantics for further improvement. To improve the directional range of the cubic anchor, a study proposed a new spherical anchor for the point cloud space [11]. Additionally, several other methods [12; 13] have applied PointNet++ to point cloud processing and improved the 3D object detection performance. As point-based learning can better use each point in the original point cloud, it performs 3D object detection using the points. Point cloud primarily refers to the data collected by a light detection and ranging (LiDAR) sensor, time of flight (ToF) sensor, and RGB-D sensor. These sensors transmit light or signal to an object, record the return time, calculate the distance information for each light or signal, and generate points to create a point cloud, which is a set of points spread in 3D space. The depth (z) information in point clouds differs from that of 2D images. Although point clouds can represent only three pieces of information, there may be additional information provided by the sensor. For instance, the LiDAR sensor can add reflectance information, whereas RGB-D can provide color information. Therefore, we can learn the 9-DoF of an object using this point cloud [14]. **Point-GNN based on points:** This is a GNN that detects objects in a LiDAR point cloud. Point-GNN for object detection maintains the irregularity of the point cloud based on a graphical representation rather than transforming the point cloud into a regular grid, such as an image or voxel. Unlike the technique of repeatedly sampling and grouping points, point-GNN constructs the graph only once. It uses a multilayer perceptron (MLP) to model the functions \(MLP_{f}^{t}(. )\); \(MLP_{g}^{t}(. )\) and \(MLP_{h}^{t}(. )\) add residual connections. All iterations use a different set of \(MLP^{t}\), which is not shared between iterations. A GNN uses vertex state values after \(T\) iterations to predict both the category and bounding box of the object to which the vertex belongs. The classification branch \(MLP_{cls}\) computes multiclass probabilities, and the localization branch \(MLP_{loc}\) computes the bounding box for each class. \[ \begin{split}\Delta x_{i}^{t}=MLP_{h}^{t}(s_{i}^{t})\\ \epsilon_{ij}^{t}=MLP_{f}^{t}([x_{j}-x_{i}+\Delta x_{i}^{t},\ s _{i}^{t}])\\ s_{i}^{t+1}=MLP_{g}^{t}(Max(\{e_{ij}\ |\ (i,\ j)\in E\}))+s_{i}^{t} \end{split}  \tag{1}\]  
Subsequently, point-GNN extracts the features of the point cloud by repeatedly updating the vertex features in the graph. As point-GNN is a single-step detection method, it efficiently encodes the point cloud in an adjacent fixed-radius graph.