【深度学习】海洋生物数据集,图片分类

文章目录

  • 任务描述
  • 数据收集
  • 数据处理
  • 模型训练
  • 指标评测
  • web app
  • 代码和帮助

任务描述

收集9种以上的海洋生物图片,然后基于深度学习做一个分类模型,训练完成后,分类模型就可以对未知图片进行分类。

在之后随便传一张图片,分类模型就可以推理出这张图片上面的是什么海洋生物。

数据收集

初步搜索,整理清洗,得到了一些图片,一共11370张,是这类类别+每个类别的图片数量:

比目鱼 376
水母 590
海星 512
海牛 542
海狮 759
海蛇 116
海螺 430
海豚 487
海象 1190
海豹 482
海里的螃蟹 501
海鳗 506
海龟 611
澳洲龙虾 545
金枪鱼 178
马林鱼 321
鲑鱼 527
鲨鱼 605
鲸鱼 552
鲸鲨 556
鳐鱼 769
鳗鱼 215

数据处理

所执行的数据处理过程主要包括以下几个步骤:

  1. 数据预处理

    • 随机大小裁剪:使用transforms.RandomResizedCrop(224),这个转换对图像进行随机大小和宽高比裁剪,裁剪后的图像大小为224x224像素。这样做可以提供缩放和剪裁的数据增强,并适应预期的神经网络输入尺寸。
    • 随机水平翻转:通过transforms.RandomHorizontalFlip()对图像执行随机的水平翻转,作为一种数据增强技术,使模型能够学习到水平翻转下的图像特征,增强泛化能力。
    • 类型转换transforms.ToTensor()转换将PIL图像或NumPy ndarray转换为FloatTensor,并将图像的像素值从[0,255]范围缩放到[0.0,1.0]范围。
    • 标准化transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])使用指定的均值和标准差对图像进行标准化。这些数值通常是ImageNet数据集上预训练模型使用的数值,使得输入分布与训练过程中的分布相匹配。
  2. 数据加载和采样

    • 使用ImageFolder从指定的数据集路径dataset_path加载数据。这要求数据集是以文件夹方式组织的,每个类别一个文件夹。
    • ImbalancedDatasetSampler处理数据采样,旨在从不平衡的数据集中为每个批次采样,以确保在训练期间各类被公平地表示。
    • DataLoader创建一个数据加载器,用于迭代提供数据,设置批量大小为64,使用了8个工作线程(num_workers)来并行加载数据。
  3. 数据集类别信息

    • 打印出image_datasets.classes,这显示了所有类别的列表,即每个标签对应的类名。

模型训练

模型训练过程遵循以下几个关键步骤:

  1. 模型初始化

    • 使用预训练的EfficientNet B0作为基础模型,并在此基础上,通过自定义MyEfficientNet类来适应特定的类别数(本例中为22类)。在该类中,原始EfficientNet B0的分类器被替换为一个新的线性层,以匹配目标任务的类别数。
    • 模型使用预训练权重初始化,除了新的分类器层。这有助于加速训练并提高最终模型的性能,因为预训练模型已经学习了从大规模数据集(如ImageNet)提取有用特征的能力。
  2. 设置设备

    • 根据系统是否支持CUDA,自动选择使用GPU (cuda:0) 还是CPU进行训练。
  3. 损失函数和优化器

    • 采用交叉熵损失(CrossEntropyLoss)作为损失函数,这是多分类问题常用的损失函数。
    • 使用带有学习率0.001的Adam优化器来更新模型的权重。
  4. 迭代训练

    • 模型在给定的迭代次数(num_epochs)内进行训练。每个epoch都包括一次对整个训练集的遍历。
    • 在每次迭代中,将模型设置为训练模式。然后,通过DataLoader加载小批量数据(inputs, labels),并执行以下步骤:
      a. 将数据迁移到相应的设备(GPU或CPU)。
      b. 在前向传递开始之前,清除之前迭代计算的梯度。
      c. 执行前向传播,计算模型的输出。
      d. 根据模型输出和真实标签计算损失。
      e. 执行反向传播,计算损失对模型参数的梯度。
      f. 更新模型参数。
    • 每个epoch结束时,计算并打印该epoch的平均损失。
  5. 模型保存

    • 在每个epoch的训练后,将模型的当前状态保存到磁盘上。这使得可以在之后加载训练好的模型进行推理或继续训练。
  6. 性能评估

    • 经过训练阶段后,模型切换到评估模式,以进行性能评估。
    • 评估过程中不更新模型参数,并使用与训练相同的数据进行验证。
    • 计算并打印模型在验证集上的准确率,这有助于监测模型在未见过的数据上的泛化能力。
  7. 记录和分析

    • 记录每个epoch训练的损失和验证准确率,方便后续分析模型训练过程中的性能变化。

通过上述步骤,模型逐渐学习从图像数据中提取有用的特征,并准确分类图像。每个epoch的训练和验证过程都旨在评估模型的性能和泛化能力,同时通过反复迭代优化,不断提高模型的准确率。

指标评测

训练30轮,损失数值一直减少:
在这里插入图片描述
训练30轮,准确度一直提升:

在这里插入图片描述

最终结果:

Epoch 30/30, Loss: 0.2644
Validation Acc: 0.9302

web app

请注意,我们只是用了22个类别,没有其他类别,所以测试需要用22个类别以内的图片,不能传无关的图,因为模型没见过无关的图:

比目鱼 376
水母 590
海星 512
海牛 542
海狮 759
海蛇 116
海螺 430
海豚 487
海象 1190
海豹 482
海里的螃蟹 501
海鳗 506
海龟 611
澳洲龙虾 545
金枪鱼 178
马林鱼 321
鲑鱼 527
鲨鱼 605
鲸鱼 552
鲸鲨 556
鳐鱼 769
鳗鱼 215

打开网页后,可以点击这里上传图片,然后点击提交,等待片刻,即可看到模型的推理结果。在最下方,也有示例图片,也可以点击某张示例图片后,就点击提交。
在这里插入图片描述

代码和帮助

完整代码:
在这里插入图片描述
完整数据集:
在这里插入图片描述

下载:

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《乡土中国》中国基层传统社会里的一种体系,支配着社会生活的各方面 - 三余书屋 3ysw.net

乡土中国 大家好,今天我们要解读的是费孝通先生的经典著作《乡土中国》。这本书的中文版大约有10万字,我将用30分钟左右的时间为你解读书中的精髓。为什么说中国的根基在于乡土社会?我们应该从哪些方面来理解乡土社会的特征及其重要性&#…

解压缩软件哪个好用 Mac免费解压软件哪个好 解压软件推荐 beeterzip免费下载

解压缩软件在Mac办公中是必不可少的,不仅能够节省时间和内存,更能提升传输效率。虽然Mac自带的解压缩软件归档实用工具可以对zip文件进行解压,但是对于他格式文件就无能为力了。 因此,想要满足多类型文件解压缩需求,可…

HarmonyOS4.0 ArkTS基本语法

一、项目目录结构 二、HelloWorld 当我们创建一个新的page时,IDE会给我们生成一个HelloWorld的模板 新建page 开启预览器 三、ArkTS基本组成 装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中Entry、Component…

centos7部分桥接网络ping不通解决方案

更改网络模式 将部分网络模式改为NAT 查看NAT之后的ip地址 我们可以在虚拟网络配置里面看 或者在我们的cmd里面 输入 ipconfig,进行查看 更改网络配置文件 就是去寻找新的地址,然后,这里注意我们 网关和我们DNS地址一样 网关和我们DNS…

自动驾驶_交通标志识别:各目标检测算法评测

自动驾驶|交通标志识别:各目标检测算法评测 论文题目:Evaluation of Deep Neural Networks for traffic sign detection systems 开源代码:https://github.com/aarcosg/traffic-sign-detection 附赠自动驾驶学习资料和量产经验:…

【C语言自定义类型之----结构体,联合体和枚举】

