基于resnet网络【系列】多类别图像识别、迁移学习:猫狗分类实战

news2024/11/19 18:33:32

目录

1、前言

2、resnet 猫狗分类实战

2.1 训练

2.2 推理

3、更换数据集训练


1、前言

ResNet(残差网络)是一种深度卷积神经网络架构,广泛用于图像分类任务。它是由微软研究院的研究人员于2015年推出的,以其通过使用残差连接训练非常深的网络的能力而闻名。

ResNet背后的主要思想是解决深度神经网络训练过程中出现的梯度消失问题。当梯度变得太小而无法正确更新网络早期层中的权重时,就会出现这个问题,从而导致性能下降。

ResNet通过引入快捷连接或跳过连接来解决这个问题,这些连接允许网络学习残差映射。这些连接跳过一个或多个层,直接将输入传播到后面的层。这有助于减少梯度消失的影响,并允许网络学习更复杂、更深入的表示。

ResNet架构有不同的版本,如ResNet-18、ResNet-34、ResNet-50等。名称中的数字表示网络的深度,与层数相对应。较深的版本通常具有更好的性能,但需要更多的计算资源进行训练。

ResNet在各种图像分类挑战上取得了最先进的成果,包括ImageNet大规模视觉识别挑战赛(ILSVRC)。它也被广泛应用于其他计算机视觉任务,如对象检测和分割。

其中每一个模块的具体搭建参考之前的 博文,这里不多赘述

2、resnet 猫狗分类实战

为了方便做消融试验,这里将resnet 5个系列的模型复现,并且选择不同的优化器进行对比

项目下载在文末

2.1 训练

这里采用经典的二分类数据集猫、狗图像分类,其中训练集和验证集的数目为:1400、600

经过数据增强、输入网络的数据如下:

这里测试了100个epoch,效果如下:

这里采用了官方的预训练权重, 并且从头训练,导致过拟合

    parser.add_argument("--pretrained", default=True, type=bool)       # 采用官方权重
    parser.add_argument("--freeze_layers", default=True, type=bool)    # 冻结权重

指标曲线如下:

2.2 推理

这里推理脚本默认推理目录下的所有数据

默认需要保证和训练的版本一样,这里的提供两个模型,一个是最好的权重,一个是最后的权重

    parser.add_argument("--model", default='resnet18', type=str, help='resnet 18、34、50、101、152')  # 选择哪一个resnet模型
    parser.add_argument("--weights", default='runs/weights/best.pth', type=str, help='best、last')

推理如下:

3、更换数据集训练

项目下载:基于resnet网络系列实现的迁移学习、图像识别多分类项目:猫狗图像实战资源-CSDN文库

需要下载的库文件如下:【requirements.txt】

matplotlib==3.7.5
numpy==1.24.4
opencv_python==4.10.0.84
Pillow==10.4.0
prettytable==3.11.0
scikit_learn==1.3.2
torch==1.8.2+cu102
torchvision==0.9.2+cu102
tqdm==4.66.5

然后数据集摆放好即可:【里面每个目录都是同一类的图片数据

整个项目目录:

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)

引言 想象一下,只要描述你想要的画面,电脑就能帮你画出来。这在几年前还像是科幻小说里的场景,但随着神经网络和潜在扩散模型(LDM)技术的发展,现在已经成为可能。OpenAI 推出的 DALLE 工具,因其…

vue项目刷新后h5样式失效

vue项目刷新后h5样式失效 今天遇到一个bug,有一个Element的message组件,用它做的一个进度条,它是写在一个页面上,并且是用js控制dom元素的 web端一切正常,h5如果从别的页面跳过来也正常,但是,H…

服装生产管理:SpringBoot框架的高效策略

5 系统的实现 5.1 登录界面的实现 用户要想进入本系统必须进行登录操作,进入对应角色登录界面,在登录界面输入系统账号、登录密码,选择登录类型,点击登录按钮进行登录系统,管理员登录界面展示如图5-1所示&#xff0c…

【STM32开发之寄存器版】(八)-定时器的编码器接口模式

一、前言 1.1 编码器接口原理 编码器模式主要用于检测旋转编码器的转动方向和转动速度。旋转编码器一般输出两路相位相差90度的脉冲信号(称为A相和B相),通过这两路信号,定时器可以判断编码器的旋转方向,并计数转动的脉…

嵌入式学习-线性表Day03-栈

嵌入式学习-线性表Day03-栈 栈 顺序栈 2)入栈 3)出栈 链式栈 栈 什么是栈? 只能在一端进行插入和删除操作的线性表(又称为堆栈),进行插入和删除操作的一端称为栈顶,另一端称为栈底 栈特点: 先进…

儿童(青少年)可以参加哪些含金量高的比赛?

随着素质教育的推进,越来越多的家长和老师开始关注如何培养孩子的综合素质和能力。而参加各类比赛,不仅可以锻炼孩子的思维、动手能力和团队合作精神,还能帮助孩子在学习的过程中找到兴趣点和成就感。尤其是一些含金量高的比赛,不…

什么是静态加载-前端

