垃圾分类对比分析实验过程及结果
2022-05-31
垃圾分类对比分析实验过程及结果
设计了三个实验进行对比实验分析。
分别是:
- 实验一:使用金字塔网络PyramidNet实现垃圾分类实验;
- 实验二:使用ECA-ResNet50系列网络进行垃圾分类实验;
- 实验三:使用SRM,GE,SE和ResNet进行垃圾分类实验;
均采用垃圾60分类数据集进行对比验证,其中还采用垃圾60分类0等数据集进行基线验证。实验均采用VisualDL进行训练和验证以及测试过程中的acc和loss的可视化。
结论:
实验一:
-
- 在性能超越resnet50的情况下,模型反而具有少的多的参数量。
实验二:
-
- 添加了ECA模块后,原有的ResNet网络的性能有了可观的提高。
-
- Paddle自带的SE网络性能很好,可见Paddle对此做了很多优化。
-
- 用ECA模块替换SE网络中的SE模块后,虽然最高的验证准确率略低一点,但是从图中可以看出不管是准确率还是loss都在整体上 优于SE网络。
-
- ECA-NET可以认为是在SE网络上的改进网络,只考虑了通道注意力,但却突出的体现了简约但不简单的优点。
实验三:
-
- SRM-NET虽然是提取风格权重,但本质是一种注意力机制,所以可以用在通用计算机视觉任务上,比如分类。
-
- 作为含有注意力机制的一种卷积网络结构,SRM-NET可以作为一种backbone的选择用来替代ResNet。
-
- 本实验还比较了SRM和其它两种注意力网络GE,SE及原生ResNet的训练验证过程,可以看出在分类任务上,SRM也是其中表现最好的一种网络。
具体实验
实验一:使用金字塔网络PyramidNet实现垃圾分类实验
import os
import shutil
from config import config_parameters
train_dir = config_parameters['train_image_dir']
eval_dir = config_parameters['eval_image_dir']
paths = os.listdir('work/dataset')
if not os.path.exists(train_dir):
os.mkdir(train_dir)
if not os.path.exists(eval_dir):
os.mkdir(eval_dir)
for path in paths:
imgs_dir = os.listdir(os.path.join('work/dataset', path))
target_train_dir = os.path.join(train_dir,path)
target_eval_dir = os.path.join(eval_dir,path)
if not os.path.exists(target_train_dir):
os.mkdir(target_train_dir)
if not os.path.exists(target_eval_dir):
os.mkdir(target_eval_dir)
for i in range(len(imgs_dir)):
if ' ' in imgs_dir[i]:
new_name = imgs_dir[i].replace(' ', '_')
else:
new_name = imgs_dir[i]
target_train_path = os.path.join(target_train_dir, new_name)
target_eval_path = os.path.join(target_eval_dir, new_name)
if i % 8 == 0:
shutil.copyfile(os.path.join(os.path.join('work/dataset', path), imgs_dir[i]), target_eval_path)
else:
shutil.copyfile(os.path.join(os.path.join('work/dataset', path), imgs_dir[i]), target_train_path)
- 使用PyramidNet_bottleneck对垃圾60分类的训练验证图示
- 使用PyramidNet_bottleneck对垃圾60分类的训练验证图示
- 使用PyramidNet的训练验证图示
- 使用resnet50网络进行垃圾分类的训练并验证
- 使用PyramidNet和ResNet的训练验证比较图示
使用PyramidNet-32(alpha=300 without bottleneck)和PyramidNet-32(alpha=300 with bottleneck)相较于resnet50模型具有更高的准确率,却具有少的多的参数。其中,resnet50的模型大小有141.5M,而PyramidNet-32(alpha=300 without bottleneck)的模型大小有72.6M,PyramidNet-32(alpha=300 with bottleneck)的模型大小仅有48.9M。
- 实验总结:
本实验使用金字塔网络对动物数据集进行了训练验证。从本实验可以看出在性能超越resnet50的情况下,模型反而具有少的多的参数量。
实验二:使用ECA-ResNet50系列网络进行垃圾分类
- 在ResNet50网络上添加ECA模块:
- 经过优化的SE网络SE_ResNet50_vd:
- 在上面SE网络的基础上,用ECA模块替换SE模块,使用ECA-ResNet50_vd网络:
- ECA-ResNet50系列网络比较:
通过以上试验,可以看出:
- 添加了ECA模块后,原有的ResNet网络的性能有了可观的提高。
- Paddle自带的SE网络性能很好,可见Paddle对此做了很多优化。
- 用ECA模块替换SE网络中的SE模块后,虽然最高的验证准确率略低一点,但是从图中可以看出不管是准确率还是loss都在整体上 优于SE网络。
- 在模型大小方面,生成的模型大小比较可以看出ECA模块有着最高的性价比。
- 实验总结:
- 本实验对含有注意力机制的卷积网络ECA-NET进行了复现。
- ECA-NET可以认为是在SE网络上的改进网络,只考虑了通道注意力,但却突出的体现了简约但不简单的优点。
实验三:使用SRM,GE,SE和ResNet进行垃圾分类
- 使用SRM-ResNet50网络进行垃圾分类的训练并验证:
- 使用GE-ResNet50网络进行垃圾分类的训练并验证:
- 使用SE-ResNet50网络进行垃圾分类的训练并验证:
- 使用SRM,GE,SE和ResNet的验证比较实验比较:
- 实验总结
- 本实验对含有注意力机制的风格校正卷积网络SRM-NET进行了复现,并在垃圾分类数据集上进行了训练和验证。
- SRM-NET虽然是提取风格权重,但本质是一种注意力机制,所以可以用在通用计算机视觉任务上,比如分类。
- 作为含有注意力机制的一种卷积网络结构,SRM-NET可以作为一种backbone的选择用来替代ResNet。
- 本实验还比较了SRM和其它两种注意力网络GE,SE及原生ResNet的训练验证过程,可以看出在分类任务上,SRM也是其中表现最好的一种网络。