一.结构体 1.结构体类型的声明 srruct tag {nemer-list;//成员列表 }varible-list;//变量列表结构体在声明的时候,可以不完全声明。 例如:描述一个学生 struct stu {char name[20];//名字int age;//年龄char sex[20];//性别 };//分号不能省略2.结构体…

44.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色创建服务器反馈数据包分析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 现在的代码都是依据数据包来写的,如果看不懂代码,就说明没看懂数据包…

瑞_Redis_商户查询缓存_添加Redis缓存缓存更新策略

文章目录 项目介绍1 短信登录2 商户查询缓存2.1 什么是缓存2.1.1 缓存的应用场景2.1.2 为什么要使用缓存2.1.3 Web应用中缓存的作用2.1.4 Web应用中缓存的成本 2.2 添加Redis缓存2.2.1 背景2.2.2 缓存模型和思路2.2.3 代码实现2.2.4 测试附:IDEA控制台输出自动换行设…

C# 分布式自增ID算法snowflake(雪花算法)

文章目录 1. 概述2. 结构3. 代码3.1 IdWorker.cs3.2 IdWorkerTest.cs (测试) 1. 概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长&#xff0c…

【realme x2手机解锁BootLoader(简称BL)】

realme手机解锁常识 https://www.realme.com/cn/support/kw/doc/2031665 realme手机解锁支持型号 https://www.realmebbs.com/post-details/1275426081138028544 realme x2手机解锁实践 参考:https://www.realmebbs.com/post-details/1255473809142591488 1 下载apk…

【研发管理】产品经理知识体系-数字化战略

导读: 数字化战略对于企业的长期发展具有重要意义。实施数字化战略需要企业从多个方面进行数字化转型和优化,以提高效率和创新能力,并实现长期竞争力和增长。 目录 1、定义 2、数字化战略必要性 3、数字战略框架 4、数字化转型对产品和服务设计的影响…

虚幻UE5数字孪生蓝图开发教程

一、背景 这几年,智慧城市/智慧交通/智慧水利等飞速发展,骑士特意为大家做了一个这块的学习路线。 二、这是学习大纲 1.给虚幻UE5初学者准备的智慧城市/数字孪生蓝图开发教程 https://www.bilibili.com/video/BV1894y1u78G 2.UE5数字孪生蓝图开发教学…

【微信小程序】【小程序样式加载不出来】

微信小程序配置sass 第一步:找配置文件 在项目中找到 project.config.json文件,在setting属性中添加 useCompilerPlugins属性,值为sass即可,若是 less,将数组里面的值改为less即可 "useCompilerPlugins": ["sas…

PyTorch之计算模型推理时间

一、参考资料 如何测试模型的推理速度 Pytorch 测试模型的推理速度 二、计算PyTorch模型推理时间 1. 计算CPU推理时间 import torch import torchvision import time import tqdm from torchsummary import summarydef calcCPUTime():model torchvision.models.resnet18()…

基于微信小程序的外卖管理系统的设计与实现(论文+源码)_kaic

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

【JavaEE】浅谈线程(一)

线程 前言线程的由来线程是什么线程的属性线程更高效的原因举个例子(线程便利性的体现) 多线程代码线程并发执行的代码jconsole(观测多线程) 线程的调度问题创建线程的几种方法1)通过继承Thread 重写run2)使用Runnable接口 重写ru…

金陵科技学院软件工程学院软件工程专业

感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦~~ 感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦~~ 感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦~~ 感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦…

递归实现组合型枚举(acwing)

题目描述: 从 1∼n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。 输入格式: 两个整数 n,m ,在同一行用空格隔开。 输出格式: 按照从小到大的顺序输出所有方案,每行 1 个。 首先,同一行内的数…

如何保护大模型API安全

大模型的崛起正在改变着我们对机器学习和人工智能的理解,它们不仅提供了令人惊叹的预测和分析能力,还在各行各业的应用中发挥着重要作用。通过提供 API,用户无需了解底层实现细节,使大型模型能够更好地与用户和应用程序进行交互&a…

【25考研】:四川大学计算机学院24届874考研考情分析

去年的考情分析也是我做的, 今年就在去年的基础上做了。保持形式不变,更改数据。 21考情: 万载月寒肠断客:四川大学计算机学院21届CS考研考情分析 22考情: 懒羊羊:四川大学计算机学院2022考研考情分析 2…