《我的PaddlePaddle学习之路》笔记七——车牌端到端的识别
车牌识别的应用场景有很多,比如在停车场。通过车牌识别登记入库和出库的车辆的情况,并计算该车停留时间,然后折算费用。还可以在公路上识别来往的车辆,方便交警的检查等等。接下来我们就是使用 PaddlePaddle 来做一个车牌识别,我们直接通过段端到端识别,不用分割即可完成识别。在阅读这篇文章时,
车牌识别的应用场景有很多,比如在停车场。通过车牌识别登记入库和出库的车辆的情况,并计算该车停留时间,然后折算费用。还可以在公路上识别来往的车辆,方便交警的检查等等。接下来我们就是使用 PaddlePaddle 来做一个车牌识别,我们直接通过段端到端识别,不用分割即可完成识别。在阅读这篇文章时,
在上一篇文章中介绍了验证码的识别,但是使用的传统的验证码分割,然后通过图像分类的方法来实现验证码的识别的,这中方法比较繁琐,工作量比较多。在本篇文章会介绍验证码端到端的识别,直接一步到位,不用图像分割那么麻烦了。好吧,现在开始吧!
本次使用的验证码是方正系统,现在很多的大学的教务系统用的就是这个方正系统,刚好既然那么普遍,我们就用它练一练手。经过观察大量的验证码发现,该系统的验证码只有小写的字母和数字,这样分类就少了很多了。该系统的验证码如下:
如果我们要训练自己的数据集的话,就需要先建立图像列表文件,下面的代码是 Myreader.py
读取图像数据集的一部分,从这些代码中可以看出,图像列表中,图像的路径和标签是以 \t
来分割的,所以我们在生成这个列表的时候,使用 \t
就可以了。
本次项目中使用的是一个 32*32 的彩色图像的数据集 CIFAR-10,CIFAR-10 数据集包含 10 个类的 60000 个 32x32 彩色图像,每个类有 6000 个图像。有 50000 个训练图像和 10000 个测试图像。数据集分为五个训练 batch 和一个测试 batch,每个 batch 有 10000 个图像。测试 batch 包含来自每个类 1000 个随机选择的图像。训练 batch 按照随机顺序包含剩余的图像,但是一些训练 batch 可能包含比另一个更多的图像。在他们之间,训练的 batch 包含每个类别正好 5000 张图片。
如题目所示,本次训练使用到的是 MNIST 数据库的手写数字,这个数据集包含 60,000 个示例的训练集以及 10,000 个示例的测试集。图片是 28x28 的像素矩阵,标签则对应着 0~9 的 10 个数字。每张图片都经过了大小归一化和居中处理。该数据集的图片是一个黑白的单通道图片,其中图片如下:
PaddlePaddle 目前还不支持 Windows,如果读者直接在 Windows 上安装 PaddlePaddlePaddle 的话,就会提示没有找到该安装包。如果读者一定要在 Windows 上工作的话,笔者提供两个建议:一、在 Windows 系统上使用 Docker 容器,在 Docker 容器上安装带有 PaddlePaddle 的镜像;二、在 Windows 系统上安装虚拟机,再在虚拟机上安装 Ubuntu。
随机变量(random variable)是可以随机地取不同值的变量。随机变量是可以离散的或者连续的,离散随机变量拥有有限或可数无限多的状态,连续随机变量伴随这实数值的。
标量(scalar):一个标量就是一个单独的数,它不同与线性代数中研究其他大部分对象(通常是多个数的数组)。我们用斜体表示标量。标量通常被赋予小写的变量名称,比如:
OKhttp3 是一个非常强大的 Android 网络框架,它是由 Square 公司开发并开源的,很大 Android 开发者都会使用到,所以我也要来学学。
有很多的应用都会有保存密码和账号的功能,比如 QQ。接下来就讲讲使用 SharedPreferences 来保存密码和账号,也许有些人会考虑的数据库,但是我个人认为对于保存简单的数据,使用的数据库就大材小用了,SharedPreferences 比较轻量级
读取短信和联系人经常会用到,要了解的是这是内容提供者(contentProvider)的知识点,大家都知道数据库是在 data-->data 对应的包目录下,其他应用是不可以访问到的,如果有些数据要提供给其他的应用,比如通信录,其他应用想获取它的数据怎么办呢,这时内容提供者就出现了,预先写好了一些操作数据库的方法,因为方法是开发这个应用的开发者提供的,所以保证了数据库的安全操作,又能共享数据。
像音乐这种耗时的和适合后台操作的应当放在 Service 中进行操作,而不是放在 Activity,下面就介绍使用 Service 的音乐播放器
这是一个常见的画板功能,常用于画画和手写输入等等,今天就教大家实现这个小功能,这个功能还是比较简单的,只有一个 Java 文件
在原生的 ImageView 中,没有一个方法是可以直接显示网络的图片的,当我们经常需要显示网络图片时,每次都有一大堆的操作,这会很麻烦,今天就教大家在 ImageView 上轻松显示网络图片。
要开机启动,首先肯定是想到广播,广播接收器接收到开机发出的广播,就执行 onReceive(),在 onReceive()可以写一些我们需要做的操作
这是一个使用 Fragment 做的一个底部导航栏的小 demo
有各种各样的通知,不同情况使用不同的通知方式,使用户在体验上更佳,下面就讲一下四种常用的通知方式 Notification、Dialog、Toast、Snackbar
View 动画其实就是使 ImageView 上的图片在隐藏、旋转、缩放、平移通过动画的过程显示。