fastai02-Production

我们也建议你在项目中从头到尾进行迭代;也就是说,不要花费几个月的时间来微调你的模型,或者打磨完美的图形用户界面,或者标注完美的数据集……相反,你应该在合理的时间内尽可能完善每一个步骤,一直到最后。
首先考虑你的目标,然后思考你可以采取什么行动来实现这个目标,以及你拥有(或可以获取)哪些可以帮助的数据,然后构建一个模型

img

下载数据集

这里介绍了一个很新颖的获取数据的方式,用bing的图片搜索api去获取数据集,并清除下载失败的数据,详见附录文件

satty-20240307-20:00:10.png

DataLoaders | 数据加载器

# 下述参数的解释在官方教程里解释得很清楚
bears = DataBlock(
    blocks=(ImageBlock, CategoryBlock), 
    get_items=get_image_files, 
    splitter=RandomSplitter(valid_pct=0.2, seed=42),
    get_y=parent_label,
    item_tfms=Resize(128))

要将我们下载的数据转化为一个 DataLoaders 对象,至少需要告诉fastai四件事

  1. 我们正在处理哪些类型的数据
  2. 如何获取物品列表
  3. 如何标记这些项目
  4. 如何创建验证集

我们不是一次喂给模型一张图像,而是几张.为了将它们组合在一个大数组(张量)中,这个数组将通过我们的模型,它们都需要具有相同大小.所以,我们需要添加一个转换,将这些图像调整到相同的大小.fastai包含了许多预定义的转换,包括裁剪,填充,拉伸等等.

数据增强

数据增强是指创建我们的输入数据的随机变化,使它们看起来不同,但实际上并不改变数据的含义。常见的图像数据增强技术包括旋转、翻转、透视变形、亮度变化和对比度变化。

satty-20240307-20:26:56.png

直观的数据清理方法是在训练模型之前进行。但是,正如你在这个案例中看到的,模型实际上可以帮助你更快更容易地发现数据问题。所以,我们通常更倾向于先训练一个快速简单的模型,然后用它来帮助我们进行数据清理。

一些方便的功能

混淆矩阵
satty-20240307-21:01:19.png

查看loss最高的样本
satty-20240307-21:04:11.png

数据清理工具
satty-20240307-21:02:39.png

从模型创建notebook应用

通过ipywidgets,我们可以逐步构建我们的图形用户界面.最终界面是这个样子

satty-20240307-21:13:07.png

将notebook转化为真正的应用程序

生成.py文件

由于软件包的更新,在实际复现过程中发现了几个问题,就不一一展示,当前的ipynb实例文件在文末,从'#|default_exp foo'开始, 最后执行下面这个脚本代码会自动生成foo.py文件,注释都是不能省的.

from nbdev.export import nb_export
nb_export('/content/gdrive/MyDrive/Colab Notebooks/Untitled8.ipynb', '.' )

部署到huggingface space

satty-20240309-23:32:59.png

然后照着教程push就好,只需要注意一个地方

git clone https://huggingface.co/spaces/username/bear
# 在push的时候是需要认证的,username+password的方式已被弃用,只能通过token认证,虽然clone之后也可以添加token,但是建议在clone时就加上
git clone https://username:your_token@huggingface.co/spaces/username/bear

添加app.py(上文中的foo.py), requiremens.txt,packages.txt(添加Debian 依赖项),example.plk和example.jpg等文件,再重新push就好

fastai
gradio

requiremens.txt

安装git-lfs参考这个

Installing Git Large File Storage - GitHub Docs
In order to use Git LFS, you’ll need to download and install a new program that’s separate from Git.

screenshot_09032024_234232.png

Read more

fastai14-Resnet

卷积神经网络有这样两个问题 * 我们需要大量的步长为 2 的层来使我们的网格在最后变成 1×1 * 无法在除我们最初训练的尺寸之外的任何尺寸的图像上工作 全卷积网络 | fully convolutional networks def avg_pool(x): return x.mean((2,3)) 前面正常卷积, 剩下的直接求平均 def block(ni, nf): return ConvLayer(ni, nf, stride=2) def get_model(): return nn.Sequential( block(3, 16), block(16, 32), block(32, 64), block(64, 128)

By kamado nezuko

pt命令行做种

发布种子各站点都有教程, 奈何使用的qb下载器为qbittorrent-nox, 没有直接生成torrent文件的选项, google发现可以使用transmission-cli命令行生成torrent 安装 sudo apt install transmission-cli 生成torrent种子 transmission-create -p -o path/to/example.torrent --tracker tracker_announce_url --piecesize 2048 path/to/file_or_directory * -p: 私有种子,不使用 DHT * -o: 生成 torrent 文件路径 * -t: tracker 地址 * -s: 每个文件块大小(参考下表) 文件大小 文件块大小 0 GB - 0.5 GB

By kamado nezuko