# Point-Graph Neural Network Based Novel Visual Positioning System for Indoor Navigation
## 3 Proposed Method  
This section outlines the proposed method and describes the main modules and important algorithms in detail. This includes the object pose estimation and matching with a voxel database comprising voxel labeling and object pose estimation of an improved  
\begin{table}
\begin{tabular}{c c c c c c} \hline \hline
**CNN Models** & **VidLoc** & **HourglasPose** & **BranchNet** & **PoseNet2 [36]** & **Nnnet** & **VlocNet [37]** \\ \hline Localization error & 0.25 m & 0.23 m & 0.29 m & 0.23 m & 0.21 m & 0.048 m \\ \hline \hline \end{tabular}
\end{table}
Table 2: Comparison of localization error with existing CNN models on the 7-Scenes dataset.  
Figure 1: Computation of (**a**) intersection points is depicted in green and (**b**) intersection volume is indicated in green.  
point-GNN in the point cloud. Figure 2 illustrates the overall architecture of the method, which comprises two components.  
**Pose estimation of GNN illustrated in Figure 2a:** To structure the input point cloud in a graph, the key-point selected by the fixed-radius algorithm is used as the vertex of the graph to express the graph coordinates; RGB data are learned from a GNN. The improved point-GNN of the one-stage method estimates the classification and localization of the object box. The estimated localization based on the key module of 3D IoU can be represented as box = (\(x\), \(y\), \(z\), \(l\), \(h\), \(w\), \(\phi\), \(\theta\), \(\psi\)) in the 9-DoF format.  
**Voxel database illustrated in Figure 2b:** The indoor point cloud is addressed to voxels based on the proposed algorithm to construct the voxel database. The trained improved point-GNN can estimate the 3D pose of the object in the new point cloud and determine the user's position by matching the estimated pose information with that of the object in the voxel database.  
As shown in Figure 2a, in the improved Point-GNN, the overall architecture of the improved Point-GNN includes three components: graph construction, GNN of T iterations, bounding box IoU and prediction. We use the point cloud created by the ToF camera as an input to the network. A point in the point cloud has all 3D coordinates representing properties, a state value, and a length vector. The state value is RGB. A graph is constructed by using a point as a vertex and connecting the neighbor points within the predefined and fixed radius. After the graph is constructed, the graph is re-processed using three iterations (\(T\) = 3) with GNN. To reduce the point cloud, we set the voxel size to 0.8 m for network training and 0.4 m for inference. For initial states of vertex, we set a fixed radius to \(r_{0}\) = 0.2 m. _Th = 0.01_ is set in NMS. We train the proposed GNN end-to-end with batch size 1. We use stochastic gradient descent with a stair-case learning-rate decay. For each object, we use an initial learning rate of 0.01 and a decay rate of 0.1 per training step with 400 K steps. After \(T\) = 3 iterations of the graph neural network, the vertex state value is used to predict both the category and bounding box of the object to which the vertex belongs. The classification branch calculates multi-class probabilities. We use the mean cross-entropy loss as the classification loss. Finally, the network calculates the bounding box for each class. Add \(L1\) regularization to each \(MLP\) to prevent overfitting. Since multiple vertices can be in the same entity, the neural network can output multiple bounding boxes of the same entity. We use 3D IoU and NMS to merge these bounding boxes into one. The size of \(MLP_{cls}\) is (64, #(class)). The \(MLP_{loc}\) size of each class is (64, 64, 9). \(MLP_{cls}\) predicts the class of an object along with the Background class and the DoNotCare class.  
Figure 2: Overview of the proposed visual positioning method (VPS). The process comprises (**a**) pose estimation stages of improved point-graph neural network (GNN) and (**b**) voxel database construction along with voxel labeling matching through VPS.