## 4 Experiment
### Implementation Details  
We choose \(1\times 1\) square-meter area as the block size for splitting each building scene into blocks along the horizontal direction to train. Prior to training, the input point clouds are aligned to a common reference frame. In addition, for training convenience, points in each block are sampled into a uniform number of 8192 points. During training, we randomly sampled \(n\) (2048 or 4096) points in each block on the fly. To train our AE network, we employed ADAM [63] as an optimizer with an initial learning rate of 0.001, batch size 16 and weight decay \(10^{-6}\) with 250 epochs. The setting of hidden layers in our encoder is the same as the one of the DGCNN (github.com/WangYueFt/dgcnn. Accessed on 24 September 2021), but we removed those layers after the max pooling layer. The architecture of the encoder incorporates the following steps:  
1. Three EdgeConv layers to extract local and global geometric features. The EdgeConv layers take a tensor of shape \(n\times f\) as input, where \(f\) is input features of point cloud, then acquire edge features for each point by applying an MLP with the number of layer neurons defined as \(\{a_{1},a_{2},\dots,a_{n}\}\). The number of nearest neighbors \(k\) is set as 20 at every EdgeConv layer;
2. Features generated in three EdgeConv layers are concatenated to aggregate features in different receptive fields; and
3. Lastly, the dimension of the MLP layer before the last max pooling layer is set as \(C_{out}\) (512 or 1024) to globally aggregate a 1D global descriptor \"codeword\" \(\theta\).  
In our graph-based decoder, we used two consecutive three-layer MLPs to warp a fixed 2D grid into point-cloud surfaces as FoldingNet (ai4 ce_github.io/publication/yang-2018-foldingnet. Accessed 24 September 2021). Before feeding the \"codeword\" into the folding-based decoder, we replicated the \"codeword\" \(m\) times and concatenated the replicated \((m,\ C_{out})\) matrix with a \((m,\ 2)\) matrix. According to the input point-cloud size (2048 or 4096), \(m\) is set as 2025 or 4096. Then the size of two three-layer shared MLPs is \((C_{out}+2,\ 2)\)  
Figure 3: The network takes the three scenes in Architectural Cultural Heritage (ArCH) dataset as training data, in the top row, from (**a**–**c**): “SMV_1”, “SMV_24” and “SMV_28”. In the bottom row, from (**d**–**f**) are: “Scene_A”, “Scene_B south side” and “Scene_B indoor part”, which are employed as our test data. Copyright © 2021 ArCH dataset.  
\(C_{out}\), 3) and \((C_{out}+3,C_{out},\) 3), implemented by six 1D convolutional layers, each followed by a ReLU layer. The output is the reconstructed point cloud with size \((m,\ 3)\).  
Similarly, in the semantic segmentation network, we also used ADAM as our optimizer (learning rate 0.01, batch size 8 or 16, 250 training epochs). According to the dimension of \(C_{out}\), our shared MLPs are \((C_{out}+64+64+64,\ 512,\ 256,\ 128,\ n\_classes)\) with layer output size \((512,\ 256,\ 128,\ n\_classes)\) on each point. The evaluation matrix _of Overall Point Accuracy_ (OA) and _mean Intersection over Union_ (mIoU) are calculated on the ArCH dataset. The method was implemented using PyTorch. All experiments were conducted on an NVIDIA Tesla T4 GPU.