利用 AI 进行图像内容识别可以通过多种方式实现,以下为你详细介绍不同途径及相关操作步骤和示例:
利用预训练的深度学习模型
许多深度学习框架(如 TensorFlow、PyTorch)都提供了预训练好的图像分类模型,像 ResNet、VGG 等,你可以借助这些模型开展图像内容识别工作。
使用 PyTorch 和预训练的 ResNet 模型
收起
python
import torch
import torchvision.models as models
import torchvision.transforms as transforms
from PIL import Image
# 加载预训练的ResNet模型
model = models.resnet18(pretrained=True)
model.eval()
# 定义图像预处理步骤
preprocess = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# 打开并预处理图像
image = Image.open('your_image.jpg')
input_tensor = preprocess(image)
input_batch = input_tensor.unsqueeze(0)
# 进行推理
with torch.no_grad():
output = model(input_batch)
# 获取预测结果
_, predicted_idx = torch.max(output, 1)
# 加载ImageNet类别标签
with open('imagenet_classes.txt') as f:
classes = [line.strip() for line in f.readlines()]
predicted_class = classes[predicted_idx.item()]
print(f"预测结果: {predicted_class}")
代码解释
- 模型加载:借助
torchvision.models
加载预训练的 ResNet - 18 模型,并将其设为评估模式。 - 图像预处理:定义一系列图像预处理步骤,包括调整大小、中心裁剪、转换为张量以及归一化。
- 推理过程:对图像进行预处理后,将其输入模型进行推理,得到输出结果。
- 结果解读:通过
torch.max
获取预测结果的索引,再结合 ImageNet 类别标签文件得到具体的类别名称。
调用云服务 API
很多科技公司提供了图像识别的 API,使用方便,无需自行训练模型。
使用百度 AI 开放平台的图像分类 API
收起
python
import requests
import base64
# 设置API Key和Secret Key
API_KEY = 'your_api_key'
SECRET_KEY = 'your_secret_key'
# 获取access_token
token_url = f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={API_KEY}&client_secret={SECRET_KEY}'
response = requests.get(token_url)
access_token = response.json().get('access_token')
# 读取图像并进行Base64编码
with open('your_image.jpg', 'rb') as f:
image_data = f.read()
image_base64 = base64.b64encode(image_data).decode('utf-8')
# 调用图像分类API
classify_url = f'https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {
'access_token': access_token,
'image': image_base64
}
response = requests.post(classify_url, headers=headers, data=data)
result = response.json()
# 输出识别结果
for item in result.get('result', []):
print(f"类别: {item['keyword']}, 置信度: {item['score']}")
代码解释
- 获取访问令牌:通过 API Key 和 Secret Key 向百度 AI 开放平台请求
access_token
。 - 图像编码:读取图像文件并将其进行 Base64 编码。
- 调用 API:发送 HTTP 请求到图像分类 API,获取识别结果。
- 结果输出:解析 API 响应,输出识别出的类别和置信度。
使用专业的图像识别软件
像百度识图、谷歌识图等,用户只需上传图像,软件就能快速识别图像中的内容,并提供相关的搜索结果和信息。这些软件操作简单,适合非专业人士使用。