车牌识别(end-to-end-for-chinese-plate-recognition)项目搭建基于Mxnet(Python 3.5)
最近看到geihub上有个车牌识别的项目,感觉很有意思,从上面fork了一下弄到本地自己跑了下。在安装过程中遇到了一些问题,记录如下。
项目github连接:https://github.com/szad670401/end-to-end-for-chinese-plate-recognition ,本机环境Win8 64bit
该项目是基于Python做的,所以首先安装python,本着用最新版本的原则,选择了Python3.5.2(开始用的32位版本,中间不能加载libmxnet.dll,后改为用64bit)
1.Python下载连接:https://www.python.org/downloads/release/python-352/ 依据操作系统进行选择,我选择的是如下版本
2.安装Python,并配置好环境变量
3.安装vs2015,由于mxnet中使用了vs2015的库,所以需要提前安装vs2015,不然后报"error: Setup script exited with error: Unable to find vcvarsall.bat” 下载地址:http://103.254.64.34:9999/download.microsoft.com/download/5/f/7/5f7acaeb-8363-451f-9425-68a90f98b238/visualcppbuildtools_full.exe。
4.下载Mxnet ,地址:https://github.com/dmlc/mxnet/releases 我下载的是20160531_win10_x64_cpu.7z
5.安装Mxnet ,解压上面的压缩包后进入mxnet目录,执行setupenv.cmd 然后进入该目录下的python目录,执行python setup.py install 命令进行安装
6.下载opencv,下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv 我选择的是:opencv_python-3.1.0+contrib_opencl-cp35-cp35m-win_amd64.whl
7.安装opencv ,在python安装目录执行 pip install opencv_python-3.1.0+contrib_opencl-cp35-cp35m-win_amd64.whl
8.下载Pillow,由于官方目前PIL没有3.5版本,故采用非官方的Pillow替代,下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow 版本:Pillow-3.3.1-cp34-cp34m-win_amd64.whl
9.安装Pillow,在python安装目录执行 pip install Pillow-3.3.1-cp34-cp34m-win_amd64.whl
到此安装过程完毕,用IDEA打开执行,但是报了如下错误,并附上解决办法;
错误1.
error: (-215) ssize.area() > 0 in function cv::resize 传入文件为空 错误原因:genplate.py的generate函数中
L163 len(text) == 9改为len(text) == 7
错误2
L164 text.decode(encoding="utf-8")改为text.encode('utf-8').decode(encoding="utf-8") (python3.5特性)
错误3.
找不到xrange
原因:使用3.5内置的range替代2.7的xrange 修改方法:xrange--range
range内除法操作如range(self.count / self.batch_size)需改为 range((int)(self.count / self.batch_size))
不然有 “'float' object cannot be interpreted as an integer”错误
修改后的代码github连接:https://github.com/ibyte2011/end-to-end-for-chinese-plate-recognition
安装好后开始训练;一个2.5Ghz的 CPU
实验一:训练了4个小时,训练数据3w准确率约为 60%

开始测试:

由于训练时间过短,检测全部错误。等花一天训练后再试。
实验二:
训练数据12.5W,时间17hours,准确率70%

测试:

从测试结果看这次好于实验一,有一个字母识别错误,不过在多次测试过程中,清楚字体如下图情况下识别完全正确:

在字体模糊或者变形严重情况下识别会出现错误比较大,7个只对了1个。

故加大实验数据进行实验三。
实验三:调整了准确率计算函数参数,将train.py L135行
pred.shape[0] / 4 改为 pred.shape[0] / 7 训练12.5 hours 准确率为94%

测试:

模糊测试:


