python yolov8 车牌识别
文件处:夸克网盘分享
1. 硬件环境
处理器(CPU):AMD Ryzen 9 7940HX
内存(RAM):16GB
显卡(GPU):NVIDIA GeForce RTX 4060
存储:SSD 512GB
2. 软件环境
Python 版本:3.8
主要依赖库:
ultralytics(YOLOv8)
paddleocr
opencv-python
numpy
Pillow
tkinter
深度学习框架:PyTorch(YOLOv8)、PaddlePaddle(PaddleOCR)
3.YOLO模型训练
images/:存放所有图片数据
train/:训练集图片
val/:验证集图片
test/:测试集图片
labels/:存放所有标签(标注)数据
train/:训练集标签
val/:验证集标签
test/:测试集标签
data.yaml:数据集配置文件,通常包含类别、路径等信息

图2数据集结构图
YOLOv8在训练时主要包含三个方面的损失:定位损失(box_loss)、分类损失(cls_loss)和动态特征损失(dfl_loss),在训练结束后,可以在runs/目录下找到训练过程及结果文件,如下所示:

图3训练结果图
定位损失box_loss:预测框与标定框之间的误差(GIoU),越小定位得越准;
分类损失cls_loss:计算锚框与对应的标定分类是否正确,越小分类得越准;
动态特征损失(dfl_loss):DFLLoss是一种用于回归预测框与目标框之间距离的损失函数。在计算损失时,目标框需要缩放到特征图尺度,即除以相应的stride,并与预测的边界框计算Ciou Loss,同时与预测的anchors中心点到各边的距离计算回归DFLLoss。这个过程是YOLOv8训练流程中的一部分,通过计算DFLLoss可以更准确地调整预测框的位置,提高目标检测的准确性。

图4动态特征定损图
mAP表示Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示判定iou为正负样本的阈值。mAP@.5:表示阈值大于0.5的平均mAP,可以看到本文模型目标检测的mAP@0.5平均值为0.994

图5 PR曲线图
4. 运行效率指标
单张图片处理时间(ms/张)
视频帧处理速度(FPS,帧/秒)
程序运行的界面,包括选择文件,识别和清除结果的按钮,中间的框为选择文件的预览,下方左侧的是信息输出框,右侧的是提示框。

图6 运行界面图
点击选择文件的按钮,跳出窗口来选择要识别的文件.

图7 文件选择
文件打开后,在界面显示,如下。

图8 文件打开预览图
通过模型识别显示车牌的位置在图片中的位置(左上角和右下角的坐标)
内容是通过PaddleOCR识别的车牌,以及置信度、颜色和截图保存的路径。

图9 运行结果图
点击清除按钮,下方的显示框中的信息会被清除。

图10 结果清理图
当导入的文件是视频MP4格式的时候,程序会通过每一帧来识别汽车的车牌,出现过的车牌会罗列到下方,左边为车牌截图,右边是车牌的识别结果

图11 视频识别结果图

图12 视频识别最终结果图
更多推荐
所有评论(0)