A Tensorflow implementation of "Segmentation-Based Deep-Learning Approach for Surface-Defect Detection" (秒杀 DeepLabV3+ 和 Unet 的 缺陷检测网络) The author submitted the paper to Journal of Intelligent Manufacturing (https://link.springer.com/article/10.1007/s10845-019-01476-x), where it was published In May 2019 .
python 3.6
cuda 9.0
cudnn 7.1.4
Tensorflow 1.12
I used the Dataset used in the papar, you can download KolektorSDD here. If you train you own datset ,you should change the dataset interfence for you dataset.
You can refer to the paper for details of the experiment.
Notes: the first 30 subfolders are used as training sets, the remaining 20 for testing. Although, I did not strictly follow the params of the papar , I still got a good result.
2019-05-21 09:20:54,634 - utils - INFO - total number of testing samples = 160
2019-05-21 09:20:54,634 - utils - INFO - positive = 22
2019-05-21 09:20:54,634 - utils - INFO - negative = 138
2019-05-21 09:20:54,634 - utils - INFO - TP = 21
2019-05-21 09:20:54,634 - utils - INFO - NP = 0
2019-05-21 09:20:54,634 - utils - INFO - TN = 138
2019-05-21 09:20:54,635 - utils - INFO - FN = 1
2019-05-21 09:20:54,635 - utils - INFO - accuracy(准确率) = 0.9938
2019-05-21 09:20:54,635 - utils - INFO - prescision(查准率) = 1.0000
2019-05-21 09:20:54,635 - utils - INFO - recall(查全率) = 0.9545
After downloading the KolektorSDD and changing the param[data_dir]
python run.py --test
Then you can find the result in the "/visulaiation/test" and "Log/*.txt"
First, only the segmentation network is independently trained, then the weights for the segmentation network are frozen and only the decision network layers are trained.
training the segment network
python run.py --train_segment
training the decision network
python run.py --train_decision
training the total network( not good)
python run.py --train_total