# Unbiased 3D Semantic Scene Graph Prediction in Point Cloud Using Deep Learning
## 4 Experimental Section  
### Experiment Preparation  
Implementation Details: The experiments were conducted using the deep learning frameworks Pytorch 1.9.0, Python 3.8 and Cuda 11.1, and the operating system Ubuntu 18.04. The training was completed on a device with AMD R-5800H and 16 GB RAM on an 8 GB NVIDIA GeForce RTX3070 laptop, following the same parameter settings as the baseline model using the following: Adam optimizer; fixed random seeds; an initial learning rate set to 0.0001; a decay of 0.7 per 10 epochs; batch size set to 1; epoch set to 40 and using the early termination strategy. All models were trained on the same dataset as the 3 DSSG dataset.  
Dataset: The 3 DSSG, a publicly available large indoor 3D semantic scene graph dataset, is based on the realistic 3D scan dataset, 3 Rscan [11; 12]. The dataset mainly contains support, proximity and comparison relationships between the entity objects in indoor scenes. During the training process, larger scenes are partitioned, with an average of 9 objects per scene, 160 classes of entity objects and 27 classes of relationships between objects (including \"none\"). The training file is divided so that there are 3582 scenes in the training set and 548 in the validation set.  
Dataset Preprocessing: The original dataset has incomplete 3D-scanned scenes and a small number of annotation errors, and the dataset has severe long-tail distribution problems. We performed preprocessing operations on the dataset and group statistics of the categories for subsequent experiments.  
The following preprocessing operations were completed for each scanned split in the dataset to reduce the training data preprocessing times:  
* Obtain the instance IDs in each scene from the dataset and establish the mapping relationship with the corresponding point cloud.
* Conduct sampling by the farthest point sampling (FPS) algorithm, sampling 1024 coordinate points per object instance on average and using random sampling to complement the small target entities to align the training data.
* Using the ground-truth labels, remove some of the individual scenes cut that do not contain relationships or entities, count the frequency of each category and sort them, and remap the labels of each category.
* Save the scene point cloud and label the array files to a separate folder under each scene, and generate the training set and validation set files.  
Group Weighted (GW): For the long-tail distribution phenomenon, the predicate categories are grouped according to the sample distribution in the dataset [20].  
The grouping results are shown in Figure 8, where different object entities and predicate categories are statistically sorted according to the number of samples. The grouping principle is the extreme difference in the number of samples of different categories within the group that does not exceed 4 times. For the weights in the training process allocation, this paper uses a weighting approach, and for each group of categories, a weight range is set and calculated as follows:  
\[w_{i}=\alpha_{k}*f\left(\frac{n_{i}}{G_{k}}\right)+\beta_{k}\;, \tag{17}\]  
where \(n_{i}\) is the number of samples in each category, \(G_{k}\) is the total number of samples in each group, and \(f\left(\cdot\right)\) is the normalization method that maps the range to [0, 1]. The first group sets the weight range [0, 0.25], which is reverse-weighted according to the number of samples in each category in the group; the second group sets the range [0.5, 1] using the same steps; the third group, which is small sample categories, all take 1.