初学者好 |如何从头开始创建一个图像识别的AI应用[ctrl:c+v,你就完成了]
Posted 前端仙人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学者好 |如何从头开始创建一个图像识别的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练习题《《《《《《
以上是关于初学者好 |如何从头开始创建一个图像识别的AI应用[ctrl:c+v,你就完成了]的主要内容,如果未能解决你的问题,请参考以下文章
视频国家工程实验室正式发布针对图像识别的FAT-AI应用竞赛榜单