## 3 Methods
### Feature-Extracting & Outlier Removal
After applying a max-pooling layer on the output feature, the final output of the Set Abstraction block contains down-sampled 3D point clouds, down-sampled local reference 3-dimensional axes, and the processed feature. We first normalize the kNN distance to the range of (0,1], then add 1 to it, and then divide it by the feature. This ensures that the network cares more about neighbors closer to the center and less about those farther awayfrom the center. We utilize two Set Abstraction blocks in the Feature Extractor, each followed by a Point Transformer [7] to pay attention to connections between the down-sampled input point cloud and the processed feature, as in several other state-of-the-art works [38]. The Point Transformer was proposed to focus more on local and global structures, compensating for the potential loss of fine-grained details in Set Abstraction blocks. The Point Transformer, through the self-attention mechanism, uses point cloud coordinates as a query reference, making the point-wise feature extraction more reasonable [7]:  
\[\mathbf{y_{i}}=\sum_{\mathbf{y_{i}}\in X(i)}\rho\big{(}\gamma(\varphi(\mathbf{ x_{i}}))-\psi(\mathbf{x_{j}})+\delta\big{)}\odot\big{(}\mathbf{\alpha}(\mathbf{x_{j} }+\delta)\big{)} \tag{8}\]  
where \(\varphi,\alpha,\psi,\gamma\) are the convolutional layers, \(\delta\) is the position-encoding feature which is often obtained by passing the 3D coordinates through a convolutional layer. \(\odot\) is the Hadamard product process, and \(\rho\) represents the SoftMax function. Given an input point-wise feature \(X=\{\mathbf{x_{i}}\}_{i}\), \(X(i)\) represents a local neighborhood of \(\mathbf{x_{i}}\), usually generated by applying the kNN-sampling index to the feature. In our case, we further let the calculated normal vectors guide the query process in self-attention:  
\[\mathbf{y_{i}}=\sum_{\mathbf{x_{j}}\in X(i)}\rho\big{(}\gamma(\varphi(\mathbf{ x_{i}}))-\psi(\mathbf{x_{j}})+\phi(\delta+\delta_{n})\big{)}\odot\big{(} \mathbf{\alpha}(\mathbf{x_{j}}+\phi(\delta+\delta_{n}))\big{)} \tag{9}\]  
The position encoding feature \(\delta\) is usually obtained by calculating the relative coordinates from the center point after kNN-sampling, and passing through a simple MLP layer. We operate the calculated normal vectors in the same way to output the normal encoding feature \(\delta_{n}\). To preserve the original steady structure of the Point Transformer, we concatenate the features \(\delta\) with \(\delta_{n}\) and integrate the information with another MLP layer \(\phi\). To predict the label of outlier points, the network needs to obtain a point-wise feature \(\mathcal{F}\) of the input point cloud \(\mathcal{P}\), representing the local structural distributions of each point. We further follow the work of PointNet++ and make use of the Feature Propagation Blocks, which is proposed to propagate features from subsampled points to the original points. We extend the original formula [15] to:  
\[ \begin{split} f^{(j)}(\mathbf{x})&=\frac{\sum_{i=1 }^{3}\omega_{i}(\mathbf{x})f_{i}^{(j)}(\mathbf{x})}{\sum_{i=1}^{3}\omega_{i}( \mathbf{x})}\\ \text{where}&\omega_{i}(\mathbf{x})&= \frac{1}{d(\mathbf{x},\mathbf{x_{i}})^{2}}\cdot\frac{1}{d(\mathbf{n},\mathbf{ n_{i}})^{2}},\quad j=1,\ldots,C\end{split}  \tag{10}\]  
Here, \(\mathbf{x}\) denotes a query point in the original point cloud, and \(\mathbf{x_{i}}\) are its three nearest neighbors from the subsampled feature set. The feature \(f^{(j)}(\mathbf{x})\) is the interpolated value of the \(j\)-th feature channel at point \(\mathbf{x}\), and \(f_{i}^{(j)}\) is the \(j\)-th channel of the \(i\)-th neighbor point. The interpolation weight \(\omega_{i}(\mathbf{x})\) combines both spatial proximity and normal consistency, where \(d(\mathbf{x},\mathbf{x_{i}})\) is the Euclidean distance and \(d(\mathbf{n},\mathbf{n_{i}})\) denotes the cosine distance between normal vectors.