除了分析模型的检测AP, 分割mIoU指标,质检需要进行全流程的零件过杀/漏检分析,通过全流程预测能够得到零件的NG/OK(缺陷或正常)信息,以及预测框/分割的实例级别NG/OK(缺陷或正常)信息, 保存完整的预测结果,并对齐进行可视化,从而进行分析和指标优化。
使用tools/end2end/predict.py
脚本,执行如下命令,完成./dataset/MT_dataset/images/val
路径下所有图像的预测:
python3 tools/end2end/predict.py --config ./configs/end2end/e2e_det.yml --input ./dataset/MT_dataset/images/val --output_dir ./output_det/
也可以通过--input ./dataset/MT_dataset/images/val/exp5_num_10250.jpg
进行单张图像预测,如下:
python3 tools/end2end/predict.py --config ./configs/end2end/e2e_det.yml --input ./dataset/MT_dataset/images/val/exp5_num_10250.jpg --output_dir ./output_det/
得到输出结果:
Pipeline INFO: Save prediction to ./output_det/output.json
{'./dataset/MT_dataset/images/val/exp5_num_10250.jpg': {'pred': [], 'isNG': 0}}
具体参数说明如下:
参数名 | 含义 | 默认值 |
---|---|---|
--config |
全流程配置文件 | |
--input |
待预测的图像路径 或单个图像文件 | |
--output_dir |
保存预测文件和可视化结果路径 | ./output/ |
若将./configs/end2end/e2e_det.yml
中的save
和visualize
设置为True
, 则会得到保存的预测结果json文件和可视化图像。执行上述命令以后,在./output_det/
路径中会得到./output_det/output.json
文件,在./output_det/show/
下可得到可视化的图像:
Pipeline INFO: Save prediction to ./output_det/output.json
Pipeline INFO: Visualize prediction to ./output_det/show/
输出的json文件保存了以每一张输入图像路径为key, 预测结果为value的dict结构,详细说明如下:
{
"dataset/MT_dataset/images/val/exp6_num_127730.png": {
"isNG": 0, # 图像级别缺陷判断,是缺陷图1,非缺陷图0
"pred": [], # list 保存缺陷实例级别预测结果
},
"dataset/MT_dataset/images/val/exp5_num_155415.jpg": {
"isNG": 1, # 是缺陷图
"pred": # 预测出以下两个缺陷实例
[
{
"category_id": 2, # 缺陷类别id
"category_name": "Break", # 缺陷名
"bbox": #缺陷预测框x, y, w, h
[
0.0,
6.75,
190.86,
78.03
],
"score": 0.28, # 预测框得分
"isNG": 1 # 该预测实例是缺陷
},
{
"category_id": 5,
"category_name": "Uneven",
"bbox":
[
0.0,
156.82,
195.0,
154.17
],
"score": 0.01,
"isNG": 0 # score为0.01,经过后处理过滤,该预测框不是缺陷
}
],
},
}
注意:若采用分割或者检测+RoI分割的全流程配置,则输出的结果中会增加polygon
和area
字段。
可视化图像中包含box, polygon(若使用分割),类别,置信度,是否是NG信息。
以Magnetic-tile-defect-datasets检测+RoI分割结果为例: