介绍
如果你曾经想构建一个用于文本识别的图像分类器,我假设你可能已经从 TensorFlow 的官方示例中实现了经典的手写数字识别应用程序 。
该程序通常被称为计算机视觉的“Hello World”,它是 ML 初学者构建分类器应用程序的一个很好的起点。构建一个识别任何字符的自定义分类器不是很好吗?在这篇文章中,我们将构建一个印地语字符识别应用程序,但你可以随意选择你自己选择的数据集。
我们将构建一个能够识别印地语字符的机器学习模型,而且也可以从头开始。我们不仅会构建机器学习模型,还会将其部署在 Android 移动应用程序上。因此,本文将作为端到端教程,涵盖构建和部署 ML 应用程序所需的几乎所有内容。
端到端流
数据准备
我们需要大量数据来训练应该产生良好结果的机器学习模型。你一定听说过 MNIST 数据集,对吧?让我们回忆一下。
MNIST 数字数据库
来源:https://www.researchgate.net/figure/Samples-from-the-MNIST-digit-recognition-data-set-Here-a-black-pixel-corresponds-to-an_fig1_200744481
MNIST 代表“Modified National Institute of Standards and Technology”,是一个流行的手写数字识别数据库,包含超过 60,000 张数字 0-9 的图像。现在,了解 MNIST 数据库的外观和格式很重要,因为我们将合成一个“类似于 MNIST”的印地语字符数据集。
MNIST 数据集中的每个数字都是一个 28 x 28 的二进制图像,颜色为白色,背景为黑色。
MNIST 数字示例
好的,现在我们有了想法,让我们为印地语字符合成我们的数据集。我已经将数据集保存在我的 GitHub 存储库中。随意克隆存储库并下载数据集:https://github.com/NSTiwari/Hindi-Character-Recognition-on-Android-using-TensorFlow-Lite
该数据集包含所有印地语元音、辅音和数字。
这些图像必须转换为 NumPy 数组 (.npz),以供模型训练使用。下面的脚本将帮助你进行转换。
导入依赖
import tensorflow as tf
from tensorflow import keras
from PIL import Image
import os
import numpy as np
import matplotlib.pyplot as plt
import random