2025年CNN与Transformer融合的创新点思路

CNN+Transformer这类结构其实一直都挺火的,核心在于他们的互补性。因为在一些复杂的AI应用中,单个模型很难同时高效处理多种类型的数据。如果结合CNN在图像处理上的强大能力和Transformer在序列数据处理上的优势,就可以增加模型处理的灵活性,提高计算效率。

这种结构也是非常热门的毕业or小论文选择,刚刚过去的2024年就有相当多顶会顶刊成果,感兴趣的同学们抓紧。目前CNN+Transformer比较常见的创新就是架构设计创新、注意力机制优化、特征融合策略改进、预训练与微调策略创新、特定领域应用...

本文根据这些方向提供15个最新的CNN+Transformer创新点参考,基本都有代码可复现,帮大家节省了查找的时间,有论文需求的同学可无偿获取,希望大家科研顺利哦!

全部论文+开源代码需要的同学看文末

LEFormer: A hybrid CNN-transformer architecture for accurate lake extraction from remote sensing imagery

方法:论文提出了一种结合卷积神经网络(CNN)和Transformer的混合架构,用于从遥感图像中准确提取湖泊。SCTNet通过在训练阶段使用transformer语义信息来提高实时语义分割性能,解决了传统双分支方法中计算开销高和推理速度慢的问题,实现了新一代的状态SOTA结果。

### CNNTransformer融合技术在人体行为识别中的应用 #### 背景介绍 近来,卷积神经网络(CNN)和变换器(Transformer)在网络结构上的优势互补逐渐成为研究热CNN擅长捕捉局部特征,在图像处理领域表现出色;而Transformer则能够有效建模全局依赖关系,尤其适用于序列数据的分析。 #### 应用场景描述 对于人体行为识别任务而言,通常需要同时考虑空间维度上的人体姿态信息以及时间维度的动作变化趋势。因此,将两者结合起来可以更好地理解视频帧内的人物活动模式[^1]。 #### 实现方式概述 一种常见的做法是在早期阶段利用预训练好的ResNet或其他类型的深层CNN提取每一帧图片的空间特征向量作为输入给后续模块使用。接着引入带有位置编码机制的时间感知型Transformers来学习这些特征随时间演变形成的轨迹表示形式。具体来说: - **时空联合嵌入**:为了使模型具备对不同个体的身份敏感度并增强其区分能力,可以在原始视觉表征基础上附加额外的身份标识符[id_token] 和 时间戳[tokens] ,形成更加丰富的上下文环境供下游组件解析。 - **多尺度感受野构建**:考虑到实际应用场景中可能存在视角差异较大等问题影响最终效果,建议采用金字塔式的采样策略获取多个分辨率下的局部细节,并将其汇总至统一框架下进行综合评判。 - **自注意力机制优化**:鉴于传统RNN/LSTM难以应对长时间跨度内的复杂交互现象这一局限性,借助于self-attention操作可让各时刻之间的关联程度得到充分表达,从而提高整体鲁棒性和泛化性能。 ```python import torch.nn as nn from transformers import BertModel, BertConfig class CnnTrans(nn.Module): def __init__(self, num_classes=7): super().__init__() self.cnn = models.resnet50(pretrained=True) self.transformer_config = BertConfig() self.transformer_encoder = BertModel(self.transformer_config) # 假设我们有T个时间步长 N个人物 L为每个token长度 D是隐藏层大小 T,N,L,D = 8, 32, 768, 768 self.position_embeddings = nn.Parameter(torch.zeros(T*N*L)) self.id_embedding = nn.Embedding(N, D) def forward(self,x): batch_size = x.size()[0] cnn_features = [] for t in range(x.shape[1]): frame_feature = self.cnn(x[:,t,:,:,:]) cnn_features.append(frame_feature.unsqueeze(dim=1)) all_frames = torch.cat(cnn_features,dim=1).view(batch_size,-1,self.transformer_config.hidden_size) ids = torch.arange(all_frames.shape[1]).repeat((batch_size,)).to(device=x.device) id_embs = self.id_embedding(ids).reshape_as(all_frames) inputs_embeds = all_frames + id_embs + self.position_embeddings[:all_frames.numel()].view(*all_frames.shape).to(device=x.device) trans_output = self.transformer_encoder(inputs_embeds=inputs_embeds)[0][:,0,:] logits = F.linear(trans_output,num_classes=num_classes) return logits ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值