lwp070 发表于 5 天前

用十行代码换你的图像识别,问你换不换啊?

你是否曾经觉得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)print(f"识别结果:{decoded_predictions},置信度:{decoded_predictions*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)# 解码预测结果    print(f"识别结果:{decoded_predictions},置信度:{decoded_predictions * 100:.2f}%")# 输出结果恭喜你!你已经用10行代码实现了图像识别!
是不是觉得AI也没那么难?
快去试试,看看你的AI能识别出什么有趣的内容!

dirkyoyo 发表于 4 天前

好棒的分享楼主多写点吧,写完记得通知我,哈哈

lhp0721 发表于 4 天前

传说中的沙发???哇卡卡

360306199 发表于 前天 14:26

顶顶更健康
页: [1]
查看完整版本: 用十行代码换你的图像识别,问你换不换啊?