昇思25天学习打卡营第22天|ResNet50图像分类

上回说到RESNET50做迁移学习,今天看一下他在图片分类上面的表现。图像分类是最基础的计算机视觉应用,属于有监督学习类别,先喂一堆猫的照片告诉他这是猫,再喂一堆狗的图片告诉他这是狗。

CIFAR-10数据集共有60000张32*32的彩色图像,分为10个类别,每类有6000张图,数据集一共有50000张训练图片和10000张评估图片。数据量还是很大的。
在这里插入图片描述
这里是一些数据集的样本图。虽然包浆比较严重,但是还是可以分辨出来的。各种类型的图片。
在这里插入图片描述
在这里插入图片描述
ResNet网络层结构如下图所示,以

  1. 输入彩色图像 224×224
  2. 首先通过数量64,卷积核大小为 7×7
  3. stride为2的卷积层conv1,该层输出图片大小为 112×112
  4. 输出channel为64;然后通过一个 3×3的最大下采样池化层,该层输出图片大小为 56×56
  5. 输出channel为64;再堆叠4个残差网络块(conv2_x、conv3_x、conv4_x和conv5_x),此时输出图片大小为 7×7
  6. 输出channel为2048;最后通过一个平均池化层、全连接层和softmax,得到分类概率。
import matplotlib.pyplot as plt


def visualize_model(best_ckpt_path, dataset_val):
    num_class = 10  # 对狼和狗图像进行二分类
    net = resnet50(num_class)
    # 加载模型参数
    param_dict = ms.load_checkpoint(best_ckpt_path)
    ms.load_param_into_net(net, param_dict)
    # 加载验证集的数据进行验证
    data = next(dataset_val.create_dict_iterator())
    images = data["image"]
    labels = data["label"]
    # 预测图像类别
    output = net(data['image'])
    pred = np.argmax(output.asnumpy(), axis=1)

    # 图像分类
    classes = []

    with open(data_dir + "/batches.meta.txt", "r") as f:
        for line in f:
            line = line.rstrip()
            if line:
                classes.append(line)

    # 显示图像及图像的预测值
    plt.figure()
    for i in range(6):
        plt.subplot(2, 3, i + 1)
        # 若预测正确,显示为蓝色;若预测错误,显示为红色
        color = 'blue' if pred[i] == labels.asnumpy()[i] else 'red'
        plt.title('predict:{}'.format(classes[pred[i]]), color=color)
        picture_show = np.transpose(images.asnumpy()[i], (1, 2, 0))
        mean = np.array([0.4914, 0.4822, 0.4465])
        std = np.array([0.2023, 0.1994, 0.2010])
        picture_show = std * picture_show + mean
        picture_show = np.clip(picture_show, 0, 1)
        plt.imshow(picture_show)
        plt.axis('off')

    plt.show()


# 使用测试数据集进行验证
visualize_model(best_ckpt_path=best_ckpt_path, dataset_val=dataset_val)

在这里插入图片描述
可以看到 预测的准确率还是不错的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/799510.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ARDUINO最新pinMode()管脚设置方法(24年7月)

Arduino管脚配置 ESP32 Arduino管脚配置测试正常。 pinMode() [数字 I/O] 描述 将指定的引脚配置为输入或输出。有关引脚功能的详细信息,请参阅数字引脚部分。 可以使用模式INPUT_PULLUP使能内部上拉电阻。此外,INPUT模式明…

涨知识了!AI绘画变现的几个思路!

风口!风口!风口! 终于不用再抱怨 “我们这代人啊,什么也没赶上” 因为我们现在正处于风口之上! 在当今数字化的时代 AI 绘画正以惊人的速度崛起 并向各行各业渗透 既然阻止不了时代的变化 那就让它为我们所用 …

STM32MP135裸机编程:烧录程序到EMMC的方法

0 前言 STM32MP135支持多种启动方式,包括SD卡、NAND Flash、EMMC等,基于STM32MP135裸机的SD卡烧录操作方法我们之前已经介绍过,现在介绍的STM32MP135烧录到EMMC的方法又和前面烧录到SD卡的操作有所不同。本文将介绍基于STM32MP135&#xff0…

职称论文发表的注意事项有哪些

职称论文发表的注意事项有哪些 其实职称论文并不难,但是对于很多之前没有接触过的朋友来说,如何选择合适期刊,如何投稿以及版面费多少等一概不知。所以我今天就总结下我个人的经验,分享给大家。 一、弄清单位的要求 评职称论文首先…

