這是官方文檔的翻譯
計算機視覺
使用fastai庫在計算機視覺
導(dǎo)入庫
from fastai.vision.all import *
這篇教程主要關(guān)注如何迅速構(gòu)建一個訓(xùn)練模型,并優(yōu)化一個常見的計算機視覺任務(wù)訓(xùn)練模型。
單標簽分類器
使用的訓(xùn)練數(shù)據(jù) Oxford-IIIT Pet Dataset
用一行代碼就可以下載解壓數(shù)據(jù)集
path = untar_data(URLs.PETS)
URLs.PETS
'https://s3.amazonaws.com/fast-ai-imageclas/oxford-iiit-pet.tgz'
目錄結(jié)構(gòu)
path.ls()
(#2) [Path('C:/Users/{user}/.fastai/data/oxford-iiit-pet/annotations'),Path('C:/Users/{user}/.fastai/data/oxford-iiit-pet/images')]
獲取圖片
files = get_image_files(path/"images")
len(files)
7390
探索圖片
files[:5]
#5) [Path('C:/Users/{user}/.fastai/data/oxford-iiit-pet/images/Abyssinian_1.jpg'),Path('C:/Users/{user}/.fastai/data/oxford-iiit-pet/images/Abyssinian_10.jpg'),Path('C:/Users/{user}/.fastai/data/oxford-iiit-pet/images/Abyssinian_100.jpg'),Path('C:/Users/{user}/.fastai/data/oxford-iiit-pet/images/Abyssinian_101.jpg'),Path('C:/Users/{user}/.fastai/data/oxford-iiit-pet/images/Abyssinian_102.jpg')]
自定義標簽函數(shù)
dog def label_func(f): return "cat" if f[0].isupper() else "dog"
bs是每次訓(xùn)練的數(shù)量,因為是2G顯存,所以這是我測試的最大值,windows不支持pytorch多線程,所以num_workers為0。
bs=26
dls = ImageDataLoaders.from_name_func(path, files,label_func, item_tfms=Resize(224),bs=bs,num_workers=0)
展示數(shù)據(jù)
dls.show_batch()
預(yù)訓(xùn)練模型 resnet34
learn = cnn_learner(dls, resnet34, metrics=error_rate)
開始訓(xùn)練
learn.fine_tune(1)
數(shù)據(jù)和模型不能下載時,可以用迅雷下載,然后復(fù)制到相應(yīng)的目錄。
預(yù)測
如果想要預(yù)測新的圖片,可以用learn.predict:方法:
earn.predict(files[0])
('cat', tensor(0), tensor([1.0000e+00, 1.5498e-13]))
我們看看圖片吧
Image.open(files[0])
保存模型
learn.save('cats-vs-dogs')
Path('C:/Users/{user}/.fastai/data/oxford-iiit-pet/models/cats-vs-dogs.pth')
看看最容易出差的圖片
interp.plot_top_losses(9, figsize=(15,10))