目录
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博客