新网站秒收录技术,seo推广是什么意怿,seo免费自学的网站,网站开发毕业设计书Inception网络及其思考 知识点回顾#xff1a; 传统计算机视觉发展史#xff1a;LeNet--AlexNet--VGGNet--nceptionNet--ResNet#xff0c;之所以说传统#xff0c;是因为现在主要是针对backbone-neck-head这样的范式做文章inception模块和网络特征融合方法…Inception网络及其思考 知识点回顾 传统计算机视觉发展史LeNet--AlexNet--VGGNet--nceptionNet--ResNet之所以说传统是因为现在主要是针对backbone-neck-head这样的范式做文章inception模块和网络特征融合方法阶段性总结逐元素相加、逐元素相乘、concat通道数增加等感受野与卷积核变体深入理解不同模块和类的设计初衷 Inception 网络及其思考 知识点回顾 传统计算机视觉发展史 LeNet像是早期的简单食谱为后续复杂模型奠定基础。 AlexNet引入了深度和ReLU激活函数如同在厨房中引入了新的烹饪工具和方法。 VGGNet通过增加网络深度来提升性能如同增加菜谱的步骤以丰富菜品。 InceptionNet引入多尺度特征提取如同在烹饪中考虑不同食材的处理方式。 ResNet引入残差连接解决梯度消失问题如同在厨房中引入新的流程优化方法。 Inception 模块和网络 Inception 模块通过多分支结构提取不同尺度的特征类似在厨房中使用多种工具同时处理食材以提高效率。 网络由多个 Inception 模块堆叠而成类似于多个高效工作站的组合。 特征融合方法阶段性总结 逐元素相加如同将多种处理过的食材按特定方式混合使味道相互补充。 逐元素相乘如同根据特定比例混合食材使味道相互增强。 Concat 通道数增加如同将多种食材的特性拼接在一起形成丰富的菜品。 感受野与卷积核变体 感受野决定了模型能“看到”的输入区域大小类似于厨师的视野范围决定其对菜品的整体把控。 不同大小的卷积核用于提取不同尺度的特征如同使用不同尺寸的刀具切割食材以适应不同的烹饪需求。 作业一次稍微有点学术感觉的作业 对inception网络在cifar10上观察精度消融实验引入残差机制和cbam模块分别进行消融 作业 对 Inception 网络在 CIFAR-10 上观察精度并进行消融实验引入残差机制和 CBAM 模块分别进行消融。 引入残差机制如同在原有菜谱中增加一种新的调味方法以提升菜品的口感层次。 引入 CBAM 模块如同在厨房中增加智能设备动态调整每一步骤的火力和时间以提升菜品质量。 消融实验通过比较不同配置下的模型性能了解每个模块对整体效果的贡献如同测试不同烹饪步骤对菜品质量的影响。 class CBAM(nn.Module):def __init__(self, in_channels, reduction_ratio16):super(CBAM, self).__init__()# 通道注意力self.channel_attention nn.Sequential(nn.AdaptiveAvgPool2d(1),nn.Conv2d(in_channels, in_channels // reduction_ratio, kernel_size1),nn.ReLU(),nn.Conv2d(in_channels // reduction_ratio, in_channels, kernel_size1),nn.Sigmoid())# 空间注意力self.spatial_attention nn.Sequential(nn.Conv2d(2, 1, kernel_size7, padding3),nn.Sigmoid())def forward(self, x):channel_attention self.channel_attention(x)x x * channel_attentionspatial_attention self.spatial_attention(torch.cat([torch.mean(x, dim1, keepdimTrue), torch.max(x, dim1, keepdimTrue)[0]], dim1))x x * spatial_attentionreturn xclass InceptionWithCBAM(nn.Module):def __init__(self, in_channels):super(InceptionWithCBAM, self).__init__()self.branch1x1 nn.Sequential(nn.Conv2d(in_channels, 64, kernel_size1),nn.ReLU())self.branch3x3 nn.Sequential(nn.Conv2d(in_channels, 96, kernel_size1),nn.ReLU(),nn.Conv2d(96, 128, kernel_size3, padding1),nn.ReLU())self.branch5x5 nn.Sequential(nn.Conv2d(in_channels, 16, kernel_size1),nn.ReLU(),nn.Conv2d(16, 32, kernel_size5, padding2),nn.ReLU())self.branch_pool nn.Sequential(nn.MaxPool2d(kernel_size3, stride1, padding1),nn.Conv2d(in_channels, 32, kernel_size1),nn.ReLU())self.cbam CBAM(256)def forward(self, x):branch1x1 self.branch1x1(x)branch3x3 self.branch3x3(x)branch5x5 self.branch5x5(x)branch_pool self.branch_pool(x)outputs [branch1x1, branch3x3, branch5x5, branch_pool]x torch.cat(outputs, dim1)x self.cbam(x)return xclass InceptionNetWithCBAM(nn.Module):def __init__(self, num_classes10):super(InceptionNetWithCBAM, self).__init__()self.conv1 nn.Sequential(nn.Conv2d(3, 64, kernel_size7, stride2, padding3),nn.ReLU(),nn.MaxPool2d(kernel_size3, stride2, padding1))self.inception1 InceptionWithCBAM(64)self.inception2 InceptionWithCBAM(256)self.avgpool nn.AdaptiveAvgPool2d((1, 1))self.fc nn.Linear(256, num_classes)def forward(self, x):x self.conv1(x)x self.inception1(x)x self.inception2(x)x self.avgpool(x)x torch.flatten(x, 1)x self.fc(x)return x# 主函数
def main_cbam():device torch.device(cuda if torch.cuda.is_available() else cpu)model InceptionNetWithCBAM().to(device)criterion nn.CrossEntropyLoss()optimizer optim.Adam(model.parameters(), lr0.001)for epoch in range(5):train(model, device, trainloader, criterion, optimizer, epoch)test(model, device, testloader)if __name__ __main__:main_cbam() 实验结果分析 通过比较基础 Inception 网络、引入残差机制的 Inception 网络以及引入 CBAM 模块的 Inception 网络在 CIFAR-10 数据集上的准确率可以得出以下结论 基础 Inception 网络提供了多尺度特征提取的能力能够有效捕捉不同尺度的特征。 引入残差机制通过残差连接缓解了深层网络的梯度消失问题提高了模型的训练效率和性能。 引入 CBAM 模块通过通道和空间注意力机制增强了模型对关键特征的关注能力进一步提高了模型的性能。 浙大疏锦行