首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TensorFlow与Keras:Python轻松玩转图像识别

谈到图像识别,大多数人第一反应可能是“高深”“复杂”,但实际上,借助Python的「TensorFlow」「Keras」库,图像识别已经变得触手可及。今天我们就来拆解一下,如何用Python完成一个基础的图像识别任务。文章中会介绍TensorFlow与Keras的基础概念、操作流程,以及实用技巧。

「什么是TensorFlow和Keras?」

简单来说,「TensorFlow」是一个强大的深度学习框架,而「Keras」是它的高级API,用来快速构建和训练神经网络。如果把TensorFlow比作一辆豪华跑车,那么Keras就像是这辆车的智能驾驶系统,它让你专注于方向盘,而不用操心复杂的机械操作。

「TensorFlow与Keras的关系」:

1、TensorFlow是底层,负责高效运算;

2、Keras是上层封装,简化模型构建;

3、两者结合,你既能快速上手,又能享受高性能支持。

「准备工作:安装依赖和导入库」

在开始之前,确保你的Python环境已经安装了以下库:

pip install tensorflow matplotlib numpy

「导入库」:

import tensorflow as tf

from tensorflow import keras

from tensorflow.keras import layers

import numpy as np

import matplotlib.pyplot as plt

「步骤一:加载数据」

我们以经典的MNIST数据集为例。这个数据集包含6万张28x28像素的手写数字图片,是图像识别领域的“Hello World”。

「加载数据代码」:

# 加载MNIST数据集

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

# 数据归一化:将像素值缩放到0-1之间

x_train = x_train / 255.0

x_test = x_test / 255.0

「温馨提示」:深度学习中,数据预处理很关键。这里通过简单的归一化操作,加速了模型的收敛。

「可视化数据」:

plt.imshow(x_train[0], cmap='gray')

plt.title(f"Label: {y_train[0]}")

plt.show()

运行以上代码,你会看到一张手写数字图片,同时展示它的标签。图像数据一目了然!

「步骤二:构建模型」

在Keras中,构建神经网络就像搭积木。这里我们使用一个简单的全连接网络。

「模型代码」:

model = keras.Sequential([

  layers.Flatten(input_shape=(28, 28)),  # 将二维图像展平为一维

  layers.Dense(128, activation='relu'),  # 隐藏层,128个神经元

  layers.Dense(10, activation='softmax') # 输出层,10分类

])

model.compile(optimizer='adam',

            loss='sparse_categorical_crossentropy',

            metrics=['accuracy'])

「解释」

1、Flatten层:把28x28的二维图片展平为1x784的一维数据;

2、Dense层:全连接层,relu是激活函数,决定神经元的输出方式;

3、softmax:输出每个类别的概率,适用于多分类问题。

「步骤三:训练模型」

将数据喂入模型,开始训练。

「训练代码」:

history = model.fit(x_train, y_train, epochs=5, validation_split=0.2)

这里的epochs=5表示训练5轮,validation_split=0.2会将20%的训练数据用作验证数据。

「查看训练结果」:

plt.plot(history.history['accuracy'], label='Training Accuracy')

plt.plot(history.history['val_accuracy'], label='Validation Accuracy')

plt.legend()

plt.show()

训练完成后,可以通过图表看到模型的准确率在逐步提高。

「步骤四:评估模型」

训练完成后,用测试集评估模型的表现。

「评估代码」:

test_loss, test_accuracy = model.evaluate(x_test, y_test)

print(f"测试集准确率:{test_accuracy*100:.2f}%")

如果一切顺利,测试集准确率应该能达到97%左右。

「步骤五:预测新数据」

预测时,只需要把图片传入模型,得到每个类别的概率。

「预测代码」:

predictions = model.predict(x_test[:5])

for i in range(5):

  plt.imshow(x_test[i], cmap='gray')

  plt.title(f"预测值:{np.argmax(predictions[i])}")

  plt.show()

这段代码会展示测试集中前5张图片的预测结果,看看模型是否“猜”对了。

「温馨提示:常见问题」

1、「模型过拟合」:如果训练集准确率高,而测试集准确率低,说明模型过拟合了。尝试加入正则化或减少网络复杂度。

2、「学习率调整」:学习率太大会导致模型发散,太小则训练速度慢。可以使用keras.optimizers.Adam动态调整学习率。

「总结:图像识别并不难」

通过这篇教程,你应该能体会到,用TensorFlow和Keras玩转图像识别,其实并没有想象中那么难。模型的搭建、训练和评估都可以用几行代码完成。下一步,可以尝试更复杂的卷积神经网络(CNN),实现更高效的图像识别。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O-iaPyEBeQTkM96JNZl2L6og0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券