! [ -e /content ] && pip install -Uqq fastai # 在Colab上升级fastai
外部数据
from __future__ import annotations
from fastai.torch_basics import *
from fastdownload import FastDownload
from functools import lru_cache
import fastai.data
辅助函数用于下载fastai数据集
要下载任何数据集或预训练权重,只需运行 untar_data
,并传递上述提到的任何数据集名称,如下所示:
= untar_data(URLs.PETS)
path
path.ls()
>> (#7393) [Path('/home/ubuntu/.fastai/data/oxford-iiit-pet/images/keeshond_34.jpg'),...]
要下载模型的预训练权重:
= untar_data(URLs.WT103_BWD)
path
path.ls()
>> (#2) [Path('/home/ubuntu/.fastai/data/wt103-bwd/itos_wt103.pkl'),Path('/home/ubuntu/.fastai/data/wt103-bwd/lstm_bwd.pth')]
数据集
库中默认可用的数据集的完整列表如下:
主要数据集
- ADULT_SAMPLE: 一个小型的 成年人数据集,用于预测收入是否超过每年50K美元,基于人口普查数据。
- BIWI_SAMPLE: BIWI Kinect 头部姿态数据库。该数据集包含超过15000张20个人的图像(6名女性和14名男性 - 4人被录制了两次)。每帧提供一个深度图像、相应的RGB图像(均为640x480像素)及其注释。头部姿态范围覆盖约±75度偏航和±60度俯仰。
- CIFAR: 著名的 cifar-10 数据集,由60000张32x32的彩色图像组成,分为10个类别,每个类别有6000张图像。
- COCO_SAMPLE: coco数据集 的一个物体检测样本。
- COCO_TINY: coco数据集 的一个微型版本,用于物体检测。
HUMAN_NUMBERS: 一个合成数据集,由文本中的人类数字计数组成,例如一、二、三、四……适用于语言模型的实验。
IMDB: 完整的 IMDB情感分析数据集。
IMDB_SAMPLE: 完整 IMDB情感分析数据集 的一个样本。
ML_SAMPLE: 用于推荐引擎的movielens样本数据集,以推荐电影给用户。
ML_100k: 用于推荐引擎的movielens 100k数据集,以推荐电影给用户。
MNIST_SAMPLE: 著名的 MNIST数据集 的一个样本,由手写数字组成。
MNIST_TINY: 著名的 MNIST数据集 的一个微型版本,由手写数字组成。
MNIST_VAR_SIZE_TINY:
PLANET_SAMPLE: 来自Kaggle竞赛 Planet: Understanding the Amazon from Space 的行星数据集样本。
PLANET_TINY: 来自Kaggle竞赛 Planet: Understanding the Amazon from Space 的行星数据集微型版本,用于更快的实验和原型设计。
IMAGENETTE: imagenet数据集 的一个较小版本,发音与’Imagenet’相同,只是带有一点搞笑的不正宗法语口音。
IMAGENETTE_160: Imagenette数据集的160px版本。
IMAGENETTE_320: Imagenette数据集的320px版本。
IMAGEWOOF: Imagewoof是来自Imagenet的10个类的子集,这些类并不容易分类,因为它们都是犬种。
IMAGEWOOF_160: ImageWoof数据集的160px版本。
IMAGEWOOF_320: ImageWoof数据集的320px版本。
IMAGEWANG: Imagewang包含了Imagenette和Imagewoof的结合体,但有一些变化,使其成为一个棘手的半监督不平衡分类问题。
IMAGEWANG_160: Imagewang的160px版本。
IMAGEWANG_320: Imagewang的320px版本。
Kaggle 竞赛数据集
- 狗:图像数据集,由来自猫狗大战kaggle比赛的狗和猫的图像组成。
图像分类数据集
- CALTECH_101: 属于101个类别的物体图片。每个类别约有40到800张图像。大多数类别大约有50张图片。由Fei-Fei Li, Marco Andreetto和Marc ’Aurelio Ranzato于2003年9月收集。
- CARS: 汽车数据集包含196类汽车的16,185张图像。
- CIFAR_100: CIFAR-100数据集由100个类别的60000张32x32彩色图像组成,每个类别有600张图像。
- CUB_200_2011: Caltech-UCSD Birds-200-2011 (CUB-200-2011)是CUB-200数据集的扩展版本,包含每个类别大约两倍的图像数量和新的部分位置注释。
- FLOWERS: 通过从各种网站收集图片创建的17个类别的花卉数据集。
- FOOD:
- MNIST: 由手写数字组成的MNIST数据集。
- PETS: 一个37类的宠物数据集,每个类别大约有200张图像。
NLP 数据集
- AG_NEWS:AG News语料库包含来自AG在网上的新闻文章,涉及四个最大的类别。该数据集每个类别包含30,000个训练样本和1,900个测试样本。
- AMAZON_REVIEWS:该数据集包含来自亚马逊的产品评论和元数据,包括涵盖1996年5月到2014年7月的1.428亿条评论。
- AMAZON_REVIEWS_POLARITY:用于情感分析的亚马逊评论数据集。
- DBPEDIA:DBpedia本体数据集包含来自DBpedia的14个不重叠类别的560,000个训练样本和70,000个测试样本。
- MT_ENG_FRA:从英语到法语的机器翻译数据集。
- SOGOU_NEWS:Sogou-SRR(搜索结果相关性)数据集旨在支持搜索引擎相关性估计和排名任务的研究。
- WIKITEXT:WikiText语言建模数据集是从维基百科验证的优质和特色文章中提取的超过1亿个标记的集合。
- WIKITEXT_TINY:WIKITEXT数据集的一个小型版本。
- YAHOO_ANSWERS:雅虎的问答数据集。
- YELP_REVIEWS:Yelp数据集是YELP业务、评论和用户数据的一个子集,用于个人、教育和学术目的。
- YELP_REVIEWS_POLARITY:用于YELP评论的情感分类。
图像定位数据集
- BIWI_HEAD_POSE: 一个BIWI kinect 头部姿态数据库。该数据集包含超过15,000张20个人(6名女性和14名男性——4人被记录了两次)的图像。对于每一帧,提供深度图像、对应的RGB图像(均为640x480像素)和注释。头部姿态范围约为+-75度偏航和+-60度俯仰。
- CAMVID: 由用于分割类型模型的驾驶标注数据集组成。
- CAMVID_TINY: 用于分割类型模型的小型camvid数据集。
- LSUN_BEDROOMS: 大规模图像数据集,使用深度学习与人类互动。
- PASCAL_2007: Pascal 2007数据集,用于识别现实场景中多个视觉物体类别的对象。
- PASCAL_2012: Pascal 2012数据集,用于识别现实场景中多个视觉物体类别的对象。
音频分类
- 猕猴: 7285 只猕猴的叫声 来自 分布式声学线索用于猕猴声音中的发声者身份识别 的 8 只个体。
- 斑马雀: 3405 只斑马雀的叫声 被分类 为 11 种叫声类型。额外标签包括发声个体的名称和年龄。
医学成像数据集
SIIM_SMALL: SIIM数据集的一个较小版本,目标是从一组胸部X射线图像中分类气胸。
TCGA_SMALL: TCGA-OV数据集的一个较小版本,带有皮下和内脏脂肪的分割。引用:
Holback, C., Jarosz, R., Prior, F., Mutch, D. G., Bhosale, P., Garcia, K., … Erickson, B. J. (2016). 来自癌症基因组图谱卵巢癌[TCGA-OV]集的放射学数据。癌症影像档案。 论文
Clark K, Vendt B, Smith K, Freymann J, Kirby J, Koppel P, Moore S, Phillips S, Maffitt D, Pringle M, Tarbox L, Prior F. 癌症影像档案(TCIA):维护和运营公共信息库,《数字成像杂志》,第26卷,第6期,2013年12月,第1045-1057页。 论文
预训练模型
- OPENAI_TRANSFORMER: GPT2 Transformer 的预训练权重。
- WT103_FWD: WikiText-103 前向语言模型的权重。
- WT103_BWD: WikiText-103 反向语言模型的权重。
配置
@lru_cache(maxsize=None)
def fastai_cfg() -> Config: # 包含默认下载路径的配置,适用于`data`、`model`、`storage`和`archive`。
"`Config` object for fastai's `config.ini`"
return Config(Path(os.getenv('FASTAI_HOME', '~/.fastai')), 'config.ini', create=dict(
= 'data', archive = 'archive', storage = 'tmp', model = 'models')) data
这是一个基本的 Config
文件,包含 data
、model
、storage
和 archive
。所有未来的下载都发生在根据下载类型在配置文件中定义的路径。例如,所有未来的 fastai 数据集将下载到 data
,而所有预训练模型权重将下载到 model
,除非更新了默认下载位置。配置文件目录由环境变量 FASTAI_HOME
定义(如果存在),否则设置为 ~/.fastai
。
= fastai_cfg()
cfg 'data') cfg.data,cfg.path(
('data', Path('/home/jhoward/.fastai/data'))
def fastai_path(folder:str) -> Path:
"Local path to `folder` in `Config`"
return fastai_cfg().path(folder)
'archive') fastai_path(
Path('/home/jhoward/.fastai/archive')
URLs -
class URLs():
"Global constants for dataset and model URLs."
= Path.cwd()
LOCAL_PATH = 'http://files.fast.ai/models/'
MDL = 'https://storage.googleapis.com/'
GOOGLE = 'https://s3.amazonaws.com/fast-ai-'
S3 = f'{S3}sample/'
URL
= f'{S3}imageclas/'
S3_IMAGE = f'{S3}imagelocal/'
S3_IMAGELOC = f'{S3}audio/'
S3_AUDI = f'{S3}nlp/'
S3_NLP = f'{S3}coco/'
S3_COCO = f'{S3}modelzoo/'
S3_MODEL
# 主要数据集
= f'{URL}adult_sample.tgz'
ADULT_SAMPLE = f'{URL}biwi_sample.tgz'
BIWI_SAMPLE = f'{URL}cifar10.tgz'
CIFAR = f'{S3_COCO}coco_sample.tgz'
COCO_SAMPLE = f'{S3_COCO}coco_tiny.tgz'
COCO_TINY = f'{URL}human_numbers.tgz'
HUMAN_NUMBERS = f'{S3_NLP}imdb.tgz'
IMDB = f'{URL}imdb_sample.tgz'
IMDB_SAMPLE = f'{URL}movie_lens_sample.tgz'
ML_SAMPLE = 'https://files.grouplens.org/datasets/movielens/ml-100k.zip'
ML_100k = f'{URL}mnist_sample.tgz'
MNIST_SAMPLE = f'{URL}mnist_tiny.tgz'
MNIST_TINY = f'{S3_IMAGE}mnist_var_size_tiny.tgz'
MNIST_VAR_SIZE_TINY = f'{URL}planet_sample.tgz'
PLANET_SAMPLE = f'{URL}planet_tiny.tgz'
PLANET_TINY = f'{S3_IMAGE}imagenette2.tgz'
IMAGENETTE = f'{S3_IMAGE}imagenette2-160.tgz'
IMAGENETTE_160 = f'{S3_IMAGE}imagenette2-320.tgz'
IMAGENETTE_320 = f'{S3_IMAGE}imagewoof2.tgz'
IMAGEWOOF = f'{S3_IMAGE}imagewoof2-160.tgz'
IMAGEWOOF_160 = f'{S3_IMAGE}imagewoof2-320.tgz'
IMAGEWOOF_320 = f'{S3_IMAGE}imagewang.tgz'
IMAGEWANG = f'{S3_IMAGE}imagewang-160.tgz'
IMAGEWANG_160 = f'{S3_IMAGE}imagewang-320.tgz'
IMAGEWANG_320
# kaggle 竞赛下载 dogs-vs-cats -p {DOGS.absolute()}
= f'{URL}dogscats.tgz'
DOGS
# 图像分类数据集
= f'{S3_IMAGE}caltech_101.tgz'
CALTECH_101 = f'{S3_IMAGE}stanford-cars.tgz'
CARS = f'{S3_IMAGE}cifar100.tgz'
CIFAR_100 = f'{S3_IMAGE}CUB_200_2011.tgz'
CUB_200_2011 = f'{S3_IMAGE}oxford-102-flowers.tgz'
FLOWERS = f'{S3_IMAGE}food-101.tgz'
FOOD = f'{S3_IMAGE}mnist_png.tgz'
MNIST = f'{S3_IMAGE}oxford-iiit-pet.tgz'
PETS
# 自然语言处理数据集
= f'{S3_NLP}ag_news_csv.tgz'
AG_NEWS = f'{S3_NLP}amazon_review_full_csv.tgz'
AMAZON_REVIEWS = f'{S3_NLP}amazon_review_polarity_csv.tgz'
AMAZON_REVIEWS_POLARITY = f'{S3_NLP}dbpedia_csv.tgz'
DBPEDIA = f'{S3_NLP}giga-fren.tgz'
MT_ENG_FRA = f'{S3_NLP}sogou_news_csv.tgz'
SOGOU_NEWS = f'{S3_NLP}wikitext-103.tgz'
WIKITEXT = f'{S3_NLP}wikitext-2.tgz'
WIKITEXT_TINY = f'{S3_NLP}yahoo_answers_csv.tgz'
YAHOO_ANSWERS = f'{S3_NLP}yelp_review_full_csv.tgz'
YELP_REVIEWS = f'{S3_NLP}yelp_review_polarity_csv.tgz'
YELP_REVIEWS_POLARITY
# 图像定位数据集
= f"{S3_IMAGELOC}biwi_head_pose.tgz"
BIWI_HEAD_POSE = f'{S3_IMAGELOC}camvid.tgz'
CAMVID = f'{URL}camvid_tiny.tgz'
CAMVID_TINY = f'{S3_IMAGE}bedroom.tgz'
LSUN_BEDROOMS = f'{S3_IMAGELOC}pascal_2007.tgz'
PASCAL_2007 = f'{S3_IMAGELOC}pascal_2012.tgz'
PASCAL_2012
# 音频分类数据集
= f'{GOOGLE}ml-animal-sounds-datasets/macaques.zip'
MACAQUES = f'{GOOGLE}ml-animal-sounds-datasets/zebra_finch.zip'
ZEBRA_FINCH
# 医学影像数据集
#皮肤病变 = f'{S3_IMAGELOC}skin_lesion.tgz'
= f'{S3_IMAGELOC}siim_small.tgz'
SIIM_SMALL = f'{S3_IMAGELOC}tcga_small.tgz'
TCGA_SMALL
#预训练模型
= f'{S3_MODEL}transformer.tgz'
OPENAI_TRANSFORMER = f'{S3_MODEL}wt103-fwd.tgz'
WT103_FWD = f'{S3_MODEL}wt103-bwd.tgz'
WT103_BWD
def path(
str='.', # 待下载文件
url:str='archive' # 在`Config`中输入保存URL的位置
c_key:-> Path:
) "Local path where to download based on `c_key`"
= url.split('/')[-1]
fname = URLs.LOCAL_PATH/('models' if c_key=='model' else 'data')/fname
local_path if local_path.exists(): return local_path
return fastai_path(c_key)/fname
默认的本地路径为 ~/.fastai/archive/
,但可以通过传递不同的 c_key
来更新此路径。注意:c_key
应为 'archive'
, 'data'
, 'model'
, 或 'storage'
之一。
= URLs.PETS
url = URLs.path(url)
local_path 'archive'))
test_eq(local_path.parent, fastai_path( local_path
Path('/home/jhoward/.fastai/archive/oxford-iiit-pet.tgz')
= URLs.path(url, c_key='model')
local_path 'model'))
test_eq(local_path.parent, fastai_path( local_path
Path('/home/jhoward/.fastai/models/oxford-iiit-pet.tgz')
解压数据 -
def untar_data(
str, # 待下载文件
url:=None, # Optional override for `Config`'s `archive` key
archive:Path=None, # Optional override for `Config`'s `data` key
data:Pathstr='data', # 在`Config`中输入文件提取位置
c_key:bool=False, # 设置为 `True` 将覆盖任何现有的数据副本
force_download:str='~/.fastai' # 包含配置文件和相对路径基准的目录
base:-> Path: # 提取文件的路径
) "Download `url` using `FastDownload.get`"
= FastDownload(fastai_cfg(), module=fastai.data, archive=archive, data=data, base=base)
d return d.get(url, force=force_download, extract_key=c_key)
untar_data
是 FastDownload.get
的一个简单封装。它下载并提取 url
,默认情况下提取到 ~/.fastai
的子目录中(具体请参见 fastai_cfg
),并返回提取数据的路径。将 force_download
标志设置为 ‘True’ 将覆盖任何已存在的数据副本。有关 c_key
参数的详细说明,请参见 URLs
。
untar_data(URLs.MNIST_SAMPLE)
Path('/home/jhoward/.fastai/data/mnist_sample')
#检查所有URL是否在download_checks.py文件中,并与已下载的存档匹配
# 从fastdownload导入read_checks
# fd = FastDownload(fastai_cfg(), 模块=fastai.data)
# _whitelist = "MDL LOCAL_PATH URL WT103_BWD WT103_FWD GOOGLE".split()
# 检查项 = 读取检查项(fd.模块)
# 对于 URLs 中的每个 d:
# if d.upper() == d and not d.startswith("S3") and not d in _whitelist:
# url = getattr(URLs, d)
# 断言 url 在 checks 中,否则引发 f"""{d} is not in the check file for all URLs.
# To fix this, you need to run the following code in this notebook before making a PR (there is a commented cell for this below):
# url = URLs.{d}
# fd.get(url, force=True)
# fd.update(url)
# """
# f = fd.download(url)
# assert fd.check(url, f), f"""The log we have for {d} in checks does not match the actual archive.
# To fix this, you need to run the following code in this notebook before making a PR (there is a commented cell for this below):
# url = URLs.{d}
# _add_check(url, URLs.path(url))
# """
导出 -
from nbdev import nbdev_export
nbdev_export()
Converted 00_torch_core.ipynb.
Converted 01_layers.ipynb.
Converted 01a_losses.ipynb.
Converted 02_data.load.ipynb.
Converted 03_data.core.ipynb.
Converted 04_data.external.ipynb.
Converted 05_data.transforms.ipynb.
Converted 06_data.block.ipynb.
Converted 07_vision.core.ipynb.
Converted 08_vision.data.ipynb.
Converted 09_vision.augment.ipynb.
Converted 09b_vision.utils.ipynb.
Converted 09c_vision.widgets.ipynb.
Converted 10_tutorial.pets.ipynb.
Converted 10b_tutorial.albumentations.ipynb.
Converted 11_vision.models.xresnet.ipynb.
Converted 12_optimizer.ipynb.
Converted 13_callback.core.ipynb.
Converted 13a_learner.ipynb.
Converted 13b_metrics.ipynb.
Converted 14_callback.schedule.ipynb.
Converted 14a_callback.data.ipynb.
Converted 15_callback.hook.ipynb.
Converted 15a_vision.models.unet.ipynb.
Converted 16_callback.progress.ipynb.
Converted 17_callback.tracker.ipynb.
Converted 18_callback.fp16.ipynb.
Converted 18a_callback.training.ipynb.
Converted 18b_callback.preds.ipynb.
Converted 19_callback.mixup.ipynb.
Converted 20_interpret.ipynb.
Converted 20a_distributed.ipynb.
Converted 21_vision.learner.ipynb.
Converted 22_tutorial.imagenette.ipynb.
Converted 23_tutorial.vision.ipynb.
Converted 24_tutorial.image_sequence.ipynb.
Converted 24_tutorial.siamese.ipynb.
Converted 24_vision.gan.ipynb.
Converted 30_text.core.ipynb.
Converted 31_text.data.ipynb.
Converted 32_text.models.awdlstm.ipynb.
Converted 33_text.models.core.ipynb.
Converted 34_callback.rnn.ipynb.
Converted 35_tutorial.wikitext.ipynb.
Converted 37_text.learner.ipynb.
Converted 38_tutorial.text.ipynb.
Converted 39_tutorial.transformers.ipynb.
Converted 40_tabular.core.ipynb.
Converted 41_tabular.data.ipynb.
Converted 42_tabular.model.ipynb.
Converted 43_tabular.learner.ipynb.
Converted 44_tutorial.tabular.ipynb.
Converted 45_collab.ipynb.
Converted 46_tutorial.collab.ipynb.
Converted 50_tutorial.datablock.ipynb.
Converted 60_medical.imaging.ipynb.
Converted 61_tutorial.medical_imaging.ipynb.
Converted 65_medical.text.ipynb.
Converted 70_callback.wandb.ipynb.
Converted 71_callback.tensorboard.ipynb.
Converted 72_callback.neptune.ipynb.
Converted 73_callback.captum.ipynb.
Converted 74_huggingface.ipynb.
Converted 97_test_utils.ipynb.
Converted 99_pytorch_doc.ipynb.
Converted dev-setup.ipynb.
Converted app_examples.ipynb.
Converted camvid.ipynb.
Converted migrating_catalyst.ipynb.
Converted migrating_ignite.ipynb.
Converted migrating_lightning.ipynb.
Converted migrating_pytorch.ipynb.
Converted migrating_pytorch_verbose.ipynb.
Converted ulmfit.ipynb.
Converted index.ipynb.
Converted quick_start.ipynb.
Converted tutorial.ipynb.