该项目利用了一个被标记为“YOLOv8”的目标检测模型,专门针对车牌识别任务进行训练和优化。整个系统通常分为以下几个核心步骤:
-
数据准备:
- 收集包含车牌的大量图片,并精确地标记车牌的位置和文本信息。
- 数据集可能包含各种环境下的车牌,如不同光照条件、角度、遮挡情况等,以确保模型泛化能力。
-
模型训练:
- 使用改进或假设的YOLOv8架构加载预训练权重(如果有),并在此基础上微调模型以适应车牌检测任务。
- 训练过程涉及调整超参数、优化器设置,以及迭代训练至模型在验证集上达到满意的性能。
-
车牌检测:
- 将训练好的YOLOv8模型应用于输入的图像或视频流,以实时或批量模式进行车牌区域检测。
- 通过模型的输出解析出车牌的边界框坐标。
-
车牌字符识别(OCR):
- 对检测到的车牌区域进行裁剪并做进一步预处理(如灰度化、二值化、平滑、倾斜校正等)。
- 使用单独的OCR模型(如LPRNet或其他专门的车牌字符识别网络)识别出车牌上的每一个字符。
-
结果输出:
- 根据字符识别的结果拼接出完整的车牌号码,并显示或记录在系统中。
使用Yolov8预训练模型(YOLOv8n)检测车辆。
使用有执照的车牌检测器来检测车牌。该模型使用该数据集使用 Yolov8 进行训练。
项目设置
- 使用以下命令使用 python=3.8 创建环境
conda create --prefix ./env python==3.8 -y
- 激活环境
conda activate ./env
- 使用以下命令安装项目依赖项
pip install -r requirements.txt
- 使用示例视频文件运行 main.py 以生成test.csv文件
python main.py
- 运行 add_missing_data.py 文件以插入值以匹配缺失的帧和平滑输出。
python add_missing_data.py
- 最后运行 visualize.py 传入插值的 csv 文件,从而获得用于车牌检测的平滑输出。
python visualize.py
效果如图: