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

server/2024/10/17 7:44:13/

目录

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.ppmy.cn/server/132055.html

相关文章

【前端】Bootstrap:栅格系统 (Grid System)

Bootstrap的栅格系统是该框架的核心部分之一,能够让开发者轻松创建响应式网页布局,适配各种屏幕尺寸和设备。栅格系统通过将页面划分为12列的布局结构,开发者可以根据内容的重要性和设计需求灵活控制元素的宽度和排列。 在这篇文章中&#x…

Java+Jenkins实现自动化打包部署流程

目录 jenkins简介 前置依赖 1. jdk17 2.apache maven 3.8.6 3.git 4.docker 5.下载jenkins 启动配置jenkins 优缺点对比 Jenkins 的优点: Jenkins 的缺点: jenkins简介 Jenkins 是一个开源的自动化服务器,可以用于自动化各种任务&…

使用Go语言的gorm框架查询数据库并分页导出到Excel实例

文章目录 基本配置配置文件管理命令行工具: Cobra快速入门基本用法 生成mock数据SQL准备gorm自动生成结构体代码生成mock数据 查询数据导出Excel使用 excelize实现思路完整代码参考 入口文件效果演示分页导出多个Excel文件合并为一个完整的Excel文件 完整代码 基本配置 配置文…

FP7127:降压恒流LED芯片 支持双路调色调光 PWM调光

一、降压恒流LED芯片FP7127 FP7127 是平均电流模式控制的 LED 驱动 IC,具有稳定输出恒流的能力,优秀的负载调整率与高精度的电流控制。不用额外增加外部补偿元件,简化 PCB 板设计。输出的LED电流精度为 2%。 如果你想进行PWM数位调光&#…

记录Android.bp里如何添加jar/aar文件

在项目libs目录下放入需要的jar/aar 文件,并新建Android.bp文件 android_library_import {name: "libaums_aar",aars: ["libaums-0.6.0.aar"],}java_import {name: "gson_jar",jars: ["gson-2.11.0.jar"]} 注意: aar 文件…

【Rust版从头写CAD】 前言

文章目录 前言 前言 Rust是一种系统级编程语言,注重安全性、性能和并发性,适用于开发高效、安全和可靠的应用程序,非常适合于CAD领域开发。 然而,要实现一个完整的CAD(计算机辅助设计)软件是一个复杂且耗时…

prompt learning

prompt learning 对于CLIP(如上图所示)而言,对其prompt构造的更改就是在zero shot应用到下游任务的时候对其输入的label text进行一定的更改,比如将“A photo of a{obj}”改为“[V1][V2]…[Vn][Class]”这样可学习的V1-Vn的token…

2024年网络安全进阶手册:黑客技术自学路线

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、…