基于Paddle2.0的样式校正卷积网络SRM
本项目复现2019年论文提出的SRM网络,首次用Paddle2.0实现含风格校正的SRM,在10分类动物数据集(按8:2划分)上实验。对比SRM、GE、SE模块及ResNet50,SRM验证准确率0.8736,优于其他,表明风格校正机制提升分类效果。

项目背景
SRM是2019年arxiv上的一篇论文SRM : A Style-based Recalibration Module for Convolutional Neural Networks中提出的基于风格迁移机制的通用卷积网络模型。本项目即对其进行复现。
风格迁移需要用到卷积神经网络。可否充分利用卷积神经网络中产生风格迁移的机制,并将其用于一般的计算机视觉任务呢?本项目复现SRM网络并用其来完成动物图像分类的实验。项目简介
本项目首次使用paddle2.0复现了含有基于风格校正的网络SRM,并在动物数据集上进行了训练和验证。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
动物数据集的划分是按8:2的的划分方法进行训练集与验证集划分的。
模型简介
SRM网络的核心思想是提出了SRM模块。该模块首先通过风格池化从每个通道的特征图中提取风格信息,然后通过风格集成来评估每个通道的校正权重。其中,风格池化是在空间维度上操作,风格集成是在通道维度上操作。这种将特征图和风格权重相结合的方式本质上是一种注意力机制,只不过这种注意力关注的是特征图中的风格信息。SRM示意图如图1所示。

图1 SRM模块示意图
SRM实现细节如图2所示。

图2 SRM模块实现细节示意图
具体实现可以fork后见代码细节。
论文原文:SRM : A Style-based Recalibration Module for Convolutional Neural Networks
参考代码:
PyTorch的实现
数据集介绍
本项目使用10分类的动物数据集进行训练和测试.
该十分类动物数据集,包含dog,horse,elephant,butterfly,chicken,cat,cow,sheep,spider和squirrel。每一分类的图片数量为2k-5k。
文件结构
解压数据集
In [2]!unzip -q data/data70196/animals.zip -d work/dataset登录后复制
查看图片
In [ ]import osimport randomfrom matplotlib import pyplot as pltfrom PIL import Imageimgs = []paths = os.listdir('work/dataset')for path in paths: img_path = os.path.join('work/dataset', path) if os.path.isdir(img_path): img_paths = os.listdir(img_path) img = Image.open(os.path.join(img_path, random.choice(img_paths))) imgs.append((img, path))f, ax = plt.subplots(3, 3, figsize=(12,12))for i, img in enumerate(imgs[:9]): ax[i//3, i%3].imshow(img[0]) ax[i//3, i%3].axis('off') ax[i//3, i%3].set_title('label: %s' % img[1])plt.show()登录后复制登录后复制
划分训练集和验证集
In [3]!python code/train_val_split.py登录后复制
finished train val split!登录后复制
使用SRM-ResNet50网络进行动物分类的训练并验证
训练
In [1]!python code/train.py --net 'attention_resnet' --recalibration_type 'srm'登录后复制
验证
In [2]!python code/eval.py --net 'attention_resnet' --recalibration_type 'srm'登录后复制
Eval begin...The loss value printed in the log is the current batch, and the metric is the average value of previous step.step 3276/3276 [==============================] - loss: 7.0645e-04 - acc: 0.8736 - 297ms/step Eval samples: 3276{'loss': [0.0007064453], 'acc': 0.8736263736263736}登录后复制图示SRM训练验证过程

图3. 使用SRM的训练验证比较图示
使用GE-ResNet50网络进行动物分类的训练并验证
In [3]!python code/train.py --net 'attention_resnet' --recalibration_type 'ge'登录后复制
验证
In [3]!python code/eval.py --net 'attention_resnet' --recalibration_type 'ge'登录后复制
Eval begin...The loss value printed in the log is the current batch, and the metric is the average value of previous step.step 3276/3276 [==============================] - loss: 0.6899 - acc: 0.8614 - 228ms/step Eval samples: 3276{'loss': [0.6899206], 'acc': 0.8614163614163615}登录后复制图示GE训练验证过程

图4. 使用GE的训练验证比较图示
使用SE-ResNet50网络进行动物分类的训练并验证
In [4]!python code/train.py --net 'attention_resnet' --recalibration_type 'se'登录后复制
验证
In [3]!python code/eval.py --net 'attention_resnet' --recalibration_type 'se'登录后复制
W0222 10:36:03.112169 9128 device_context.cc:362] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1W0222 10:36:03.116613 9128 device_context.cc:372] device: 0, cuDNN Version: 7.6.Eval begin...The loss value printed in the log is the current batch, and the metric is the average value of previous step.step 103/103 [==============================] - loss: 0.6246 - acc: 0.8730 - 175ms/step Eval samples: 3276{'loss': [0.6245543], 'acc': 0.873015873015873}登录后复制图示SE训练验证过程

