# Small-Scale Face Detection Based on Improved R-FCN
## 4 Feature Fusion Branch  
When R-FCN is used for face detection, it is ineffective for small-scale face detection. The main reason is that the position-sensitive score map used for position-sensitive pooling is convoluted from the highest-level feature map of the backbone network. The pixel step corresponding to the original image is 16. When the input face is less than \(16\times 16\), only 1 pixel can be obtained for detection, which is difficult for the detector to classify and regress. Second, an increasing amount of semantic information will be integrated into the feature map with the increase in convolution layers, while the proportion of local information of small-scale faces becomes lower. The lower-level features have more local information, while the features of higher-level have rich semantic information on CNN. Therefore, we establish a feature fusion branch that can use the context information of CNN to improve the robustness of small-scale face detection. FPN constructs a top-down feature pyramid, which contains information of various scales, but it still has deficiencies. First, FPN recursively adds high-level features to low-level features, and too many semantic features may damage the details of low-level features. This condition results in insufficient detection accuracy for small targets. Second, FPN manually assigns anchors with different scales to distinct layers, which may assign targets to feature layers that are not conducive to detection. The feature fusion branch we proposed adopts the bottom-up fusion method to integrate the information of the low-level layer with the high-level layer features. The scales of the features of each layer in the branch are the same as those of the corresponding features in the backbone, as shown in Figure 2.  
The same as those in FPN, \(C_{i}\) represents the last feature map of each residual group of ResNet, and \(i\in[2,5]\). \(F_{i}\) is the feature obtained by fusing \(C_{i}\) and \(F_{i-1}\). To start iteration, \(C_{2}\) is directly taken as the fused feature \(F_{2}\). The scale of features from lower layers is large, and the number of channels is small. Thus, \(3\times 3\) convolution is used to reduce the feature scale for adding the corresponding elements with the upper layer features. The feature fusion operation can be expressed by Formula (2). \[F_{i}=C_{i}+L(Conv(F_{i-1})) \tag{2}\]  
_Conv_ represents convolution operation and \(L\) denotes L2 normalization. When \(i=2\), \(F_{i}=C_{i}\). The feature maps from different layers have distinct properties in terms of the number of channels, the scale of value, and the norm of feature map pixels. The norm of features of shallow layers is generally large, while the norm of features of deep layers is usually small. If a simple element addition operation is performed on two features, then the shallow layer features will dominate the deep layer  
Figure 2: Architecture of feature fusion branch. features. Therefore, the L2 normalization proposed by ParseNet [26] is introduced to normalize the feature pixels before feature fusion. The formula is as follows:  
\[\hat{\mathbf{X}}=\frac{\mathbf{X}}{\|\mathbf{X}\|_{2}} \tag{3}\]  
\[\|\mathbf{X}\|_{2}=\left(\sum_{i=1}^{d}|x_{i}|^{2}\right)^{\frac{1}{2}} \tag{4}\]  
\(\mathbf{X}=(x_{1},x_{2},\cdots,x_{d})\) is the feature before normalization. \(d\) is the number of channels. \(\hat{\mathbf{X}}=(\hat{x}_{1},\hat{x}_{2},\cdots,\hat{x}_{d})\) is the normalized feature. \(|x_{i}|\) is the absolute value of \(x_{i}\). The values of the feature will be changed and the difficulty of training will increase after normalization. Therefore, the normalized pixel value should be scaled, and Formula (5) should be used to scale the normalized feature along the channel:  
\[y_{i}=\gamma_{i}\hat{x}_{i} \tag{5}\]  
\(y_{i}\) is the value of the feature after scaling. \(\gamma_{i}\) is the scale factor that can be obtained by learning in the training stage.