《昇思 25 天学习打卡营第 10 天 | ResNet50 迁移学习 》

《昇思 25 天学习打卡营第 10 天 | ResNet50 迁移学习 》

活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp

签名:Sam9029


使用迁移学习进行狼狗图像分类

简介

在机器学习和深度学习中,我们经常面临数据不足的问题。

迁移学习是一种解决这一问题的有效方法。

本章节将通过一个简单的案例,介绍如何使用迁移学习对狼和狗的图像进行分类。

迁移学习概念

迁移学习是一种学习方式,它允许我们将在一个大型数据集(如 ImageNet)上预训练的模型应用于一个新的、通常较小的数据集。这样,我们可以利用预训练模型已经学到的特征,而不必从头开始训练整个网络。

使用模型 ResNet50

  • ResNet50 是一种深度卷积神经网络(CNN)架构, 由微软研究院的 Kaiming He 等人在 2015 年提出,并在多个视觉识别任务中取得了突破性的性能。

ResNet50 的应用:

图像分类:ResNet50 可以用于将图像分类到 1000 个类别中,这是 ImageNet 数据集的标准任务。

物体检测:通过将 ResNet50 与区域建议网络(Region Proposal Networks, RPN)结合,可以用于物体检测任务。

语义分割:ResNet50 也可以用于像素级的图像理解,即语义分割,其中每个像素都被分类到相应的类别。

数据准备

首先,我们需要下载并准备数据集。在这个案例中,我们使用的是来自 ImageNet 的狼和狗的图像数据集。

python 复制代码
from download import download
dataset_url = "https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/intermediate/Canidae_data.zip"
download(dataset_url, "./datasets-Canidae", kind="zip", replace=True)

加载和增强数据集

使用 MindSpore 的数据集加载接口ImageFolderDataset来加载数据,并进行一些图像增强操作,如随机裁剪、水平翻转等。

python 复制代码
import mindspore.dataset as ds
import mindspore.dataset.vision.c_transforms as vision

def create_dataset_canidae(dataset_path, usage):
    """数据加载"""
    data_set = ds.ImageFolderDataset(dataset_path,
                                     num_parallel_workers=workers,
                                     shuffle=True,)

    # 数据增强操作
    mean = [0.485 * 255, 0.456 * 255, 0.406 * 255]
    std = [0.229 * 255, 0.224 * 255, 0.225 * 255]
    scale = 32

    if usage == "train":
        # Define map operations for training dataset
        trans = [
            vision.RandomCropDecodeResize(size=image_size, scale=(0.08, 1.0), ratio=(0.75, 1.333)),
            vision.RandomHorizontalFlip(prob=0.5),
            vision.Normalize(mean=mean, std=std),
            vision.HWC2CHW()
        ]
    else:
        # Define map operations for inference dataset
        trans = [
            vision.Decode(),
            vision.Resize(image_size + scale),
            vision.CenterCrop(image_size),
            vision.Normalize(mean=mean, std=std),
            vision.HWC2CHW()
        ]

    # other code ...

训练模型&&训练过程

我们选择 ResNet50 作为基础模型,并对其进行调整以适应我们的分类任务。

python 复制代码
def resnet50(num_classes: int = 1000, pretrained: bool = False):
    "ResNet50模型"
    resnet50_url = "https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/models/application/resnet50_224_new.ckpt"
    resnet50_ckpt = "./LoadPretrainedModel/resnet50_224_new.ckpt"
    return _resnet(resnet50_url, ResidualBlock, [3, 4, 6, 3], num_classes,
                pretrained, resnet50_ckpt, 2048)
  • 固定特征进行训练
  • 训练和评估
  • 可视化模型预测

学嘛了,完全是懵懵懂懂的,跑了一篇流程,收获就是知道了计算机视觉 识别图片的 过程,

使用 全卷积化 网络的 深度学习网络模型,来对图片进行分类和识别

相关推荐
一 铭1 小时前
AI领域新趋势:从提示(Prompt)工程到上下文(Context)工程
人工智能·语言模型·大模型·llm·prompt
麻雀无能为力4 小时前
CAU数据挖掘实验 表分析数据插件
人工智能·数据挖掘·中国农业大学
时序之心4 小时前
时空数据挖掘五大革新方向详解篇!
人工智能·数据挖掘·论文·时间序列
.30-06Springfield5 小时前
人工智能概念之七:集成学习思想(Bagging、Boosting、Stacking)
人工智能·算法·机器学习·集成学习
说私域6 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的超级文化符号构建路径研究
人工智能·小程序·开源
永洪科技6 小时前
永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
大数据·人工智能·科技·数据分析·数据可视化·bi
shangyingying_16 小时前
关于小波降噪、小波增强、小波去雾的原理区分
人工智能·深度学习·计算机视觉
weixin_307779137 小时前
Hive集群之间迁移的Linux Shell脚本
大数据·linux·hive·bash·迁移学习
码荼7 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
书玮嘎7 小时前
【WIP】【VLA&VLM——InternVL系列】
人工智能·深度学习