第11章:根据 ShuffleNet V2 迁移学习医学图像分类任务:甲状腺结节检测
目录
1. Shufflenet V2
2. 甲状腺结节检测
2.1 数据集
2.2 训练参数
2.3 训练结果
2.4 可视化网页推理
3. 下载
1. Shufflenet V2
shufflenet v2 论文中提出衡量轻量级网络的性能不能仅仅依靠FLOPs计算量,还应该多方面的考虑,例如MAC(memory access cost),还应该比较在不同的硬件设备下的性能等等

因此,基于多方面的考虑。shufflenet v2 通过大量的实验和测试总结了轻量化网络的四个准则,然后根据这四条准则搭建了shufflenet v2网络

- 输入输出通道个数相同的时候,内存访问量MAC最小
- 分组卷积的分组数过大会增加MAC
- 碎片化操作会并行加速并不友好
- element-wise 操作带来的内存和耗时不可以忽略
每条原则的具体解释参考:ShuffleNet V2 迁移学习对花数据集训练_shufflenetv2进行预训练的效果-CSDN博客

2. 甲状腺结节检测
Shufflenet V2 实现的model部分代码如下面所示,这里如果采用官方预训练权重的话,会自动导入官方提供的最新版本的权重

这里提供了4种网络结构,分别对应output channels参数

2.1 数据集
数据集文件如下:


标签如下:
{"0": "0","1": "1"
}
其中,训练集的总数为5103,验证集的总数为2185

