Python 2 implementation for android app development A python flask app running on local host. Due to computation limitation, images if trimmed to 512x512 pixels.
pip install -r requirements.txt
- Download the dataset from DataSet and extract the contents to the folder "YE358311_Fender_apron"
- Dataset Directory containing "normal" and "defect" folders
- dataset ---> "/YE358311_defects/YE358311_Crack_and_Wrinkle_defect/"
- dataset ---> "/YE358311_Healthy/"
- Destination Directory containing "train" and "test" folders
- data ----> train ----> {"normal", "defect"} subfolders
- data ----> test ----> {"normal", "defect"} subfolders
python2 main_train.py
--- Start the training application server(local)http://127.0.0.1:5000/crack_detection_train
--- Train the modelpython2 main_predict.py
--- Start the testing application server(local)http://127.0.0.1:5000/crack_detection_test
--- Opens an hmtl to upload the image and predict if Defective or Healthy
Validation accuracy and loss
- Training loss : 0.1695
- Training accuracy : 97%
- Validation/Test loss : 0.2475
- Validation/Test accuracy : 92.4%
- Next commit is to submit an andriod one page app to interact with the python flask API, showing upload, train and test functionality just like the webapp above.
- Image Preprocssing/Data Preparation
- Since cracks are of less area as compared to image and noise, will introduce dropouts to improve accuracy
- Preparing a object extraction module (For removing the rest of noise to improve accuracy)
- Preparing a background color update module (For easy extraction of metal part after grayscale conversion)
- Trainng Improvements
- Using a pretrained model such as VGG16 trained on ImageNet
- Using model ensembles such as CNN+SVM (rbf kernel), Gauss filter+LBP+SVM(rbf kernel) etc that have proved improving accuracy