# Defect-Detection-Classifier
**Repository Path**: wen_tao1998/Defect-Detection-Classifier
## Basic Information
- **Project Name**: Defect-Detection-Classifier
- **Description**: No description available
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2019-12-24
- **Last Updated**: 2024-01-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## Defect-Detection-Classifier
Defect detection of water-cooled wall. The sample is hard to collect, so we only have a little dataset
which includes 320 training images(160 normal+ 160 defect) and 80 testing images(40 normal+ 40 defect).
The image size is 256*256. The dataset is collected by Dong Jin. Thanks the advice from Yu Fang about
the using of gcForest.
## dataset
the above three images are normal examples and the below are defect.






## Classifier
We use Support Vector Machine(SVM) with different feature extractors, deep forest and Convolutional Neural
Network to train the classifier.
* Gauss filter+LBP+SVM(rbf kernel)
Use Gaussian filter and laplacian operator to denoise and extracts edges, then LBP(Local Binary Patt-
ern) extract features of preprocessed images as the input of SVM.
* CNN+SVM(rbf kernel)
Use VGG16 to extract features as the input of SVM., the weight of VGG16 is trained on ImageNet.
* simple CNN(3 Conv+1 FC)
Build a simple neural network to train. The network consists of three convolutional layers and a fully
connected layer.
* transfer Learning(VGG16)
Use VGG16 to extract features as input of a simple network that consists of a fully-connected layer.
* Neural Network Search
Use NNS to search a best network.
* gcForest
Use deep forest(Only cascade forest structure/With multi-grained forests) to train the ensemble classifier.
### Result
| classifier | accuracy |
|--------------------------------------------|--------------|
| Gauss filter+LBP+SVM(rbf kernel) | 97.25% |
| CNN+SVM(rbf kernel) | 71.25% |
| simple CNN(3 Conv+1 FC) | 72.50% |
| transfer Learning(VGG16) | 81.25% |
| Neural Network Search | 82.28% |
| gcForest (without multi-grained forests) | 80.00% |
| gcForest (with multi-grained forests, i=8) | 88.75% |
## run
### Dependencies ###
* [gcForest](https://github.com/kingfengji/gcForest)
* [AutoKeras](https://github.com/jhfjhfj1/autokeras)
Currently, Auto-Keras is only compatible with: Python 3.6. And we need to install the depedencies under python3. [2019.5.10]
* others
pip install -r requirements.txt
### run ###
~~~
# read README.md in models folder and download weight file of pre-trained VGG on the ImageNet dataset.
# dataset
cp -rf normal_add/* ./normal
rm -rf normal_add/
cp -rf defect_add/* ./defect
rm -rf defect_add
# CNN+SVM(rbf kernel)
python cnnSVM.py
# simple CNN(3 Conv+1 FC)
python CNNclassifier.py
# transfer Learning(VGG16)
python transferLearning.py
# gcForest (without multi-grained forests)
python ./data/train/write_label.py
python ./data/test/write_label.py
python ./gcForest/demo_Defect-Detection-Classifier.py --model ./gcForest/demo_Defect-Detection-Classifier-ca.json
# gcForest (with multi-grained forests, i=8)
python ./gcForest/demo_Defect-Detection-Classifier.py --model ./gcForest/demo_Defect-Detection-Classifier-gc8.json
# Neural Network Search, copy autokeras dir to current path after it is installed from source.
python ./data/train/write_label2.py
python ./data/test/write_label2.py
python3 autoCNNclassifier.py
~~~
## reference
[scikit-learn tutorial](http://scikit-learn.org/dev/modules/generated/sklearn.svm.SVC.html)
[Building powerful image classification models using very little data](https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html)