YOLO算法中的CBR、CBL、CBM和CBS模块详解
创作时间:
作者:
@小白创作中心
YOLO算法中的CBR、CBL、CBM和CBS模块详解
引用
CSDN
1.
https://blog.csdn.net/m0_49699378/article/details/145928032
YOLO(You Only Look Once)算法是目前最流行的实时目标检测算法之一,其核心模块包括CBR、CBL、CBM和CBS等。这些模块通过卷积层、批归一化层以及不同的激活函数组合,实现了高效的特征提取和目标检测。本文将详细介绍这些模块的组成和特点,并提供Mish激活函数和CBM模块的PyTorch实现代码示例。
CBR模块
CBR模块由卷积层(Conv)、批归一化层(BN)和ReLU激活函数组成。其结构如下:
- 卷积层(Conv):用于提取输入特征图的局部特征。
- 批归一化层(BN):对卷积层的输出进行归一化处理,加速网络训练并提高模型稳定性。
- ReLU激活函数:引入非线性因素,使得模型能够学习到复杂的映射关系。
CBL模块
CBL模块与CBR模块类似,但使用Leaky ReLU作为激活函数。其结构如下:
- 卷积层(Conv):用于提取输入特征图的局部特征。
- 批归一化层(BN):对卷积层的输出进行归一化处理。
- Leaky ReLU激活函数:允许小梯度值的通过,避免了ReLU激活函数在输入小于0时梯度为0的问题,从而提高了网络的训练效果。
CBM模块
CBM模块使用Mish激活函数,其结构如下:
- 卷积层(Conv):用于提取输入特征图的局部特征。
- 批归一化层(BN):对卷积层的输出进行归一化处理。
- Mish激活函数:一种非线性激活函数,用于引入非线性因素,增强网络的表达能力。Mish激活函数的公式为f(x)=x⋅tanh(log(1+ex)),它相比其他激活函数(如ReLU、Leaky ReLU等)在保持梯度稳定性的同时,能够更好地捕捉输入数据的微小变化。
CBS模块
CBS模块使用SiLU激活函数,其结构如下:
- 卷积层(Conv):用于提取输入特征图的局部特征。
- 批归一化层(BN):对卷积层的输出进行归一化处理。
- SiLU激活函数:SiLU激活函数的公式为silu(x)=x⋅sigmoid(x),它是swish激活函数的一个变体,具有平滑、非单调的特性,有助于缓解梯度消失问题。
激活函数对比
下图展示了不同激活函数的图像,从左到右依次为ReLU、Leaky ReLU、Mish和SiLU。
PyTorch实现CBM模块和Mish激活函数
以下是Mish激活函数和CBM模块的PyTorch实现代码示例:
import torch
import torch.nn as nn
import torch.nn.functional as F
# 定义Mish激活函数
class Mish(nn.Module):
def __init__(self):
super(Mish, self).__init__()
def forward(self, x):
return x * torch.tanh(F.softplus(x))
# 定义CBM模块
class CBM(nn.Module):
def __init__(self, in_channels, out_channels, kernel_size, stride=1, padding=0):
super(CBM, self).__init__()
self.conv = nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding, bias=False)
self.bn = nn.BatchNorm2d(out_channels)
self.mish = Mish()
def forward(self, x):
x = self.conv(x)
x = self.bn(x)
x = self.mish(x)
return x
# 示例使用
if __name__ == "__main__":
# 假设输入张量的形状为 [batch_size, in_channels, height, width]
# 这里我们使用随机数据来模拟输入
batch_size, in_channels, height, width = 1, 3, 224, 224
x = torch.randn(batch_size, in_channels, height, width)
# 创建一个CBM模块实例,参数根据实际情况调整
cbm = CBM(in_channels=in_channels, out_channels=64, kernel_size=3, stride=1, padding=1)
# 通过CBM模块
output = cbm(x)
# 打印输出张量的形状
print(output.shape) # 输出应为 [batch_size, 64, height, width],其中height和width可能因padding和stride而改变
通过以上代码,读者可以快速实现CBM模块并在自己的项目中使用。
热门推荐
从颜色到黄酮含量:五种方法鉴别真伪巴西蜂胶
冬季养生必吃干红枣:4种科学食用法与功效详解
手肘干燥起皮的真相:5种病因与治疗全攻略
创新大赛+徒步行:双鸭山打造立体化校园禁毒教育体系
先叩祖宗,后叩娘,新年的第一个头叩给谁?民俗文化中叩头的讲究
清华大学暑假开放参观:八大景点展现百年学府风采
白沙县沿途汽车服务设施升级,让出行更便捷
澳洲留学公证指南:材料准备、办理流程与注意事项
广州从化百岁老人收祝福,分享长寿秘诀“与世无争”
五天四夜1500元:香格里拉五大景点深度游完全攻略
太空互联网:太空中的抢椅子游戏
别扔香蕉皮!天然美白淡斑,4种护肤方法详解
老门东必吃美食全攻略:4大老字号带你吃遍南京味
大年三十:农历除夕的传统习俗与现代传承
青岛-厦门直飞航班:4家航司运营,经济舱最低1000元
海军多型驱逐舰完成新年度首次海上编队训练
从晨起到睡眠:一份提升效率的健康作息表
黑鱼养殖致富经:农村经济新引擎
陀飞轮、万年历、三问报时:机械表十大复杂功能图解
脂肪肝患者饮食避坑指南:高糖高盐高胆固醇通通拉黑!
夹沙肉:传统川菜的完美演绎
中国古代四场对外战役:东西方军事体系的碰撞与交流
王者修仙新手攻略:战士职业优势与培养技巧详解
“十一”前夕房车预订量暴增100%,折射中国房车旅游热潮
项目投资风险管理全攻略:五大环节与实战技巧
职场碰瓷频现,企业如何通过规范管理有效防范
孩子越听故事越睡不着?正确建立睡前仪式三要点
冬季养生神器:艾灸疗法告别便秘
别急着解释,先听听她怎么说:应对女朋友生气的7个技巧
情绪管理是恋爱必修课:从认知到沟通的6个实用技巧