什么是前端静态加载 在前端开发中,静态加载是一种常见且重要的技术。简单来说,前端静态加载指的是在页面加载时将所需的资源(如HTML、CSS、JavaScript、图片等)一并加载到用户的浏览器中。这种方式有助于提高页面的加载速度和用户…

【宽搜】6. leetcode 513 找树左下角的值

1 题目描述 题目链接&#xff1a;找树左下角的值 2 题目解析 思路&#xff1a; 可以使用 层序遍历&#xff0c; 将每一层的值都存入到一个vector< int> 中&#xff0c;当这一层是最后一层的时候&#xff0c;将vector< int>中的第一个值返回即可。 3 代码 cla…

RemoteView(kotlin)

使用场景&#xff1a;通知栏&桌面部件 自定义通知栏 通知权限申请 manifest配置 <uses-permission android:name"android.permission.POST_NOTIFICATIONS" />权限动态申请 package com.example.kotlinlearn.Common;import android.Manifest; import an…

国产长芯微LDUM8801光耦兼容的单通道隔离式栅极驱动器P2P替代UCC23513 FOD8342 TLP5751成本低,质量更好

描述 LDUM8801是单通道兼容光耦输入的隔离式栅极驱动器&#xff0c;可应用于驱动IGBT、SiC 和 MOSFET。它可以提供5A的峰值拉/灌电流。支持150kV/μs的最小共模瞬态免疫&#xff08;CMTI&#xff09;&#xff0c;确保了系统的鲁棒性。驱动器的最大电源电压为32V。 其与光耦式栅…

【计网】【计网】从零开始学习http协议 ---理解http重定向和请求方法

去光荣地受伤&#xff0c; 去勇敢地痊愈自己。 --- 简嫃 《水问》--- 从零开始学习http协议 1 知识回顾2 认识网络重定向3 http请求方法3.1 http常见请求方法3.2 postman工具进行请求3.3 处理GET和POST参数 1 知识回顾 前面两篇文章中我们学习并实现了http协议下的请求与应…

【LeetCode】每日一题 2024_10_9 找到按位或最接近 K 的子数组(LogTrick、位运算)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动&#xff01; 题目&#xff1a;找到按位或最接近 K 的子数组 代码与解题思路 今天是 2100 的题目&#xff0c;难度略高&#xff0c;不在我的能力范围&#xff0c;推荐题解&#xff1a;两种方法&#xff1a;LogTrick/滑…

设计模式——门面模式 | 外观模式

哈喽&#xff0c;各位盆友们&#xff01;我是你们亲爱的学徒小z&#xff0c;今天给大家分享的文章是设计模式的——门面模式。 文章目录 定义通用类图1.通用结构2.优点3.缺点 使用场景注意事项1.一个子系统可以有多个门面2.门面不参与子系统内的业务逻辑 定义 定义&#xff1a;…

【Flutter】合并多个流Stream

1.说明 无意间发现了一个好用的库rxdart&#xff0c;它为 Dart 的 Stream 添加了额外的功能。 2.功能 &#xff08;1&#xff09;合并多个流Stream 借助Rx.combineLatest2()合并两个流stream1和stream2。 注意&#xff1a;如果dart文件中同时使用了getx&#xff0c;需要隐…

PCL 3D-SIFT关键点检测(Z方向梯度约束

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 SIFT关键点检测 2.1.2 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#…

调用CString::Format接口格式化字符串时产生异常,可能是将当前的CString对象作为参数传给CString::Format接口导致的

最近有人在技术群里问一个关于使用MFC库中的CString类格式化字符串时遇到的问题&#xff0c;有时格式化出来的字符串有问题&#xff08;不是预期的&#xff09;&#xff0c;有时会产生异常崩溃&#xff0c;让我们帮忙分析一下&#xff0c;看看是什么原因导致的。 后来到MSDN上查…

JAVA基础: synchronized 和 lock的区别、synchronized锁机制与升级

1 synchronized 和 lock的区别 synchronized是一个关键字&#xff0c; lock是一个接口&#xff0c;实际使用的是实现类 synchronized通过触发的是系统级别的锁机制&#xff0c; lock是API级别的锁机制 synchronized自动获得锁&#xff0c;自动释放锁。 lock需要通过方法获得锁…

基于SSM的校园教务系统的设计与实现(论文+源码)_kaic

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对校园教务信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…

【含开题报告+文档+PPT+源码】基于SSM框架的民宿酒店预定系统的设计与实现

开题报告 随着人们旅游需求的增加&#xff0c;民宿行业呈现出快速发展的趋势。传统的住宿方式逐渐无法满足人们对个性化、舒适、便捷的需求&#xff0c;而民宿作为一种新型的住宿选择&#xff0c;逐渐受到人们的青睐。民宿的特点是具有独特的风格、便捷的地理位置、相对亲近的…

基于yolov8的版面分析AI能力生产全流程

目录 1.coco数据集 1.1 基本定义 1.2应用场景 1.3 数据结构 2.labelme标注工具 2.1 基本定义 2.2 应用场景 2.3 安装步骤 3. 模型训练 3.1 数据标注 3.2 环境准备 3.3 数据预处理 3.4 模型训练 3.5 模型推理 4.参考链接 1.coco数据集 1.1 基本定…