## 2 Materials and Methods
### Rapid Evaluation System Based on CPM
#### 2.1.1 Human Skeleton Algorithm Recognition Module  
The human skeletal recognition algorithm module is a crucial application of image recognition technology, as it automatically extracts relevant parameters of workers' operational postures from images, such as body pose skeletons and the states of limb bending, twisting, overlapping, and so on. Therefore, based on CPM, this paper developed a human skeletal recognition algorithm for identifying the two-dimensional positions of human body joints and designed a multi-stage algorithm structure composed of multiple convolutional pooling groups. As shown in Figure 2, the different stages of the algorithm network structure are distinguished by different colored blocks. Here, C represents the convolution operation in the convolutional neural network, and \(9\times 9\) represents the size of the convolution kernel in the convolution operation. P represents the pooling operation in the convolutional neural network, and \(2\times\) represents the step size in the pooling operation. h represents the height of the image, w represents the width of the image, and the height and width of the image are based on pixel values. n represents the number of joints, where \(n+1\) represents the number of joints plus the background response feature map. Loss represents the calculated loss value after the algorithm runs. Concat is the image concatenation function. In the first stage, the algorithm can directly complete the recognition of the human skeleton, outputting a feature map containing joint position information. Subsequently, in the second stage and beyond, the feature map output from the previous stage is used as input for iteration, with the algorithm utilizing image space features, image texture features, and image center constraints as joint inputs [36]. The algorithm continuously iterates to recognize higher-precision joint feature maps. Texture features are extracted in different convolution pooling groups. (i.e., shallow features, with smaller convolution receptive fields in the early convolutional pooling operations, enabling the generated feature maps to reflect local texture features of the image) and spatial features (i.e., deep features, with larger convolution receptive fields in the later pooling operations, enabling the generated feature maps to reflect global spatial relationship features of the image) are extracted separately. These features are concatenated to fully utilize the features extracted by the network, enhancing the detection effect. This is specifically manifested in (1) the feature map regression for visually observable joints, such as the ankles, knees, and shoulder joints, which show clear central areas; and (2) the feature maps for visually unobservable joints, such as the left hip joint, which appear more ambiguous. However, due to the algorithm network's limb association prediction and implicit modeling, the position prediction accuracy for these occluded and visually unobservable joints remains high, as shown in Figure 3a. The human pose recognition algorithm network structure in this study is staged. During training, calculating the loss value using only the output of the final stage and the labeled results in the training dataset would lead to the gradient backpropagating to the previous stage. This would result in a significant decrease in error at the output layer after multiple layers of backpropagation, leading to the phenomenon of vanishing gradients. To address this issue, the intermediate supervision algorithm is adopted. Specifically, the loss value is calculated between the output layer of each stage and the corresponding labeled results, and these loss values are then summed to form the overall network loss value. This approach can prevent the occurrence of vanishing gradients [37]. The specific calculation process is depicted in Figure 4.  
The central position of the final feature map of each recognized joint corresponds to the coordinate position of the respective joint.