YOLO的cbs模块
时间: 2025-01-29 20:11:13 浏览: 224
### YOLO中的CBS模块介绍及作用
#### 定义与组成
CBS模块是YOLO系列网络结构中的一种重要组件,该模块由卷积层(Convolutional Layer)、批归一化层(Batch Normalization, BN) 和激活函数(SiLU/ReLU等) 组成[^2]。
#### 卷积层的作用
卷积层负责提取输入特征图中的局部模式。通过应用不同大小和数量的滤波器(filter),可以捕捉图像的空间层次信息并降低维度复杂度。
#### 批归一化的功能
批归一化位于卷积操作之后,在每次前向传播过程中对每一批数据进行标准化处理。具体来说,对于给定的一组批量(batch) 特征$x$,其均值$\mu_B$和方差${\sigma^{2}_{B}}$被计算出来;接着利用这两个统计量来调整原始特征分布:
$$y=\frac{x-\mu_{B}}{\sqrt{{\sigma^{2}_{B}+\epsilon}}}*\gamma+\beta$$
其中$\gamma,\beta$ 是可学习参数用于缩放和平移变换,而$\epsilon$是一个很小常数防止除零错误。
#### 激活函数的选择
在BN层后面通常会接上非线性的激活单元以增加模型表达能力。早期版本采用的是Leaky ReLU作为默认选项,但随着研究进展SiLU (Sigmoid Linear Unit) 凭借更好的性能表现逐渐成为主流配置之一。
```python
import torch.nn as nn
class CBSBlock(nn.Module):
def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, padding=None, groups=1, act=True):
super().__init__()
self.conv = nn.Conv2d(in_channels=in_channels,
out_channels=out_channels,
kernel_size=kernel_size,
stride=stride,
padding=(kernel_size - 1) // 2 if not padding else padding,
groups=groups,
bias=False)
self.bn = nn.BatchNorm2d(out_channels)
self.act = nn.SiLU() if act is True else (act if isinstance(act, nn.Module) else nn.Identity())
def forward(self, x):
return self.act(self.bn(self.conv(x)))
```
阅读全文
相关推荐
















