智客公社
标题:
用十行代码换你的图像识别,问你换不换啊?
[打印本页]
作者:
lwp070
时间:
2025-3-18 14:37
标题:
用十行代码换你的图像识别,问你换不换啊?
你是否曾经觉得AI和图像识别是只有科学家才能玩转的高深技术?
别急,今天我要告诉你一个秘密:用
python
,只需10行代码,你就能实现图像识别!
无论是识别猫狗,还是分辨水果,python都能帮你轻松搞定!
01
标安装工具 —— 准备好你的“AI工具箱”
在开始之前,我们需要安装python的AI神器:
TensorFlow
和
Keras
。
只需一行命令,就能搞定!
pip install tensorflow
由于我们需要进行图片识别,额外还需要安装
Pillow
来加载图片,当然安装也很简单:
pip install Pillow
02
加载预训练模型 —— 站在巨人的肩膀上
为什么要从头训练模型?我们可以直接使用预训练的模型,比如
Keras
自带的
MobileNet
。
它已经在数百万张图片上训练过,可以直接用来识别图像。这样做可以省去我们很多时间和精力,直接完成我们的需求(还可以节省一大笔训练开销,正好点杯咖啡)。
from tensorflow.keras.applications import MobileNetmodel = MobileNet(weights='imagenet')
这一步操作将会进行模型下载,国内网络可能会比较慢,如果有条件的同学可以进行梯子下载。
03
加载图片 —— 找到你的“识别对象”
终于可以进行测试了,我们需要一张图片来测试模型。
你可以用任何你喜欢的图片,比如你家
猫的照片
,或者一张
水果图片
。
from tensorflow.keras.preprocessing import imageimg_path = 'cat.jpg' # 替换为你的图片路径img = image.load_img(img_path, target_size=(224, 224))
很快你就能通过模型来判断图片的类型,为你的应用带来质的飞跃。
04
预处理图片 —— 让图片“适合”模型
模型对输入图片的格式有要求,我们需要将图片转换为模型能理解的格式。
import numpy as npimg_array = image.img_to_array(img)img_array = np.expand_dims(img_array, axis=0)img_array = tf.keras.applications.mobilenet.preprocess_input(img_array)
通过将图片进行特定处理,才能使模型读懂图片,以后如果想要制作自己的AI模型,预处理这一步是无法省略的重要一步,好的预处理将会大大缩短拟合的速度。
当然在这个例子中你不需要自己去预处理,
tf.keras.applications.mobilenet.preprocess_input
方法中已经调用了复杂的预处理。
05
预测图片 —— 让AI“识别”内容
现在,我们可以用模型来预测图片的内容了。
模型会返回一个包含1000个类别的概率分布,我们只需要找到概率最高的类别。
predictions = model.predict(img_array)decoded_predictions = tf.keras.applications.mobilenet.decode_predictions(predictions, top=1)[0]print(f"识别结果:{decoded_predictions[0][1]},置信度:{decoded_predictions[0][2]*100:.2f}%")
在这里将输出模型的预测结果,不过请注意的是,输出结果是英文的。
结尾
完整代码:
# -*- coding: utf-8 -*-from tensorflow.keras.applications import MobileNetfrom tensorflow.keras.preprocessing import imageimport numpy as npimport tensorflow as tfif __name__ == '__main__': model = MobileNet(weights='imagenet') # 加载模型 img = image.load_img('cat.jpg', target_size=(224, 224)) # 加载图片 img_array = image.img_to_array(img) # 转换为数组 img_array = np.expand_dims(img_array, axis=0) # 增加批次维度 img_array = tf.keras.applications.mobilenet.preprocess_input(img_array) # 预处理图片 predictions = model.predict(img_array) # 预测图片 decoded_predictions = tf.keras.applications.mobilenet.decode_predictions(predictions, top=1)[0] # 解码预测结果 print(f"识别结果:{decoded_predictions[0][1]},置信度:{decoded_predictions[0][2] * 100:.2f}%") # 输出结果
恭喜你!你已经用10行代码实现了图像识别!
是不是觉得AI也没那么难?
快去试试,看看你的AI能识别出什么有趣的内容!
作者:
dirkyoyo
时间:
7 天前
好棒的分享楼主多写点吧,写完记得通知我,哈哈
作者:
lhp0721
时间:
7 天前
传说中的沙发???哇卡卡
作者:
360306199
时间:
5 天前
顶顶更健康
欢迎光临 智客公社 (https://bbs.cnaiplus.com/)
Powered by Discuz! X3.5