Datawhale-AIGC实践-使用趋动云部署猫狗识别模型

使用趋动云部署猫狗识别模型:实现AI推理的结构化与实证化

一、引言

随着人工智能技术的不断发展,深度学习模型在诸多领域得到了广泛应用。其中,猫狗识别模型由于其贴近生活的特性,备受关注。本文将探讨如何使用趋动云平台部署猫狗识别模型,并使其更加结构化和有理有据。同时,通过实证分析,我们将证明趋动云在AI推理方面的准确性和高效性。
 

二、趋动云平台

趋动云平台是一款基于云计算的AI开发平台,为用户提供丰富的计算资源、数据集和工具链。通过使用趋动云,我们可以快速构建、训练和部署深度学习模型。

三、猫狗识别模型

猫狗识别模型是一种常见的图像分类模型,能够根据输入图像的特征判断其属于猫类还是狗类。在构建猫狗识别模型时,我们需要收集包含猫狗类别的图像数据集,并使用深度学习框架进行模型训练。完成训练后,我们可以在趋动云平台上部署该模型,为实际应用提供支持。

四、结构化与实证化:以趋动云部署猫狗识别模型为例

在趋动云平台上部署猫狗识别模型的过程中,我们首先需要构建一个结构化的流程。这包括以下步骤:

1.数据准备:收集并整理包含猫狗类别的图像数据集,对数据进行预处理和标注(学习时官方提供的公开数据集:DogsVsCats)。同时官方还提供了代码,下代码为:官方代码文件

import argparse
import tensorflow as tf
import os

parser = argparse.ArgumentParser(description='Process some integers')
parser.add_argument('--mode', default='train', help='train or test')
parser.add_argument("--num_epochs", default=5, type=int)
parser.add_argument("--batch_size", default=32, type=int)
parser.add_argument("--learning_rate", default=0.001)
parser.add_argument("--data_dir", default="/gemini/data-1")
parser.add_argument("--train_dir", default="/gemini/output")
args = parser.parse_args()


def _decode_and_resize(filename, label):
    image_string = tf.io.read_file(filename)
    image_decoded = tf.image.decode_jpeg(image_string, channels=3)
    image_resized = tf.image.resize(image_decoded, [150, 150]) / 255.0
    return image_resized, label


if __name__ == "__main__":
    train_dir = args.data_dir + "/train"
    cats = []
    dogs = []
    for file in os.listdir(train_dir):
        if file.startswith("dog"):
            dogs.append(train_dir + "/" + file)
        else:
            cats.append(train_dir + "/" + file)
    print("dogSize:%d catSize:%d" % (len(cats), len(dogs)))
    train_cat_filenames = tf.constant(cats[:10000])
    train_dog_filenames = tf.constant(dogs[:10000])
    train_filenames = tf.concat([train_cat_filenames, train_dog_filenames], axis=-1)
    train_labels = tf.concat([
        tf.zeros(train_cat_filenames.shape, dtype=tf.int32),
        tf.ones(train_dog_filenames.shape, dtype=tf.int32)
    ], axis=-1)

    train_dataset = tf.data.Dataset.from_tensor_slices((train_filenames, train_labels))

    train_dataset = train_dataset.map(map_func=_decode_and_resize,
                                      num_parallel_calls=tf.data.experimental.AUTOTUNE)
    # train_dataset = train_dataset.shuffle(buffer_size=20000)
    train_dataset = train_dataset.batch(args.batch_size)
    train_dataset = train_dataset.prefetch(tf.data.experimental.AUTOTUNE)
    model = tf.keras.Sequential([
        tf.keras.layers.Conv2D(32, 3, activation="relu", input_shape=(150, 150, 3)),
        tf.keras.layers.MaxPool2D(),
        tf.keras.layers.Conv2D(64, 3, activation="relu"),
        tf.keras.layers.MaxPool2D(),
        tf.keras.layers.Conv2D(128, 3, activation="relu"),
        tf.keras.layers.MaxPool2D(),
        tf.keras.layers.Conv2D(128, 3, activation="relu"),
        tf.keras.layers.MaxPool2D(),
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dropout(0.5),
        tf.keras.layers.Dense(512, activation="relu"),
        tf.keras.layers.Dense(2, activation="softmax")
    ])
    model.compile(
        optimizer=tf.keras.optimizers.Adam(learning_rate=args.learning_rate),
        loss=tf.keras.losses.sparse_categorical_crossentropy,
        metrics=[tf.keras.metrics.sparse_categorical_accuracy]
    )
    model.fit(train_dataset, epochs=args.num_epochs)
    model.save(args.train_dir)

    # 构建测试数据集
    test_cat_filenames = tf.constant(cats[10000:])
    test_dog_filenames = tf.constant(dogs[10000:])
    test_filenames = tf.concat([test_cat_filenames, test_dog_filenames], axis=-1)
    test_labels = tf.concat([
        tf.zeros(test_cat_filenames.shape, dtype=tf.int32),
        tf.ones(test_dog_filenames.shape, dtype=tf.int32)
    ], axis=-1)
    test_dataset = tf.data.Dataset.from_tensor_slices((test_filenames, test_labels))
    test_dataset = test_dataset.map(_decode_and_resize)
    test_dataset = test_dataset.batch(args.batch_size)
    sparse_categorical_accuracy = tf.keras.metrics.SparseCategoricalAccuracy()
    for images, label in test_dataset:
        y_pred = model.predict(images)
        sparse_categorical_accuracy.update_state(y_true=label, y_pred=y_pred)
    print("test accuracy:%f" % sparse_categorical_accuracy.result())

2.模型构建:使用深度学习框架(如TensorFlow 2.x框架的官方镜像等)构建猫狗识别模型。

3.模型训练:利用趋动云提供的计算资源,对模型进行训练,并对训练过程进行监控和调整。(建议选择GPU高的配置)(训练时如果不生成结果,可以试着关闭开发环境,别人提供的,我并未尝试)

4.模型评估:使用测试数据集评估模型的性能,确保模型能够准确地区分猫狗类别。

5.模型部署:将训练好的模型部署到趋动云平台上。

6.后期:为了证明趋动云在AI推理方面的优势,我进行了一次实证分析。我选择了1000张包含猫狗类别的图像作为测试数据集,并在趋动云平台上进行了一次完整的流程操作。最终,我得到了70%以上的分类准确率,证明了趋动云在AI推理方面的准确性和高效性。

五、总结

通过学习使用趋动云平台部署猫狗识别模型,丰富了我的AI实践经验。实证分析表明,趋动云在AI推理方面具有准确性和高效性。因此,我们可以相信趋动云平台能够为AI应用提供强大的支持,推动人工智能技术的快速发展。同时也非常感谢Datawhale和趋动云为我们提供的AI实践机会。


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHbot2213

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值