初学者好 |如何从头开始创建一个图像识别的AI应用[ctrl:c+v,你就完成了]

  • ? 博客主页:https://blog.csdn.net/weixin_41556756
  • ? 欢迎?点赞?收藏?评论?如有错误请指正!
  • ? 前端&Python领域博主
  • ? 你们的支持是我最大的动力

?前言

在这篇文章中,我将向你展示如何从头开始创建一个图像识别AI应用。 具体来说,我们要创建一个人工智能应用程序,以识别你自己画的手写数字。

首先,让我们看一个样本。 它被称为 “数字识别器”。 你可以在左边的盒子里画出你喜欢的0到9的数字,预测结果会出现在右边。 如果你的字迹像我一样凌乱,它可能无法正确识别数字,但如果你仔细画,它就会像这样识别(笑)。

这一次,我们将制作一个网络应用程序,可以像这样识别你所画的数字。 此外,这篇文章的标题是 “从头开始创建”。 换句话说,我们将使用TensorFlow创建一个AI模型,而不是使用API。 然而,我们将使用的模型是一个简单的神经网络。

你们中的一些人可能会想 "哦,我压根就不知道怎么做… "或 “建立一个环境似乎很难…”, 但不要担心,我们将使用谷歌Colab,所以任何人都可以通过复制和粘贴来创建它。

你可能有这样的误解,认为深度学习和机器学习需要大量的理论和数学知识,但重要的是先做出能用的东西。 如果这个视频让你觉得人工智能很有趣,那么你可以开始详细研究理论和数学。

顺便说一下,我想说的是。

  • 学习如何创建像这样的AI应用的课程
  • 我想知道你想了解哪个课程。

请在评论中告诉我们你想看哪一个! 或者你可以同时进行!

现在我们已经有点偏离主题了,让我们来谈谈细节问题。

?初学者好!如何从头开始创建一个图像识别的AI应用[复制和粘贴,你就完成了]。

以下是你需要采取的三个步骤,以便开始工作。

  • 「第①步:导入库」
  • 「第②步:用TensorFlow创建一个AI模型」
  • 「第③步:用Gradio创建一个图像识别应用程序」

第一步是导入我们将使用的库,然后我们将使用TensorFlow创建一个AI模型。 然后我们将使用TensorFlow创建一个人工智能模型,最后我们将使用Gradio把它变成一个网络应用。 对于其他框架,如Streamlit,你需要做更多的工作来把它变成谷歌Colab应用,但对于Gradio,你可以像现在这样在单元格中运行代码。

使用Gradio,你只需要在单元格中运行代码。 因此,让我们从第一步开始。

?第①步:导入库

我们将使用的Gradio在默认情况下不包括在内。 所以你需要先安装它。 当你安装它时,你需要添加-q来隐藏额外的日志。

$ pip install gradio -q

等待一会儿,直到执行完毕。

--------------------------------------✂️--------------------------------------

一旦Gradio安装完成,我们就可以导入库了。 我们将使用TensorFlow和Gradio,所以我们将import tensorflow as tf,然后我们将import gradio as gr

TensorFlow的最新版本是2系列。 让我们检查一下TensorFlow的版本,tf.__version__。 在使用Google Colab时,默认的版本是2.5.0,但在这种情况下,我想让它明确是2.5.0,所以我也会写%tensorflow_version 2.x

%tensorflow_version 2.x
import tensorflow as tf
import gradio as gr

我还想补充一点。

一旦你完成了这些,按Shift + Enter。 我们还想删除多余的日志,所以我们将使用

tf.get_logger().setLevel('ERROR')

?第②步:用TensorFlow创建一个AI模型

一旦库的安装完成,我们将使用TensorFlow创建一个AI模型。 然而,由于本文的目的是创建一个图像识别应用程序,我们将不使用复杂的模型。 让我们保持像煮煎蛋一样简单的模式。

为了解释我们将使用什么样的模型,我们将使用一个只有一个中间层的3层神经网络。

神经网络是 “一种模仿人脑结构的机器学习算法”。 图像是这样的。

在神经网络中,每个圆圈…或者更准确地说,在圆圈之间,都有自己的参数,这些参数可以被优化以正确判断图像。 由于本文的目的是体验神经网络的概况,我们将暂时不对神经网络进行解释。

在该图所示的神经网络模型中,圆圈的数量被设定为

  • 「输入层:784个核心」
  • 「中间层:128」
  • 「输出层:10」

如果你想做一些修改,你可以通过简单地调整下面描述的一些实现方式来实现。 由于我们不打算做任何重大改变,让我们几乎逐字逐句地复制和粘贴TensorFlow教程的内容。 由于我们已经安装了这个库,让我们开始加载数据。

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, X_test = x_train / 255.0, x_test / 255.0
import matplotlib.pyplot as plt
fig, ax = plt.subplots(nrows=2, ncols=5, figsize=(10, 10), tight_layout=True)

n = 0
for i in range(2):
  for j in range(5):
      ax[i][j].imshow(X_train[n], cmap=plt.cm.binary)
      n += 1

下一步是创建模型。 为了方便起见,我们就把写着辍学的那部分去掉吧。

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128,activation='relu'),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.summary()

现在我们需要训练这个模型,我们可以通过设置model.compile()来实现。

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

最后,我们来训练模型。

model.fit(x_train, y_train, epochs=10)

现在模型已经被训练好了,让我们来检查一下它的准确性。

_, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(test_acc)

「这大约是使用测试数据的97%。」

?第③步:用Gradio创建一个图像识别应用程序

现在我们将使用我们创建的模型和Gradio把它变成一个图像识别应用程序。

def recognize_digit(img):
    img = img.reshape(1, 28, 28)
    prediction = model.predict(img).tolist()[0]
    return {str(i): prediction[i] for i in range(10)}

label = gr.outputs.Label(num_top_classes=4)
interface = gr.Interface(
    fn=recognize_digit, 
    inputs='sketchpad', 
    outputs=label, 
    live=True,
    title='Digit Recognizer'
)

我认为问题的关键在于gr.Interface()中使用的fn=classify_digit

作为参数传递的函数classify_digit()预测你所画的数字的图像对应于哪个标签。

当你使用Gradio时,不仅用于图像识别,你可以用参数fn传递一个用于预测的函数。

一旦你写到这一步,你就可以在最后推出。

interface.launch(share=True)

然后你应该看到模型根据你所画的数字预测的标签!

现在你已经从头开始创建了一个图像识别AI应用^^。

?结尾&福利

》》》》》》?Python学习路线汇总《《《《《《

》》》》》》?Python必备开发工具《《《《《《

》》》》》》?精品Python学习书籍《《《《《《

》》》》》》?Python学习视频合集《《《《《《

》》》》》》?一百道Python练习题《《《《《《

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>