从测试结果看明显好于实验二。
简单记录,希望对此项目感兴趣的同学有帮助。
车牌识别(end-to-end-for-chinese-plate-recognition)项目搭建基于Mxnet(Python 3.5)的更多相关文章
- 【深度学习系列】用PaddlePaddle进行车牌识别(一)
小伙伴们,终于到了实战部分了!今天给大家带来的项目是用PaddlePaddle进行车牌识别.车牌识别其实属于比较常见的图像识别的项目了,目前也属于比较成熟的应用,大多数老牌厂家能做到准确率99%+.传 ...
- 车牌识别1:License Plate Detection and Recognition in Unconstrained Scenarios阅读笔记
一.WHAT 论文下载地址:License Plate Detection and Recognition in Unconstrained Scenarios [pdf] github 的项目地址: ...
- EasyPR--一个开源的中文车牌识别系统
我正在做一个开源的中文车牌识别系统,Git地址为:https://github.com/liuruoze/EasyPR. 我给它取的名字为EasyPR,也就是Easy to do Plate Reco ...
- 车牌识别LPR(一)-- 研究背景
在年尾用了几天的时间将2014年的所有工作都总结了一遍,将之前的文档综合了下. 以下是LPR系统,车牌识别的一些总结资料. 第一篇:LPR研究背景 汽车的出现改变了以往出行徒步和以马代步的时代,极大地 ...
- 《Mastering Opencv ...读书笔记系列》车牌识别(II)
http://blog.csdn.net/jinshengtao/article/details/17954427 <Mastering Opencv ...读书笔记系列>车牌识别(I ...
- 《Mastering Opencv ...读书笔记系列》车牌识别(I)
http://blog.csdn.net/jinshengtao/article/details/17883075/ <Mastering Opencv ...读书笔记系列>车牌识别(I ...
- 基于opencv的车牌识别系统
前言 学习了很长一段时间了,需要沉淀下,而最好的办法就是做一个东西来应用学习的东西,同时也是一个学习的过程. 概述 OpenCV的全称是:Open Source Computer Vision ...
- 车牌识别OCR—易泊时代智慧城市解决方案模块
牌识别(License Plate Recognition,LPR) 是视频图像识别技术在智能交通领域中的一个模块.车牌识别运用OCR技术,将视频流或图片中的汽车牌照从复杂的应用场景中提取并识别出来, ...
- 【深度学习】用PaddlePaddle进行车牌识别(二)
上节我们讲了第一部分,如何用生成简易的车牌,这节课中我们会用PaddlePaddle来识别生成的车牌. 数据读取 在上一节生成车牌时,我们可以分别生成训练数据和测试数据,方法如下(完整代码在这里): ...
随机推荐
- Git教程(3)git工作区与文件状态及简单示例
基础 目录: working driectory 工作目录,就是我们的工作目录,其中包括未跟踪文件及暂存区和仓库目录. staging area 暂存区,不对应一个具体目录,其实只是git di ...
- jquery.validate验证text,checkbox,radio,selected
index.cshtml <form id="formLogin" method="post"> <div> <label for ...
- 5.23@Comfiguration的解释
@Configuration:代表这个类是一个配置类. @ComponentScan:用来扫描指定包下面的注解类. @Import:用来导入其他的@Configuration配置类. @ImportR ...
- Vue2-Editor 使用
Vue-Editor底层采取的是quill.js,而quill.js采用的是html5的新属性classList,所以版本低于ie10会报错“无法获取未定义或 null 引用的属性‘confirm’” ...
- Centos 自动删除日志文件的Shell代码
#!/bin/bash # #判断文件夹内文件的大小,如果大于一定的数值,那么删除 # echo '判断文件夹内文件的大小,如果大于一定的数值,并且文件名称包含数字(年月日)的删除,那么删除' pat ...
- halcon 模板匹配 -- 转化 vector_angle_to_rigid
********************************模板匹配 ********************create_shape_model创建模板,这个函数有许多参数,其中金字塔的级数由N ...
- Deutsch lernen (15)
1. unterscheiden - unterschied - unterschieden 区别,区分:(能够)分清 Die beiden Begriffe sind nur schwer ...
- ASP.NET 页面验证cookie
using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary ...
- php多进程防止出现僵尸进程
对于用PHP进行多进程并发编程,不可避免要遇到僵尸进程的问题. 僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程(zombie)进程.任何进程在退出前(使用exit退出) ...
- 一个休假申请页对input标签各种属性的用法案例(手机端)
<%@ page language="java" import="java.util.*" contentType="text/html; ch ...