程序员

AI猫狗大战分类器

2020-10-09  本文已影响0人  王强儿

这是官方文档的翻译

计算机视觉

使用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))
机器最容易犯迷糊的的图片
上一篇 下一篇

猜你喜欢

热点阅读