机器学习的核心是“使用算法解析数据,从中学习,然后对世界上的某件事情做出决定或预测”。这意味着,与其显式地编写程序来执行某些任务,不如教计算机如何开发一个算法来完成任务。现在生活中我们所体验到的各大系统的智能推荐,它们可能比你还要了解你自己,这都要归功于机器学习了
机器学习的前提我们要给它投喂大量的数据,让它从中学习得出模型,这里以中文车牌识别项目来讨论。要正确识别车牌,要准备大量的车牌数据,但由于车牌信息的特殊性,涉及到隐私,这时要训练就需要手动准备车牌数据,下面通过Python来实现
一、实现思路
1.初始化车牌所用数据
2.使用random随机组织车牌数据
3.使用pygame生成车牌图片
二、代码实现
首先要了解车牌号码的组成规则,在我国车牌号码共7位,如“冀A2GJDW”,其中第一位为该车所在省的简称,第二位为该车所在地的地市一级代码,规律一般是这样的,A是省会,B是该省第二大城市,C是该省第三大城市,依此类推,后五位由数字或字母随机组成
根据车牌号码规则,初始化车牌所用数据:
number = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
数据准备完成后,通过random模块随机选择数据进行组装
#随机生成车牌组合
def random_platen():
platennumber = []
platennumber.append(random.choice(city)) # 随机选择省的简称
platennumber.append(random.choice(alphabet)) # 随机选择所在地的地市一级代码
for i in range(2, 7):
n = random.choice(number+alphabet) # 后5位随机数字或字母
platennumber.append(n)
str = ''.join(platennumber) # 拼接成字符串
return str
通过自定义的random_platen函数,可以随机得到一个车牌号码,这时可以定义变量来指定生成的样本数量以及最终生成的车牌图片保存路径
size = 1000 # 生成车牌数量
上面准备完后,接下来就可以开始生成图片了,这里生成图片用到了pygame模块,由于我们生成的车牌中包含中文,所以在生成时,注意指定字体(关于字体可以在系统字体中进行选取)。为了便于后期训练时比对结果,这里在生成图片的同时,创建一个文本文件,用于保存所生成的车牌数据
# 生成车牌图片
pygame.image.save(font,os.path.join(platepath,(platennumber+".jpg")).encode('gb2312'))
# 生成车牌号文本
with open(label_filename, "a") as f:
f.writelines(label + ' ')
这时执行Python文件后,就可以看到生成后的车牌数据了
划重点:想要获取完整代码,戳https://github.com/yanwydxf/create-plate-number