《Keras 3: 使用 BigTransfer (BiT) 进行图像分类》

发布于:2025-02-14 ⋅ 阅读:(149) ⋅ 点赞:(0)

《Keras 3: 使用 BigTransfer (BiT) 进行图像分类》

作者: Sayan Nath
创建日期: 2021/09/24
最后修改时间: 2024/01/03
描述: BigTransfer (BiT) 用于图像分类的最先进的迁移学习。

(i) 此示例使用 Keras 3

 在 Colab 中查看 

 GitHub 源


介绍

BigTransfer(也称为 BiT)是一种最先进的图像迁移学习方法 分类。预训练表征的传输提高了样本效率,并且 在训练深度神经网络进行视觉训练时简化超参数调整。位 重新审视在大型监督数据集上进行预训练的范例,并微调 model 中。适当选择归一化图层的重要性 随着预训练数据量的增加而扩展架构容量。

BigTransfer(BiT) 是在公共数据集以及 TF2、Jax 和 Pytorch 中的代码上进行训练的。这将帮助任何人到达 在他们感兴趣的任务上最先进的性能,即使只有少数 每个类的标记图像。

您可以在 TFHub 中找到在 ImageNet 和 ImageNet-21k 上预先训练的 BiT 模型作为 TensorFlow2 SavedModel,您可以 可以很容易地用作 Keras 图层。有多种尺寸,从标准 为用户将 ResNet50 转换为 ResNet152x4(152 层深,比典型 ResNet50 宽 4 倍) 具有更大的计算和内存预算,但精度要求更高。

图:x 轴显示每个类使用的图像数,范围从 1 到完整 数据。在左侧的绘图中,上面蓝色的曲线是我们的 BiT-L 模型,而 下面的曲线是在 ImageNet 上预训练的 ResNet-50 (ILSVRC-2012)。


设置

import os
os.environ["KERAS_BACKEND"] = "tensorflow"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

import keras
from keras import ops
import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_datasets as tfds

tfds.disable_progress_bar()

SEEDS = 42

keras.utils.set_random_seed(SEEDS)

收集花卉数据集

train_ds, validation_ds = tfds.load(
    "tf_flowers",
    split=["train[:85%]", "train[85%:]"],
    as_supervised=True,
)
[1mDownloading and preparing dataset 218.21 MiB (download: 218.21 MiB, generated: 221.83 MiB, total: 440.05 MiB) to ~/tensorflow_datasets/tf_flowers/3.0.1...[0m [1mDataset tf_flowers downloaded and prepared to ~/tensorflow_datasets/tf_flowers/3.0.1. Subsequent calls will reuse this data.[0m 

可视化数据集

plt.figure(figsize=(10, 10))
for i, (image, label) in enumerate(train_ds.take(9)):
    ax = plt.subplot(3, 3, i + 1)

网站公告

今日签到

点亮在社区的每一天
去签到