0
雷锋网按:本文为AI研习社编译的技术博客,原标题 Tutorial:Alphabet Recognition In Real Time — A Deep Learning and OpenCV Applica,作者为 Akshay Chandra Lagandula 。
翻译 | 赵若伽 李欣 校对 | 汪其香 整理 | MY
这是一个关于如何构建深度学习应用程序的教程,该应用程序可以实时识别由感兴趣的对象(在这个案例中为瓶盖)写出的字母。
项目描述
深度学习技术的能力的一个主流的证明就是在图像数据里的目标识别。
这个深度学习 python 的应用可以从网络摄像头数据中实时的识别字母,使用者被允许使用一个感兴趣的对象(在这个案例中是一个水瓶盖)在屏幕上写出字母。
你可以点击这里访问整个项目的源码。
工作实例
编码要求
代码是用 3.6 版的 Python,同时结合了 OpenCV 和 Keras 库来编写成的。
关注这篇 medium 博客在 Python 3 中安装 OpenCV 和 Keras。
数据描述
用于机器学习和深度学习的「扩展 Hello World」目标识别是用于手写字母识别的 EMNIST 数据集,他是 MNIST 数据集 (「Hello World」的目标识别) 的一个扩展版本。
就像上面显示的一样,字母 『e』 被储存在一个 28 x 28 的 numpy 数组。
编码说明
步骤 1:训练一个多层感知模型
1.1 加载数据
我们使用 Python 的 mnist 库来加载数据:
我们已经准备好要给到模型的数据了。将数据分为训练和测试集、标准化图片以及其他基本的情况。
1.2 定义模型
在 Keras,模型被定义为层的序列。我们首先初始化一个 『序列模型』,然后用各自的神经元去添加各自的层, 接下来的代码做了同样的事情。
这个模型如我们希望的那样使用 28 x 28 像素(我们展平图片然后将每个像素值放入一个一维向量)作为输入。模型的输出必须由某个字母决定,所以我们设置输出层有 26 个神经元(决定是由概率做出)。
1.3 编译模型
现在已经定义好了模型,我们可以编译它了。使用高效的数字库例如 Theano 或 TensorFlow 来编译模型。
在这里我们可以指定一些需要用来训练网络的特性。通过训练,我们尝试找到可以在输出时做出决定的最好的权重组合。我们必须指定用来评估权重组合的损失函数,用来为网络寻找不同的权重组合的优化器和任何我们在训练中想收集和报告的备选的矩阵。
1.4 Fit Model
在这里,我们通过模型检查点来训练模型,这个检查点会帮助我们保存最好的模型(根据我们在上一步定义的矩阵来判断是否是最好)。
1.5 评估模型
在 EMNIST 数据集上模型的测试准确度是 91.1%.
1.6 把他们结合起来
将所有步骤结合起来,我们得到了一个通过 EMNIST 数据训练出来的合适的多层感知器模型的所有代码。
步骤 2:训练一个卷积神经网络模型
2.1 和 2.2 — 加载数据及定义模型
这两步和我们建立多层感知器模型的步骤是完全相同的。
2.3 定义模型
由于部分内容超出了本教程所讲范围,我事先定义了一个 CNN 框架来解决手头的问题。想了解更多有关 CNN 的信息,请访问该教程。
2.3 编译模型
与 MLP 模型不同,这次我将使用 ADADELTA 优化器。
2.4 拟合模型
想要了解模型参数 batch_size 和 epochs 是如何影响模型性能的,可访问这里。
2.5 评估模型
此模型在数据集 EMNIST 上的测试准确率为 93.1%。
2.6 小结
综上,我们获得了用来构建良好 CNN 模型所需的完整代码,此模型是在 EMNIST 数据集上训练的。
步骤 3:初始化
......
想要继续阅读,请移步至我们的AI研习社社区:https://club.leiphone.com/page/TextTranslation/616
更多精彩内容尽在 AI 研习社。
不同领域包括计算机视觉,语音语义,区块链,自动驾驶,数据挖掘,智能控制,编程语言等每日更新。
手机端可以扫描二维码访问:
雷锋网雷锋网
雷锋网雷锋网
雷峰网原创文章,未经授权禁止转载。详情见转载须知。