2.2 训练参数
训练的参数如下:
parser.add_argument("--model", default='x0_5', type=str,help='x0_5,x1_0,x1_5,x2_0')parser.add_argument("--pretrained", default=True, type=bool) # 采用官方权重parser.add_argument("--freeze_layers", default=True, type=bool) # 冻结权重parser.add_argument("--batch-size", default=8, type=int)parser.add_argument("--epochs", default=10, type=int)parser.add_argument("--optim", default='SGD', type=str,help='SGD,Adam,AdamW') # 优化器选择parser.add_argument('--lr', default=0.01, type=float)parser.add_argument('--lrf',default=0.001,type=float) # 最终学习率 = lr * lrfparser.add_argument('--save_ret', default='runs', type=str) # 保存结果parser.add_argument('--data_train',default='./data/train',type=str) # 训练集路径parser.add_argument('--data_val',default='./data/val',type=str) # 测试集路径
需要注意的是网络分类的个数不需要指定,摆放好数据集后,代码会根据数据集自动生成!
网络模型信息如下:
{"train parameters": {"model": "x0_5","pretrained": true,"freeze_layers": true,"batch_size": 8,"epochs": 10,"optim": "SGD","lr": 0.01,"lrf": 0.001,"save_folder": "runs"},"dataset": {"trainset number": 5103,"valset number": 2185,"number classes": 2},"model": {"total parameters": 343842.0,"train parameters": 2050,"flops": 43550112.0},
2.3 训练结果
所有的结果都保存在 save_ret 目录下,这里是 runs :

weights 下有最好和最后的权重,在训练完成后控制台会打印最好的epoch

这里只展示部分结果:可以看到网络没有完全收敛,增大epoch会得到更好的效果


训练日志:
"epoch:9": {"train info": {"accuracy": 0.6607877718975881,"0": {"Precision": 0.6989,"Recall": 0.4334,"Specificity": 0.8471,"F1 score": 0.535},"1": {"Precision": 0.646,"Recall": 0.8471,"Specificity": 0.4334,"F1 score": 0.733},"mean precision": 0.67245,"mean recall": 0.64025,"mean specificity": 0.64025,"mean f1 score": 0.634},"valid info": {"accuracy": 0.5711670480523059,"0": {"Precision": 0.5455,"Recall": 0.2866,"Specificity": 0.8043,"F1 score": 0.3758},"1": {"Precision": 0.5791,"Recall": 0.8043,"Specificity": 0.2866,"F1 score": 0.6734},"mean precision": 0.5623,"mean recall": 0.54545,"mean specificity": 0.54545,"mean f1 score": 0.5246}}
训练集和测试集的混淆矩阵:


2.4 可视化网页推理
推理是指没有标签,只有图片数据的情况下对数据的预测,这里使用了网页推理
值得注意的是,如果训练了自己的数据集,需要对infer脚本进行更改,如下:

- 都需要绝对路径,这个是代码自动生成的类别文件,在runs下
- IMAGE_PATH 是默认展示的demo图片位置
在控制台输入下面命令即可:
streamlit run D:\project\shufflenetV2\infer.py

3. 下载
关于本项目代码和数据集、训练结果的下载:
计算机视觉项目:计算机视觉项目:ShufflenetV2模型实现的图像识别项目:甲状腺结节识别资源-CSDN文库

关于Ai 深度学习图像识别、医学图像分割改进系列:AI 改进系列_听风吹等浪起的博客-CSDN博客
神经网络改进完整实战项目:改进系列_听风吹等浪起的博客-CSDN博客
相关文章:
第11章:根据 ShuffleNet V2 迁移学习医学图像分类任务:甲状腺结节检测
目录 1. Shufflenet V2 2. 甲状腺结节检测 2.1 数据集 2.2 训练参数 2.3 训练结果 2.4 可视化网页推理 3. 下载 1. Shufflenet V2 shufflenet v2 论文中提出衡量轻量级网络的性能不能仅仅依靠FLOPs计算量,还应该多方面的考虑,例如MAC(memory acc…...
deepseek+vscode自动化测试脚本生成
近几日Deepseek大火,我这里也尝试了一下,确实很强。而目前vscode的AI toolkit插件也已经集成了deepseek R1,这里就介绍下在vscode中利用deepseek帮助我们完成自动化测试脚本的实践分享 安装AI ToolKit并启用Deepseek 微软官方提供了一个针对AI辅助的插件,也就是 AI Toolk…...
深入理解Flexbox:弹性盒子布局详解
深入理解Flexbox:弹性盒子布局详解 一、Flexbox 的基本概念二、Flexbox 的核心属性1. display: flex2. flex-direction3. flex-wrap4. justify-content5. align-items6. flex 三、Flexbox 的实际应用1. 创建响应式三列布局2. 实现垂直居中3. 复杂布局的嵌套使用 四、…...
android Camera 的进化
引言 Android 的camera 发展经历了3个阶段 : camera1 -》camera2 -》cameraX。 正文 Camera1 Camera1 的开发中,打开相机,设置参数的过程是同步的,就跟用户实际使用camera的操作步骤一样。但是如果有耗时情况发生时,会…...
仿真设计|基于51单片机的氨气及温湿度检测报警
目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现(protues8.7) 程序(Keil5) 全部内容 资料获取 具体实现功能 (1)LCD1602液晶第一行显示当前的氨气值,第二行显示当前的温度…...
关于EDGE IMPULSE的使用与适配,包含如何学习部署在对应的板子
创建好账号后,可以打开主页新建一个工程 跳出这个选no就可以不用标label直接整张图训练,要更改可以去dashboard》labeling method改 然后在这个工程中选择添加自己的照片等数据,他支持这些格式的数据我们现在一般是用在openmv opencv yolo 等…...
【Python蓝桥杯备赛宝典】
文章目录 一、基础数据结构1.1 链表1.2 队列1.3 栈1.4 二叉树1.5 堆二、基本算法2.1 算法复杂度2.2 尺取法2.3 二分法2.4 三分法2.5 倍增法和ST算法2.6 前缀和与差分2.7 离散化2.8 排序与排列2.9 分治法2.10贪心法1.接水时间最短问题2.糖果数量有限问题3.分发时间最短问题4.采摘…...
数据结构 前缀中缀后缀
目录 前言 一,前缀中缀后缀的基本概念 二,前缀与后缀表达式 三,使用栈实现后缀 四,由中缀到后缀 总结 前言 这里学习前缀中缀后缀为我们学习树和图做准备,这个主题主要是对于算术和逻辑表达式求值,这…...
【cocos官方案例改】跳跃牢猫
自制游戏【跳跃牢烟】 案例解析 案例需求,点击鼠标控制白块左右。 资源管理器部分 在body创建一个2d精灵用作玩家。 在地下在创建一个2d精灵用来代表地面。 在body下挂在脚本。 全部脚本如下 (在二次进行复刻时候,发现把代码复制上去无法…...
基于Python的药物相互作用预测模型AI构建与优化(上.文字部分)
一、引言 1.1 研究背景与意义 在临床用药过程中,药物相互作用(Drug - Drug Interaction, DDI)是一个不可忽视的重要问题。当患者同时服用两种或两种以上药物时,药物之间可能会发生相互作用,从而改变药物的疗效、增加不良反应的发生风险,甚至危及患者的生命安全。例如,…...
Day51:type()函数
在 Python 中,type() 是一个内置函数,用于返回对象的类型。它可以用于检查变量的类型,也可以用于动态创建新的类型。今天,我们将深入了解 type() 函数的使用方法。 1. 使用 type() 获取变量的类型 最常见的使用方式是将一个对象…...
因果推断与机器学习—用机器学习解决因果推断问题
Judea Pearl 将当前备受瞩目的机器学习研究戏谑地称为“仅限于曲线拟合”,然而,曲线拟合的实现绝非易事。机器学习模型在图像识别、语音识别、自然语言处理、蛋白质分子结构预测以及搜索推荐等多个领域均展现出显著的应用效果。 在因果推断任务中,在完成因果效应识别之后,需…...
计算机网络一点事(21)
第四章 网络层 功能:服务传输层,封装ip数据报(主机到主机) IP地址以32b表示,以8b为一组记十进制数 异构网络互连:网络结构,主机类型不同 路由器相互配合出IP数据报生成表,根据表…...
springboot使用rabbitmq
使用springboot创建rabbitMQ的链接。 整个项目结构如下: 1.maven依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>3.4.1</version> </dependency>application.y…...
【微服务与分布式实践】探索 Eureka
服务注册中心 心跳检测机制:剔除失效服务自我保护机制 统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况,Eureka Server会将当前的实例注册信息保护起来,让这些实例不会过期。当节点在短时间内丢失过多的心跳时&am…...
Day48:获取字典键的值
在 Python 中,字典是一种无序的集合类型,它以键-值对的形式存储数据。字典的每个元素都有一个唯一的键,并且每个键都对应一个值。获取字典中的值是字典操作的常见任务,今天我们将学习如何从字典中获取键对应的值。 1. 使用方括号…...
Java锁自定义实现到aqs的理解
专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解锁,能自定义实现锁通过自定义锁的实现复习Thread和Object的相关方法开始尝试理解Aqs, 这样后续基于Aqs的的各种实现将能更好的理解 目录 锁的…...
仿真设计|基于51单片机的温度与烟雾报警系统
目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现(protues8.7) 程序(Keil5) 全部内容 资料获取 具体实现功能 (1)LCD1602实时监测及显示温度值和烟雾浓度值; (2…...
文件读写操作
写入文本文件 #include <iostream> #include <fstream>//ofstream类需要包含的头文件 using namespace std;void test01() {//1、包含头文件 fstream//2、创建流对象ofstream fout;/*3、指定打开方式:1.ios::out、ios::trunc 清除文件内容后打开2.ios:…...
【后端开发】字节跳动青训营Cloudwego脚手架
Cloudwego脚手架使用 cwgo脚手架 cwgo脚手架 安装的命令: GOPROXYhttps://goproxy.cn/,direct go install github.com/cloudwego/cwgolatest依赖thriftgo的安装: go install github.com/cloudwego/thriftgolatest编辑echo.thrift文件用于生成项目&…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
