在前面的一些文章中,我们已经尝试过将目标检测模型与实际生产生活中的各种实际需求相结合开发构建目标检测分析系统,在前面的博文中也有对PCB瑕疵的检测实践文章,只不过是比较早期的技术,基于Darknet框架进行训练的,感兴趣的话可以自行移步阅读。
《助力质量生产,基于目标检测模型MobileNetV2-YOLOv3-Lite实现PCB电路板缺陷检测》
本文主要是想基于yolov5这一经典模型来开发构建PCB瑕疵检测模型,首先看下效果图:
![](https://i-blog.csdnimg.cn/blog_migrate/2c9a1d54b74a1f53fffdd26a32beee31.gif)
接下来看下数据详情:
![](https://i-blog.csdnimg.cn/blog_migrate/827810676b195a4bf47fe617a8aca2da.png)
YOLO格式标注数据如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6070119be0ddd10c10176ccfbfd047ed.png)
实例标注内容如下:
3 0.331081 0.830706 0.016809 0.029634
3 0.449242 0.865385 0.017798 0.034678
3 0.906889 0.7314 0.026038 0.061791
3 0.209459 0.569987 0.013514 0.032787
VOC格式标注数据如下:
![](https://i-blog.csdnimg.cn/blog_migrate/d3a5ed2e971abe9072e5964dc819638a.png)
实例标注内容如下:
<annotation>
<folder>Dataset</folder>
<filename>0ce2dcce-3736-4fe1-a96b-28a01bd6c1d3.jpg</filename>
<path>0ce2dcce-3736-4fe1-a96b-28a01bd6c1d3.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>2868</width>
<height>2316</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>open_circuit</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>1493</xmin>
<ymin>1536</ymin>
<xmax>1528</xmax>
<ymax>1578</ymax>
</bndbox>
</object>
<object>
<name>open_circuit</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>1033</xmin>
<ymin>512</ymin>
<xmax>1079</xmax>
<ymax>556</ymax>
</bndbox>
</object>
<object>
<name>open_circuit</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>1679</xmin>
<ymin>788</ymin>
<xmax>1716</xmax>
<ymax>829</ymax>
</bndbox>
</object>
<object>
<name>open_circuit</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>977</xmin>
<ymin>1332</ymin>
<xmax>1020</xmax>
<ymax>1376</ymax>
</bndbox>
</object>
<object>
<name>open_circuit</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>1381</xmin>
<ymin>1081</ymin>
<xmax>1423</xmax>
<ymax>1115</ymax>
</bndbox>
</object>
</annotation>
这里为了综合对比模型的效果,我同时开发了yolov5n和yolov5s两套检测模型,首先看下最终两套模型的评估效果。
yolov5n:
![](https://i-blog.csdnimg.cn/blog_migrate/db7d631345cf14e9fd45c17b9e5f1741.png)
yolov5s:
![](https://i-blog.csdnimg.cn/blog_migrate/776fb90bd4213cf6ee0e9f4c74cd50b7.png)
从最终结果上面不难看出:yolov5s还是要比yolov5n强出来不少的。
默认执行的都是100次epoch的迭代计算,接下来以yolov5s为例看下结果详情。
混淆矩阵:
![](https://i-blog.csdnimg.cn/blog_migrate/13399c81351d97796dd28bfa6e1086c0.png)
LABEL可视化:
![](https://i-blog.csdnimg.cn/blog_migrate/f3a1d7faa4d59e45d9b8fb916c3e092c.png)
F1值曲线:
![](https://i-blog.csdnimg.cn/blog_migrate/40b39dc1d602e0a2aea7f4c5bd3afb9c.png)
PR曲线:
![](https://i-blog.csdnimg.cn/blog_migrate/53b14ab1652beb508ed11ceb750cdae2.png)
训练过程可视化:
![](https://i-blog.csdnimg.cn/blog_migrate/0cba3b00b1c51ed6d284627d552c6e3b.png)
batch实例:
![](https://i-blog.csdnimg.cn/blog_migrate/d240e8f4cb5fea1ff29628dca7ca0a4d.jpeg)
加载专用界面实现推理可视化,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/c68e8a9fbbcc9635e1b9efc89f5facc4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/16b2999f35fe7b534c9676ea5922c69b.png)