??主頁 Nowl
??專欄 《AI模型分享》
??君子坐而論道,少年起而行之
??導讀
圖像識別任務是人工智能計算機視覺領域一個重要的子任務,本篇文章將通過使用一個預訓練模型來幫助讀者快速上手圖像識別任務,對應的文件可通過關注文章末尾的公眾號領取
本篇文章需要一定人工智能基礎,不了解的可從博主其他人工智能專欄進行學習
本次介紹的模型是resnet模型
可以將本篇博文當作notebook來閱讀,也方便讀者進行運行
模型配置
庫的導入
首先導入本次項目所需要的庫,torchvision是一個計算機視覺庫,里面有很多相關模型
from torchvision import models
from torchvision import transforms
模型初始化
接著創(chuàng)建模型對象
resnet = models.resnet101(pretrained=True)
圖片處理器
創(chuàng)建一個預處理器,用于將不同格式的圖片都轉化為模型需要的輸入格式
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]
)])
圖片處理
導入圖片處理庫
from PIL import Image
import matplotlib.pyplot as plt
導入圖片
將your_path替換為自己的圖片路徑
img = Image.open("/kaggle/input/orange/orange.jpg")
查看圖片通道數(shù)
運行以下代碼查看圖片通道數(shù)
print(len(img.getbands()))
如果圖片通道數(shù)是4,就將它轉化為RGB圖片(通道數(shù)為3),因為圖片預處理器處理的是3通道圖片
img= img.convert("RGB")
處理圖片
將圖片放入圖片處理器
img_t = preprocess(img)
導入torch庫
import torch
擴充維度
拓展一個維度用作訓練數(shù)據(jù)
batch_t = torch.unsqueeze(img_t, 0)
模型訓練與評估
模型初始化
這部分代碼將模型切換為評估模式,表示本次運行僅使用模型,不進行訓練,再將圖片輸入模型,獲取結果
resnet.eval()
out = resnet(batch_t)
導入標簽
這段代碼是模型對應輸出的標簽,即判別結果,標簽文件可關注文章末尾公眾號領取,下載后記得將路徑替換為自己的路徑
with open("/kaggle/input/pytorch/dlwpt-code-master/data/p1ch2/imagenet_classes.txt") as f:
labels = [line.strip() for line in f.readlines()]
因為模型輸出的是一些浮點數(shù),我們獲取最大值的索引,并在標簽中搜索則可以得到最終結果
此段代碼輸出對應的結果和模型判斷結果正確的概率
_, index = torch.max(out, 1)
percentage = torch.nn.functional.softmax(out, dim=1)[0] * 100
print(labels[index[0]], percentage[index[0]].item())
測試
以下是博主運行的圖片和結果
輸入了一個橘子圖片
模型表示有97%的概率是橘子文章來源:http://www.zghlxwxcb.cn/news/detail-780388.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-780388.html
到了這里,關于這個AI模型能識別出這個橘子嗎?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!