# Detecting Underwater Concrete Cracks with Machine Learning: A Clear Vision of a Murky Problem
## 5 Underwater Concrete Crack Detection Using Machine Learning Approaches
### Test Cases  
_Review of Performance of Existing Networks on Concrete Images with and without Cracks and Underwater Effects_  
Detecting cracks on underwater surfaces poses a significant challenge, and conventional image detection networks cannot be directly applied to this problem. To demonstrate the limitations of currently available networks, we conducted a series of tests using a concrete crack dataset, as outlined in our published papers [1,2]. The methodology is based on transfer learning, which is described in detail in [62]. Our evaluation comprised two tests: the first involved training a network to distinguish between crack and non-crack surfaces, while the second tested the same network's ability to detect cracks under conditions of underwater illumination (see Figures 3 and 4 for sample images used in both tests). To conduct our study, we employed two distinct image datasets:  
1. Concrete crack images dataset. An example of this dataset is shown in Figure 3.
2. Underwater crack images dataset. An example of this dataset is shown in Figure 4.  
Figure 3: Concrete crack images dataset example. Figure 2: The comparison of speed versus the prediction accuracy of various classification neural networks. Source—www.mathworks.com. Test Case 1: Testing the Trained Network on Identifying Cracks within Non-Crack Surfaces and Using the Same Network to Test Underwater Images  
In this case, we used a trained network [1] for identification of cracks within non-crack surfaces in various outdoor settings. The Case 1 characteristics and techniques are as follows:  
* Training was conducted on the concrete crack images dataset;
* Testing was conducted on the underwater crack images dataset;
* For case investigation, we used convolutional neural network (CNN) architecture AlexNet and SqueezeNet. For the investigation in Case 1, we used different training data, testing data, and validation data parameters, which are shown along with the accuracy of the network in Table 1. It can be seen from the results that network accuracy in most cases is above 99%. Two different networks trained using transfer learning approaches described in [1] were used, namely AlexNet and SqueezeNet. Based on Table 1, we can see that using the AlexNet architecture, we obtain the best results when we use these parameters: TrainingData = 0.3; TestingData = 0.3; ValidationData = 0.3. The results of this case are presented in Figures 5 and 6. It can be seen from these results that, when the network is trained on identifying cracks in surfaces that are in outdoor settings, it works well, with 99.3% accuracy, but the performance of the same network in identifying cracks in underwater images is rather poor, close to 91.6% accuracy only. The poor accuracy is because the network is not trained with underwater images and it found it difficult to identify true cracks, resulting in false positives that reduced the accuracy of the method. The training progress plots, along with training parameters for the case with training, testing, and validation data = 30%, are presented in Figures 7 and 8 for SqueezeNet and AlexNet, respectively. Figures 7 and 8 shows the network training performance. Figure 7 shows the training progress plot for SqueezeNet with training, testing, and validation using 30% of the data for each. Similarly, Figure 8 shows the training progress plot for AlexNet with training, testing, and validation using 30% of the data for each. Figure 4: Underwater crack images dataset example. \begin{table}
\begin{tabular}{c c c c c c c c c c c c} \hline \multirow{2}{*}{**Index**} & \begin{tabular}{c} **Parameters Used** \\ **for Training** \\ **Network** \\ \end{tabular}  & \begin{tabular}{c} **Overall Accuracy** \\ **for Concrete** \\ **Crack Dataset** \\ \end{tabular}  & \begin{tabular}{c} **Overall Accuracy** \\ **for Underwater** \\ **Crack Dataset** \\ \end{tabular}  & \begin{tabular}{c} **Validation** \\ **Accuracy** \\ \end{tabular}  & **Training Time** & **Epoch** & \begin{tabular}{c} **Maximum** \\ **Iterations** \\ **per Epoch** \\ \end{tabular}