这是官方文档的翻译
计算机视觉
使用fastai库在计算机视觉
导入库
from fastai.vision.all import *
这篇教程主要关注如何迅速构建一个训练模型,并优化一个常见的计算机视觉任务训练模型。
单标签分类器
使用的训练数据 Oxford-IIIT Pet Dataset
用一行代码就可以下载解压数据集
path = untar_data(URLs.PETS)
URLs.PETS
'https://s3.amazonaws.com/fast-ai-imageclas/oxford-iiit-pet.tgz'
目录结构
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')]
自定义标签函数
dog def label_func(f): return "cat" if f[0].isupper() else "dog"
bs是每次训练的数量,因为是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)
展示数据
dls.show_batch()
猫VS狗
预训练模型 resnet34
learn = cnn_learner(dls, resnet34, metrics=error_rate)
开始训练
learn.fine_tune(1)
错误率 训练结果
数据和模型不能下载时,可以用迅雷下载,然后复制到相应的目录。
预测
如果想要预测新的图片,可以用learn.predict:方法:
earn.predict(files[0])
('cat', tensor(0), tensor([1.0000e+00, 1.5498e-13]))
我们看看图片吧
Image.open(files[0])
cat保存模型
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))
机器最容易犯迷糊的的图片
网友评论