车牌识别(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来识别生成的车牌. 数据读取 在上一节生成车牌时,我们可以分别生成训练数据和测试数据,方法如下(完整代码在这里): ...
随机推荐
- Java算法——求出两个字符串的最长公共字符串
问题:有两个字符串str1和str2,求出两个字符串中最长公共字符串. 例如:“acbbsdef”和"abbsced"的最长公共字符串是“bbs” 算法思路: 1.把两个字符串分别 ...
- HTML简单入门
- Java攻城狮学习路线 - 基本结构 标准文档:www.w3.org <!DOCTYPE html> <html> <head> <meta charse ...
- GitHub上fork别人打代码后如何保持和原作者同步的更新
1.进入你的GitHub发起Pull request 2.选择compare across forks 3.反向操作.base fork改为自己的,head fork改为原作者的 4.点击 cre ...
- 除了Google,你还应该试试的8个搜索引擎
在信息高速公路上,我们通过浏览器在web的世界里尽情驰骋.想要成为一个好的驾驶员,掌握方向的能力很重要.这很像是Google在我们生活中扮演的角色,通过它可以找到一个又一个的信息宝藏.Google ...
- ★Java面向对象(一)——————————基本概念
package boll; /* 用Java语言对现实生活中的事物进行描述. 通过类的形式来体现, 怎么描述呢? 对于事物的描述通常只有两个方面,一个是属性,一个是行为. 只要明确该事物的行为和属性并 ...
- uni-app判断各大平台的语法
uni-app是一款强大的前端框架,它除了pc端其他都可以实现,打包原生app.手机h5页面,微信小程序, 但是有一个问题就是本生的app和微信小程序是有一定的区别的,因为app有标题栏,返回键,而微 ...
- day34-2 类和对象(重点)
目录 类 定义类和对象 __dict__ 和__class__ 创建对象时的底层运作 定义对象独有的特征 init __slots__(了解) 给对象添加属性时的底层运作 类 分类/类别 上述的代码( ...
- 【转载】JSP 中EL表达式用法详解
EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${ ...
- 【转载】intellij idea如何将web项目打成war包
1.点击[File]->[Project Structure]菜单(或使用Shift+Ctrl+Alt+S快捷键),打开[Project Structure]窗口.如下图: 2.在[Projec ...
- Day 20 python基础总复习
一.计算机基础 1.1 计算机基础之编程 编程语言是人与计算机之间交流的介质 编程就是写一堆文件 编程为了奴隶计算机,解放劳动力 1.2 计算机组成原理 CPU 控制器:控制硬件 运算器:逻辑运算和算 ...