Concrete crack detection algorithm

Type A set of scripts
TECHNOLOGIES Keras, NumPy, OpenCV, TensorFlow
AREAS OF EXPERTISE Image processing, Computer Vision, Machine Learning, Neural Networks
TEAM 1 manager, 2 developers

One of our current projects is about training a model that performs crack detection on concrete slabs. The main goal is to optimize the process in production. Cracks on the surface are a major defect in concrete structures. Timely crack detection helps construction companies and concrete product manufacturers to prevent potential losses.

There are various approaches to solving this problem, some of them involve manual inspection and others are based on automatic detection methods. Nowadays, the increased efficiency of modern neural network models and Computer Vision technologies makes an automatic approach out of competition compared to the manual one, allowing to optimize the process without losing any accuracy.

Crack detection is the semantic segmentation problem. Semantic segmentation refers to the process of linking each pixel in an image to a class label. In this case, we need to find all pixels of cracks on the photo of a concrete structure.

  1. The images were 11664X8750 px resolution and the cracks were so small that after fragmentation we end up with a huge imbalance in our training data set.
  2. Almost all of the cracks in the training dataset were horizontal. However, in reality, there are common both horizontal and vertical types of cracks.
  1. We had to split each image into 256X256 px overlapping tiles. Each image was divided into about 1600 samples without cracks and 150 with ones to balance the dataset.
  2. We have performed data augmentation – a technique to artificially create new training data from existing training data. We had to make the following transformations to get a good diversity of input data:
  • Flip each image horizontally and vertically;
  • Rotate each image at different angles;
  • Change brightness and contrast settings of each image in different ways;
  • Apply Gaussian blur.


The metric to evaluate our model was the Sørensen–Dice coefficient. After training, the value of this metric is 95% on the train set and 93% on the validation set.

Figures 2-4 show an example of prediction for the input image (figure 1).

Business value

The solution helped our client to automate the process of concrete cracks detection in production and almost eliminate the need for human participation in it. This means that our solution can save a company from at least 20 human hours a week (or around $20,000/year) for each production line.

In the future, it is planned to configure the model for rust recognition and build a predictive model for flaws search.

An ML based solution for photo processing
An ML based solution for photo processing
A solution to identify a brand-specific style
A solution to identify a brand-specific style