The objective of this project was to develop a deep learning model capable of identifying cracks in concrete. The goal was to create a robust pipeline for computer vision tasks that can accurately classify images as either containing cracks (positive) or not (negative). This model can be crucial in automating the inspection process in construction, where early detection of cracks is essential for ensuring structural integrity.
This project highlights the practical application of deep learning in the field of computer vision, particularly for tasks critical to construction and infrastructure maintenance. The developed model is a step towards automating and improving the accuracy of crack detection, which is vital for ensuring the safety and longevity of concrete structures.
-
Dataset Preparation: A custom Dataset class was implemented to load image tensors representing concrete surfaces. The dataset was divided into positive and negative samples, where positive samples contain cracks, and negative samples do not. The images were preprocessed using standard transformations, including normalization, to ensure consistent input to the model.
-
Model Selection and Modification: A pre-trained resnet18 model was selected for its balance between performance and computational efficiency. The final fully connected layer was modified to output two classes, corresponding to the binary classification task (crack/no crack). This approach leveraged transfer learning to enhance the model's ability to generalize from a relatively small dataset.
-
Training the Model: The model was trained over 10 epochs, with loss and accuracy tracked for both the training and validation datasets. This allowed for monitoring the model’s performance and adjusting hyperparameters as necessary to avoid overfitting and underfitting.
-
Error Analysis: After training, the model's predictions were analyzed to identify samples that were misclassified. These instances were recorded in a DataFrame, capturing the sample number, true label, and predicted label. This analysis is critical for understanding the model's limitations and areas where further improvement is needed.
-
Building a Deep Learning Model to Solve a Real Problem: This project demonstrated the ability to conceptualize and develop a deep learning model tailored to a specific, real-world application—detecting cracks in concrete surfaces.
-
Executing a Deep Learning Pipeline: From data preprocessing to model training and evaluation, a complete deep learning pipeline was executed. This included handling data loading, model selection, training, and error analysis.
-
Applying Deep Learning Knowledge to Improve Models: By leveraging a pre-trained model and fine-tuning it for the specific task of crack detection, the project showcased the effective application of deep learning techniques to improve model accuracy and robustness.
-
Communicating Outcomes: The outcomes of this deep learning project, including the model’s performance metrics and error analysis, were presented in a structured manner. This ability to communicate results is essential for conveying the value and limitations of AI models to stakeholders.
Inside this folder, you will find several Jupyter notebook files from the final assignments of various topics studied during the certification program. While they are not part of the project itself, these assignments were crucial for understanding various technical aspects during the project, including:
- A Convolutional Neural Network (CNN) implemented in PyTorch for classifying the Fashion-MNIST dataset.
- Restricted Boltzmann Machines (RBMs) in TensorFlow for reconstructing the MNIST dataset.
- Autoencoders in TensorFlow for feature extraction and dimensionality reduction using the MNIST dataset.
- LSTM (Long Short-Term Memory) networks in TensorFlow for language modeling.