## 3 Proposed Method
### Overall Framework  
In SFFNet, the framework mainly consists of two parts: CNN feature extraction and GCN image classification. We used the CNN to extract rich information from the data. These features extracted by the CNN were be used to construct the graph data structure. In the GCN module, we used Graph SAGE as a graph convolutional layer to build the classification model. The previous features were aggregated to obtain the final prediction probability. The overall framework figure is shown below. As shown in Figure 1, we first randomly sampled the hyperspectral raw image. In addition to the selected sampling point, we extracted an image block of 7 \(\times\) 7 size centered on that pixel. The image block size was set to the same size as the patch_size. In fact, the other data points on this image block were only used to provide features to assist in the classification of the central pixel point. The image block will serve as the initial information of the sampling points and be fed into the feature extraction module to complete convolution processing together. Its final classification task targets the central sampling point. Let the number of samples be \(n\) and the number of image blocks be \(N\). The \(N\) image blocks will be fed into the CNN feature extraction module, which consists of three convolutional layers with a kernel size of 3 \(\times\) 3. The CNN performs convolution in fixed local regions. This characteristic reflects the limitations of the CNN in feature extraction. According to our design in the CNN module, after ending the third layer of convolution we can finally obtain \(n\times(1\times 1\times 1024)\) feature vectors. These are the feature nodes in constructing the graph data structure. Since we added the auxiliary role of image blocks while extracting the pixel points, the topological and semantic information of the spatial-spectral blocks will be more abundant. This makes ours model more referential and connective. When constructing the graph data structure, we first constructed a connection relationship between each feature node and updated the relationship weights according to the spectral similarity between the nodes. When the weights are reduced, the influence produced by their node vectors on the target nodes is likewise reduced. As shown in the GCN classification module in Figure 1, the solid lines in the graph data structure represent the connection relationships between nodes, and the dashed lines represent the aggregation relationships between graph convolutional layers. Unlike other networks, the SFFNet construction of the graph data structure occurs after the CNN extracts features rather than when the data are initially processed. The complete network is shown below. Figure 2 shows the network of SFFNet. Our core SFFNet block consists of two sub-modules: CNN extraction and GCN classification. Between the CNN extraction block and the GCN classification block exists a good time to build the graph data structure. The CNN extraction block is built by a 2D-CNN with three layers, and the number of convolutional channels in each layer grows exponentially. The GCN classification block contains two SAGE layers to convolve the feature data by exponentially reducing the number of convolutional channels. We arranged three fully connected layers to reduce the number of channels to the size before entering the image classification block. The output of the last layer will give the final classification prediction probability. We have used ReLU as the activation function here, although not in as much detail as indicated in Figure 2.  
Figure 1: SFFNet Framework. It includes a total of four main parts, which are distinguished by dotted boxes. The core parts of the method are the CNN feature extraction module and the GCN information classification module. The CNN extraction module is used to extract the information of the original pixel blocks, and the GCN classification module performs the similarity connection of the extracted features.