项目研究方向 工业领域/缺陷检测
下载链接:项目地址
取得的主要成绩:
本项目分别基于 YOLOv5s 模型、YOLOv5m 模型和 YOLOv5l 模型三个预训练模型分别训练出了3个规模的汽车座椅缺陷检测模型。小、中、大三个模型训练耗时为 3.138h、3.332h、4.313h,得到的权值文件大小为 13.6MB、40.1MB、88.4MB。训练所得的小、中、大3个模型准确率褶皱检测准确率分别为 48%、52%、43%。使用 YOLOv5m 训练得出的模型准确率最高。3个模型中最优的模型mAP达到了0.474。使用YOLOv5s训练得到的小型模型识别时间在0.407s-0.453s之间,使用YOLOv5m训练得到的中型模型识别时间在1.078s-1.250s之间,使用YOLOv5l训练得到的大型模型识别时间在2.079s-2.360s之间。训练得出的模型基本可以准确迅速地检测出测试集样本表面的大部分褶皱缺陷。
㈡项目工作步骤及具体实现过程阐述
本实践项目主要包含如下几方面的具体工作,具体工作内容如下:
Step1:环境搭建
安装Windows版64位Anaconda3,在命令行中输入指令:conda create -n yolo5 python==3.8 来创建一个名为yolo5的虚拟环境,之后输入conda activate yolo5激活该虚拟环境,之后在PyCharm软件中设置相应虚拟环境Python解释器的路径即可。
Step2:框架及附加包安装
- 由于conda自带软件源下载速度过慢且经常不稳定,首先换成了清华的软件源,发现在校园网环境下仍然不够稳定。经过多次查找并测试后,最终北京外国语大学和中国科学技术大学的软件源速度最快,下载最稳定,将源换为这两个。配置.conda.rc文件如下:
show_channel_urls: true
channels:
- https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
- https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
- https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
- YOLOv5在CPU和GPU的情况下均可使用,但是本小组限于设备条件,无法租赁服务器或高性能显卡,故安装CPU版本的Pytorch。输入如下指令安装Pytorch 1.8.0 CPU版本。
conda install pytorch1.8.0 torchvision0.9.0 torchaudio==0.8.0 cpuonly
3.输入指令:
pip install pycocotools-windows
pip install -r requirements.txt
pip install pyqt5
pip install labelme
安装pycocotools,pyqt5,labelme。
Step3:数据集建立及数据标注
-
本数据集的结构安排如下图所示,train和val下分别放对应的训练集和验证集的图片及标签。
-
本项目使用labelimg软件进行数据标注。标签格式使用yolo格式存储,标注类为一个褶皱类fold,标注过程如下:
Step4:模型训练与模型验证
-
修改数据集配置文件mask_data.yaml,模型配置文件mask_yolov5s.yaml 。如下图所示:
-
输入指令 python train.py --data mask_data.yaml --cfg mask_yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 4 --device cpu ,使用cpu基于预训练模型yolov5s.pt,轮次设为100,每4个一批开始训练模型(剩下的两个yolov5m,yolov5l步骤相同),训练过程如下图所示:
Step5:模型评估
-
根据训练好的模型目录下生成的各类指标图,选出3个模型中最优的一个,即使用yolov5m训练出的模型作为最终汽车座椅缺陷检测的模型。每个模型得到的指标图如下图所示
-
查看使用yolov5m训练出的模型目录下生成的验证集验证结果,如下图所示,左边为验证集预先人工标记的情况,右边为模型检测出的褶皱情况。可以看出除了验证集中的val_7.jpg没有被正确检测出褶皱,其余均正常被检测出褶皱且检测结果与人为标记基本一致:
Step6:模型测试
在终端输入 python detect.py --weights runs/train/exp8/weights/best.pt --source data/chairimages/test_1.jpg
即可使用位于runs/train/exp8/weights/下训练出的模型对data/chairimages/test_1.jpg的测试图片进行缺陷检测。共设十组检测图片,以其中几组图片为例,检测过程及结果如下所示:
㈢项目所取得的成果或实验结果展示以及小组工作特色和优势说明
- 成果展示与说明
(1) 成果一:分别基于 YOLOv5s 、YOLOv5m 和 YOLOv5l 三个预训练模型分别训练出了3个规模的汽车座椅缺陷检测模型。小、中、大三个模型训练耗时为 3.138h、3.332h、4.313h,得到的权值文件大小为 13.6MB、40.1MB、88.4MB。训练得出的3个模型如下图所示:
图3.1 使用YOLOv5s 、YOLOv5m 和 YOLOv5l 三个预训练模型训练出的模型
(2) 成果二:训练所得的小、中、大3个模型准确率褶皱检测准确率分别为 48%、52%、43%。使用 YOLOv5m 训练得出的模型准确率最高。3个模型中最优的模型mAP达到了0.474。
图3.2 训练出的三个模型的混淆矩阵
图3.3 训练出的最优的模型的F1曲线
(3) 成果三:使用YOLOv5s训练得到的小型模型识别时间在0.407s-0.453s之间,使用YOLOv5m训练得到的中型模型识别时间在1.078s-1.250s之间,使用YOLOv5l训练得到的大型模型识别时间在2.079s-2.360s之间。训练得出的模型基本可以准确迅速地检测出测试集样本表面的大部分褶皱缺陷。
(2) 本项目使用不同规模的3个预训练模型,在同一数据集下训练出了3个不同大小的模型。用同一测试集对三个模型进行测试,对比分析结果异同,在对比分析后选出三者中最优的一个作为最终的模型,相比训练出一个单一的模型,在检测精确度等方面更有保障。
(3) 本项目在训练模型时训练轮次设为100轮,每4个一批,既能在一定程度上弥补设备性能不足的条件,又不至于让训练出的模型检测精确度过低。在设备性能与检测精确度之间做到了相对的平衡。
(4) 本项目操作使用简单,只需要在终端输入一行命令,例如当使用位于runs/train/exp7/weights/下的模型best.pt来检测data/chairimages/下的图片test_1.jpg时,只需要输入以下命令:
python detect.py --weights runs/train/exp7/weights/best.pt --source data/chairimages/test_1.jpg
即可完成对目标图片褶皱缺陷的检测。