图5. 使用SE的训练验证比较图示
使用ResNet50网络进行动物分类的训练并验证
训练
In [5]!python code/train.py --net 'resnet'登录后复制
验证
In [ ]!python code/eval.py --net 'resnet'登录后复制
W0213 21:34:50.038996 12684 device_context.cc:362] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1W0213 21:34:50.043457 12684 device_context.cc:372] device: 0, cuDNN Version: 7.6.Eval begin...The loss value printed in the log is the current batch, and the metric is the average value of previous step.step 103/103 [==============================] - loss: 1.4232 - acc: 0.5888 - 191ms/step Eval samples: 3276{'loss': [1.4232028], 'acc': 0.5888278388278388}登录后复制图示ResNet50训练验证过程

图6. 使用ResNet的训练验证图示
比较

图7. 使用SRM,GE,SE和ResNet的验证比较图示
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
1.4 万亿词元!阿里 Qwen3.6-Plus 刷新全球最大 AI 聚合平台 OpenRouter 日调用量纪录
1 4 万亿词元!阿里 Qwen3 6-Plus 刷新全球最大 AI 聚合平台 OpenRouter 日调用量纪录 这事儿挺震撼的。就在4月4日,全球最大的AI模型聚合平台OpenRouter在其官方账号上公布了一个爆炸性数字:阿里刚刚发布的千问新模型Qwen3 6-Plus,上线仅仅一天,日调用量
实战指南:基于快马平台深度开发,构建企业级workbuddy团队项目管理看板
深度开发指南:利用快马平台高效构建企业级WorkBuddy团队项目管理看板 近期在开发团队协作工具WorkBuddy的项目管理模块时,传统开发模式的周期漫长令人困扰。转而采用快马平台(即InsCode)后,开发效率得到显著提升。本文将详细分享如何基于快马平台,快速搭建一个功能完善、体验流畅的企业级项
消息称 Meta 低调组建独立硬件团队,打造以多种形态陪伴人类的智能体
消息称 Meta 低调成立独立硬件部门,致力于研发多形态人类陪伴型智能体设备 4月4日凌晨,《商业内幕》发布独家报道引发行业关注。多位知情人士透露,Meta公司正悄然为其“超级智能”业务线组建一支独立的硬件研发团队,并任命资深硬件工程师负责整体管理。此举被视为Meta在人工智能设备战略布局上的关键一
AI 的记忆不是硬盘——从 40 个真实 Bug 说起
这是 AI 认知架构实战笔记 系列的第 2 篇 上一篇我们聊了「给 AI 写灵魂文件」这件事,这一篇,我们来看看,当这份灵魂文件真正运转起来之后,现实究竟会给我们带来多少“惊喜”——或者更准确地说,是漏洞。项目名为 WorkBuddy-Configure,已部署在 gitee 和 gitcode 上
OpenClaw给每个Agent单独指定workspace
OpenClaw中为每个Agent配置独立工作区的最佳实践 在大模型智能体协作平台上,实现多个Agent之间的文件隔离是确保项目管理井然有序的关键需求。如果您正在使用OpenClaw平台,为不同角色的智能体分配专属工作空间可以有效避免文件冲突、权限混乱等问题。本指南将详细介绍在OpenClaw中为每
- 日榜
- 周榜
- 月榜
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

