项目大概分为两部分,首先使用yolov5进行目标检测并截图;然后对图片一系列的处理后使用Tesseract-OCR进行字符识别
基于yolov5和Tesseract-OCR车牌识别
yolov5检测部分
环境搭建
1.首先在官网下载源码并解压。
2.下载anaconda并创建虚拟环境:
官网下载linux版本,下载安装包后进行安装(运行.sh的shell文件),注意安装过程中添加环境变量到path要yes。然后创建虚拟环境conda create -n abc python=3.7
(这里abc是环境名称,可以自己取);进入环境:conda activate abc
。
3.在yolov5目录下打开终端,输入命令:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
自动安装yolov5所需环境,一般来说会遇到一些错误,兵来将挡水来土掩,报什么错就解决什么问题(有问题也可以评论或私信)。
数据处理
1.数据集标定,要是有自己的数据集可以自己标定,这里我已经整理了一部分质量较高的数据集且标定好了,可以直接使用。
2.创建数据的配置文件,在data目录下创建license.yaml。可以参考我的yaml文件的内容格式:
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: python train.py --data coco128.yaml
# parent
# ├── yolov5
# └── datasets
# └── coco128 ← downloads here
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: # dataset root dir 存放数据集的目录
train: # train images (relative to 'path') 128 images 数据集目录下的图片文件夹
val: # val images (relative to 'path') 128 images 一般和train一致
test: # test images (optional)
# Classes
nc: 3 # number of classes 这里我是只有3个类
names: ['blue','green','yellow'] # class names
模型训练
yolov5目录下开启终端并进入虚拟环境,输入命令:
python train.py --weights yolov5m.pt --data data/license.yaml
进行模型训练,默认训练300轮,一般来说够了。如果自己没有服务器配置不太支持的话这里也可以使用我训练好的模型,里面有imgsz分别为640和800的两个模型,都是用了八百多张的数据集且都训练了300轮,效果不错检测如下。
车牌检测并截取
训练完成后,一般模型存放在runs/train/exp目录下,复制里面best.pt的路径,这里假设为runs/train/exp/weights/best.pt,测试图片的路径假设为data/test/images。然后运行命令:
python detect.py --weights runs/train/exp/weights/best.pt --source data/test/images --save-crop
就会对测试图片进行车牌的目标检测并截取车牌图片。
测试结果得分基本上在0.95以上,训练效果还是很不错的,截图放在crops文件夹中。
Tesseract-OCR识别部分
环境搭建
以下搭建环境所需下载的依赖和安装包可以通过以下命令下载(官网下载速度缓慢且较大),也可以使用这边我已经下载好了的比较快。
最好是创建一个专门Tesseract-OCR的目录,在目录下进行以下操作。
1.下载Tesseract-OCR,输入命令:
wget https://github.com/tesseract-<