框架介绍
PaddleDetection:飞桨推出的PaddleDetection是端到端目标检测开发套件,旨在帮助开发者更快更好地完成检测模型的训练、精度速度优化到部署全流程。该框架中提供了丰富的数据增强、网络组件、损失函数等模块,集成了模型压缩和跨平台高性能部署能力。目前基于PaddleDetection已经完成落地的项目涉及工业质检、遥感图像检测、无人巡检等多个领域。
印刷电路板(PCB)瑕疵数据集
印刷电路板(PCB)瑕疵数据集:数据下载链接,是一个公共的合成PCB数据集,由北京大学发布,其中包含1386张图像以及6种缺陷(缺失孔,鼠咬伤,开路,短路,杂散,伪铜),用于检测、分类和配准任务。我们选取了其中适用于检测任务的693张图像,随机选择593张图像作为训练集,100张图像作为验证集。
本项目选取yolov3_darknet.yml作为本项目的训练配置文件。该配置文件选取的是YOLOv3_darknet模型,骨干网络为DarkNet,yolo_head为YOLOv3Head。
yolov3_darknet_baseline.yml配置文件修改适配: max_iters: 2669 num_classes: 6 base_lr: 0.00025 milestones: [1779, 2372] yolov3_darknet_baseline.yml的Reader修改适配: TrainReader: image_dir: images anno_path: Annotations/train.json dataset_dir: PCB_DATASET EvalReader: image_dir: images anno_path: Annotations/val.json dataset_dir: PCB_DATASET TestReader: anno_path: PCB_DATASET/Annotations/val.json
Anchor重新聚类
python tools/anchor_cluster.py -c ../yolov3_darknet_baseline.yml -n 9 -s 608 -m v2 -i 1000
结果如下:
anchors: [[8, 14], [13, 14], [10, 21], [21, 13], [16, 20], [12, 31], [30, 17], [22, 27], [36, 36]]
Anchor重新聚类完成后,修改配置文件中YOLOv3Head里的anchors字段,和TrainReader的Gt2YoloTarget中anchors字段。
训练与评估:
python -u tools/train.py -c yolov3_darknet_baseline.yml --eval python -u tools/eval.py -c yolov3_darknet_baseline.yml -o weights=output/yolov3_darknet_baseline/best_model
最终评估结果如下图所示:
从上图中,可以看出YOLOV3_darknet模型在印刷电路板(PCB)瑕疵数据集数据集上的mAP = 34.9
补充
awesome-DeepLearning:一站式深度学习在线百科,内容涵盖零基础入门深度学习、产业实践深度学习、特色课程;深度学习百问、产业实践(开发中) 等等。从理论到实践,从科研到产业应用,各类学习材料一应俱全,旨在帮助开发者高效地学习和掌握深度学习知识,快速成为AI跨界人才。