基于 GhostNet 不同版本的图像识别

2024-06-05 04:12

本文主要是介绍基于 GhostNet 不同版本的图像识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、介绍

GhostNet 文章地址:[1911.11907] GhostNet: More Features from Cheap Operations (arxiv.org)

主要思想:

特征提取的时候,很多特征图是具有高度相似性的,也就是说存在许多的冗余特征图。

从另一个角度想,利用一系列的线性变化,以很小的代价生成许多能从原始特征发掘所需信息的“幻影”特征图呢

冗余的特征图是非常有必要的,可以保证网络对输入数据的理解更为全面。

ghostnet 的版本,本人在github上搜到了三个版本,这里干脆一起实现了

文末有项目下载

2、代码解释

代码目录如下:

  • 红色框为ghostnet 的主干网络
  • 蓝色框为数据集,数据保存在不同目录中,如果有测试集的话,也放在这里即可
  • 绿色框为训练生成的结果

2.1 训练脚本 train

传入参数如下:

网络的输出个数,代码会计算数据集,然后自动设定!

都是很常规的参数,优化器可供选择的有SGD、Adam,学习率采用自适应衰减

2.2 评估脚本 val

这里评估的代码从训练中独立出来,参数如下:

  • pth 传入测试集。没有的话,传入验证集也可以
  • 数据集的mean和std在训练日志log文件中可以找到

2.3 训练过程和结果

运行train脚本如下:

评估脚本如下:这里采用的评估指标是混淆矩阵、F1分数等等

训练结果:

weights 下有最好的权重和最后的权重文件

训练和验证集的loss、acc曲线

注意:这里val 比 train 的acc高,因为数据划分不平衡所致,val集数量加多一点即可

学习率衰减:

训练日志:这里有mean和std

 

数据预处理的可视化:

 

3、使用

项目地址: 基于ghostNet网络对将香蕉5种不同阶段成熟度的分类【包含数据集+代码+训练结果】资源-CSDN文库

配置GPU的torch训练,参考:Pytorch 配置 GPU 环境_pytorch gpu-CSDN博客

新建虚拟环境:conda create -n ghost python=3.8

激活虚拟环境:conda activate ghost

安装库文件即可:pip install -r requirements.txt

训练自己数据集,将数据集摆放好即可

这篇关于基于 GhostNet 不同版本的图像识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1032042

相关文章

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Linux升级或者切换python版本实现方式

《Linux升级或者切换python版本实现方式》本文介绍在Ubuntu/Debian系统升级Python至3.11或更高版本的方法,通过查看版本列表并选择新版本进行全局修改,需注意自动与手动模式的选... 目录升级系统python版本 (适用于全局修改)对于Ubuntu/Debian系统安装后,验证Pyt

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地