系统架构师考点--软件工程(上)

大家好。今天我来总结一下软件工程的相关考点。这部分是考试的重点。在上午场客观题、下午场案例题以及下午场论文都有可能考到,在上午场客观题中大约占12-15分左右。 一、软件工程概述 软件开发生命周期 软件定义时期:包括可行性研究和详细需求分析过…

致良知,是一场自我革命、教育、成长

82天 【此亦须你自家求】人言不如自悔之真;致良知就是致自己,是一场自我革命、自我教育、自我成长;真诚的力量,诚于己、信于人、明于事 人言不如自悔之真,生活中我们都希望能够得到高人的指点,但&#xf…

Jmeter常用组件及执行顺序

一 常用组件 1.线程组 Thread Group 线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中,每个线程意味着模拟一个真实用户向服务器发起请求。 在 jmeter 中,线程组组件运行用户设置线程数量、初始化方式等…

git链接远程仓库

【 一 】ssh链接远程仓库 删除git仓库 【 1 】初步使用方法 1、之前把本地代码,以https形式,提交到了远程仓库 # - git remote add origin https://gitee.com/bai-zhitao/lufy.git- 输入用户名密码2、ssh认证,只需要配置一次&#xff…

ARM体系结构和接口技术(四)LED灯实验---②

文章目录 一、特殊功能控制寄存器(一)GPIOx_MODER寄存器(二)GPIOx_OTYPER寄存器(三)GPIOx_OSPEEDR寄存器(四)GPIOx_PUPDR寄存器(五)GPIOx_IDR寄存器&#xff…

在互联网供应链系统可能是永远不会过时的系统

一、前言 在互联网在到人工智能,从基本的门户网站,社交网站,到移动互联网,视频网站,再到现在比较火爆短视频直播和人工智能AI,大模型。互联网的迭代,出现了无数的系统。但是有些系统一直久经不…

第八课:NAT地址转换(NAPT模式)

如何连接互联网? 如何远程管理网络设备? 1.路由怎么写? ip route 0.0.0.0 0.0.0.0 下一跳 0.0.0.0 0.0.0.0代表去往所有目的 2.NAT网络地址转换 PC,手机,在内网,用私网地址(不要钱&#x…

c#中的特性

在C#中,特性(Attributes)是一种向程序元素(如类、方法、属性等)添加元数据的方式。特性可以用来提供关于程序元素的附加信息,这些信息可以在编译时和运行时被访问。 特性主要有以下几个用途: 提…

力扣第九题

回文数 提示: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 代码展示&#…

<Rust>egui部件学习:如何在egui窗口中添加按钮button以及标签label部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统:windows 平台:visual studio code 语言:rust 库:egui、eframe 概述 本文是本专栏的第二篇博…

Zookeeper源码学习

源码下载:https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7.tar.gz 1、持久化源码: Leader和Follower中的数据会在内存和磁盘中各保存一份。所以需要将内存中的数据持久化到磁盘中。 在zookeeper-server\org.apach…

计组_微程序

2024.06.26:计算机组成原理微程序学习笔记 第19节 控制器 9.1 硬布线控制器(408基本不考)9.2 微程序控制器(好好学)9.2.1 微程序(1) 基本概念(2) 控制器的组成(3) 控制器的工作过程 9.2.2 微指令(1) 编码方式&#xff…

验证服务插件:单据保存或审核时进行验证

提交审核的时候,校验 using Kingdee.BOS; using Kingdee.BOS.Core; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Validation; using Kingdee.BOS.Util; using System; using System.ComponentModel;…

【LeetCode:721. 账户合并 + 哈希表 + DFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Linux--线程池(包含日志的解释)

线程系列: Linux–线程的认识(一) Linux–线程的分离、线程库的地址关系的理解、线程的简单封装(二) 线程的互斥:临界资源只能在同一时间被一个线程使用 生产消费模型 信号量 线程池 线程池(Thread Pool)是…

CSS实现超链接标签:鼠标光标为手形、取消下划线、当鼠标悬停时显示下划线

1、鼠标光标为手形 cursor: pointer; 2、显示/取消下划线 text-decoration: none; /* 文本取消下划线 */ text-decoration: underline; /* 文本添加下划线 */ 3、伪类选择器 伪类选择器是 CSS 中已经定义好的选择器,因此程序员不能随意命令。伪类选择器…