Skip to main content

用于神经网络迁移学习的 python 库。

项目描述

关于

我们提供了一组基于迁移学习的模型训练和评估功能。使用 ImageNet 预训练的权重。
支持Efficient Net系列机型。模型大小和准确性之间总是需要权衡取舍。我们的指导方针如下:
对于 tfjs 应用,使用 EfficientNetB0 或 EfficientNetB1;对于 tf-lite 应用,使用 EfficientNetB2 ~ B4;对于桌面应用程序,请使用 EfficientNetB5 及更高版本。

下表来自 keras 网站:

模型 大小 (MB) 前一精度 前 5 名的准确性 参数 深度 每个推理步骤 (CPU) 的时间 (ms) 每个推理步骤的时间 (ms) (GPU)
异常 88 79.0% 94.5% 22.9M 81 109.4 8.1
VGG16 528 71.3% 90.1% 138.4M 16 69.5 4.2
VGG19 549 71.3% 90.0% 143.7M 19 84.8 4.4
ResNet50 98 74.9% 92.1% 25.6M 107 58.2 4.6
ResNet50V2 98 76.0% 93.0% 25.6M 103 45.6 4.4
资源网101 171 76.4% 92.8% 44.7M 209 89.6 5.2
ResNet101V2 171 77.2% 93.8% 44.7M 205 72.7 5.4
ResNet152 232 76.6% 93.1% 60.4M 311 127.4 6.5
ResNet152V2 232 78.0% 94.2% 60.4M 307 107.5 6.6
盗梦空间V3 92 77.9% 93.7% 2390万 189 42.2 6.9
InceptionResNetV2 215 80.3% 95.3% 55.9M 449 130.2 10.0
移动网络 16 70.4% 89.5% 4.3M 55 22.6 3.4
MobileNetV2 14 71.3% 90.1% 3.5M 105 25.9 3.8
密集网121 33 75.0% 92.3% 8.1M 242 77.1 5.4
密集网169 57 76.2% 93.2% 14.3M 338 96.4 6.3
密集网201 80 77.3% 93.6% 20.2M 402 127.2 6.7
NASNetMobile 23 74.4% 91.9% 5.3M 389 27.0 6.7
NASNetLarge 343 82.5% 96.0% 88.9M 533 344.5 20.0
高效网B0 29 77.1% 93.3% 5.3M 132 46.0 4.9
高效网络B1 31 79.1% 94.4% 7.9M 186 60.2 5.6
高效网络B2 36 80.1% 94.9% 9.2M 186 80.8 6.5
高效网络B3 48 81.6% 95.7% 12.3M 210 140.0 8.8
高效网络B4 75 82.9% 96.4% 19.5M 258 308.3 15.1
高效网络B5 118 83.6% 96.7% 30.6M 312 579.2 25.3
高效网络B6 166 84.0% 96.8% 43.3M 360 958.1 40.4
高效网络B7 256 84.3% 97.0% 66.7M 438 1578.9 61.6
高效网络V2B0 29 78.7% 94.3% 7.2M - - -
高效网络V2B1 34 79.8% 95.0% 8.2M - - -
高效网络V2B2 42 80.5% 95.1% 10.2M - - -
高效网络V2B3 59 82.0% 95.8% 14.5M - - -
高效网络V2S 88 83.9% 96.7% 21.6M - - -
高效网络V2M 220 85.3% 97.4% 54.4M - - -
高效网络V2L 479 85.7% 97.5% 119.0M - - -

安装

pip install tensorflow-gpu >= 2
pip install tlearner

如何使用

  1. 初始化

    from tlearner.efficientnet import transfer_learner learner = transfer_learner("my_model", W = 224) # my_model.h5df 将是模型名称

  2. 加载数据

    learner.load_dataset('my_data_folder', PKL_PATH = "my_dataset.pkl") # my_data_folder 的每个子文件夹中的图像被视为一个类。如果指定了PKL_PATH,则会生成一个包含X_train、y_train、X_val、y_val等的pkl。
    print(learner.class_names) # 打印类名

  3. 训练一个新模型

    hist = learner.train_custom_model("EfficientNetB1", batch = 8, epochs = [10,0], optimizer = "adam") # 可以使用 EfficientNetB0-B7。
    plot_history(hist) # 绘制训练曲线

  4. 评估

    learner.evaluate(N = 30) # 预测 X_val 中的前 N ​​个样本

  5. 预测

    learner.predict_file('my_image.jpg')

  6. 转换 [可选]

    learner.convert_to_tflite(v1 = True) # 转换为本地 tflite 模型

  7. 加载现有模型

    learner.load_best_model() # 如果你有一个现有的本地模型
    learner.get_best_model().summary() # 打印模型架构
    learner.plot_best_model() # 将模型架构保存到本地图像文件

Jupyter 笔记本

在 /notebooks 下,我们提供了两个示例。一是花卉图像分类;另一种是眼底图像分类。

部署

训练完成后会得到一个keras h5模型文件。您可以进一步将其转换为 tflite 格式或 tfjs 格式(尚不支持高效网络)。
然后,您可以在移动设备或基于浏览器的应用程序上进行部署。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

tlearner-0.1.5.tar.gz (14.3 kB 查看哈希

已上传 source

内置分布

tlearner-0.1.5-py3-none-any.whl (11.8 kB 查看哈希

已上传 py3