笔记[M-SFANet]Encoder-Decoder Based Convolutional Neural Networks with Multi-Scale-Aware Modules...

@[TOC]( [M-SFANet] Encoder-Decoder Based Convolutional Neural Networks with Multi-Scale-Aware Modules for Crowd Counting (ICPR2020)笔记)
阅读笔记,如有错误谢谢指正~

motivation:

人群计数中存在人群遮挡,透视失真,规模变化和不同的人群分布等问题

Inspired by

SFANet and SegNet

methods:

提出用于人群计数的M-SFANet 和M-SegNet

M-SFANet:

在这里插入图片描述
encoder-decoder框架

encoder部分为VGG前13层

decoder两个主要模块为CAN和ASSP
CAN

接受VGG第十层的特征图,average pooling 也设为 1,2,3,6来提取上下文特征
CAN原型

ASSP

接受VGG第十三层的特征图. 多尺度特征来源也是 1×1卷积和3×3卷积 空洞率为6,12,18ASSP原型
ASSP和CAN出来的第一个分支都分别concat到对方D3Block中,目的是更好的高级多尺度特征。
类似U-Net的级联是为了获取低级特征。

M-SegNet

在这里插入图片描述
没有CAN和ASSP模块,其他组件相同,bilinear upsampling 改为Max unpooling

目的:更快速高效。

损失函数为L2

性能SOTA

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### 基于复杂循环神经网络或卷积神经网络的序列转换模型工作原理 #### 编码器-解码器架构概述 大多数具有竞争力的神经序列转换模型采用编码器-解码器结构。在这种结构中,编码器负责将输入符号序列 \( (x_1, ..., x_n) \) 映射到连续向量表示序列 \( z = (z_1, z_2, ..., z_n) \)[^2]。随后,这些连续向量被传递给解码器部分,由其生成目标序列。 #### 循环神经网络(RNN) 循环神经网络及其变体,如长短时记忆网络(LSTM)和门控循环单元(GRU),已被确立为序列建模中的主流方法之一[^1]。具体而言: - **LSTM 和 GRU 的作用** LSTM 和 GRU 是 RNN 的改进版本,通过引入特殊的门机制来解决传统 RNN 中长期依赖问题。它们能够更有效地捕捉长时间跨度内的上下文信息。 - **工作机制** 在序列转换任务中,编码器通常是一个多层 LSTM 或 GRU 网络,它逐时间步处理输入序列并生成隐藏状态序列。解码器同样可以是类似的 RNN 结构,在每一步预测下一个输出词元的同时接收来自前一时刻的状态以及注意力加权后的编码器输出。 #### 卷积神经网络(CNN) 尽管 RNN 及其变体在许多应用中表现出色,但近年来也有研究探索利用 CNN 进行序列建模的可能性。相比于传统的 RNN 方法,基于 CNN 的模型具备以下几个特点: - **局部感受野与层次特征提取** 使用一系列堆叠的一维卷积操作可以从不同尺度上捕获输入数据的空间模式。这种设计允许模型快速访问整个输入序列的信息而无需显式的顺序计算过程[^3]。 - **残差连接与归一化技术** 为了缓解深层网络训练过程中可能出现的梯度消失或者爆炸现象,并促进更快收敛速度,现代 CNN 架构经常加入残差链接(Add 表示)以及层归一化(Norm 表示)。前者有助于保持原始信号路径畅通无阻;后者则通过对各层内部节点值标准化进一步稳定优化动态范围。 - **自注意力机制的应用** 不论是在纯 CNN 设计还是混合型框架下,多头注意模块都扮演着重要角色——使得各个位置上的单词可以直接相互关联而不受距离限制影响。这不仅增强了表达能力还简化了整体流程逻辑。 以下是实现上述功能的一个简单伪代码例子: ```python import torch.nn as nn class SeqTransducer(nn.Module): def __init__(self, vocab_size, embed_dim, hidden_dim, num_layers=2): super(SeqTransducer, self).__init__() # Embedding layer self.embedding = nn.Embedding(vocab_size, embed_dim) # Encoder: Bi-directional LSTM/GRU/CNN layers self.encoder_rnn = nn.LSTM(embed_dim, hidden_dim//2, num_layers=num_layers, bidirectional=True) # Alternatively use Convolution-based encoders here... # Decoder: Uni-directional LSTM/GRU/CNN layers plus attention mechanism self.decoder_rnn = nn.LSTM(hidden_dim*2 + embed_dim, hidden_dim, num_layers=num_layers) def forward(self, src_seq, tgt_seq=None): ... ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值