CNNs:ZFNet之基于AlexNet特征可视化实验分析
导言
上一篇我们介绍了如何利用Deconvnet网络进行特征可视化操作,本篇我们将基于Deconvnet对文献中的相关实验进行分析,并验证一些结论。除此之外,我们还将针对实验现象对对AlexNet网络进行微调(ZFNet),并对网络进行简单介绍。然后基于ZFNet进行实验分析。
基于AlexNet网络的实验分析
实验一:不同卷积层特征提取分析
实验条件:
- 模型数据集:ImageNet 2010 training set(1.0 million images, spread over 1000 different classes)
- 模型
AlexNet - 下图中,在2-5层是在验证数据集中的特征图中抽取前9个最大激活所对应的图片和喂到
Deconvnet中得到的像素空间的特征。

第一层卷积:是极高和极低的频率信息的混合,几乎不覆盖中频(边缘信息+颜色信息)


第二层卷积:比第一层卷积提取出来的信息更加抽象,但仍主要是由边缘信息和颜色信息组成。
随着层数的增加,提取出来的特征越来越偏向“语义特征”。


第五层中右上角的一组图像中,看似几乎没有共同特征,但网络却学习到了背景草地的特征。
实验二:不同卷积层提取特征收敛分析
- 基于
AlexNet
在训练过程中特征演。下图中,展示了给定特征图的最强激活投影到像素空间中的特征。注意:色彩对比度认为的增强了,为了突出显示特征

可以从上图中发现,随着层数的增加,卷积层提取的特征更加偏向语义特征,且提取出来的语义特征需要更大的epoch才能提取出来;模型的底层网络在epoch很小便可以收敛。
下图为基于AlexNet网络在第一层卷积层核第二层卷积层提取特征后进行特征可视化的结果。可以从图(a)中看到实验中出现了无明显特征的特征图,在图(b)中可以看到明显的混乱网格的现象。其中“混乱网格”的出现是由于在使用卷积核对上一输入进行卷积时,步长过大造成的。所以针对此实验现象,文章提出了基于AlexNet的改进网络ZFNet。

ZFNet网络介绍

针对AlexNet的实验现象,文章针对ImageNet数据集对AlexNet进行了微调,可以有效解决混乱网格和dead特征。
首先,让我们先看一下ZFNet的网络结构:
import torch
import torch.nn as nn
from collections import OrderedDict
from torchsummary import summary
class ZFNet(nn.Module):
def __init__(self, class_num = 5):
super(ZFNet, self).__init__()
self.features = nn.Sequential(
# input[3, 224, 224] output[96, 110, 110]
nn.Conv2d(3, 96, kernel_size=7, stride=2, padding=1),
nn.ReLU(inplace=True),
# output[96, 55, 55]
nn.MaxPool2d(kernel_size=3, stride=2, padding=1, return_indices=True),
# output[256, 26, 26]
nn.Conv2d(96, 256, kernel_size=5, stride=2),
nn.ReLU(inplace=True),
# output[256, 13, 13]
nn.MaxPool2d(kernel_size=3, stride=2, padding=1, return_indices=True),

本文探讨了基于AlexNet和ZFNet的卷积神经网络特征可视化实验,包括不同卷积层的特征提取和收敛性分析。实验显示随着层数增加,特征更偏向语义。ZFNet通过微调解决了AlexNet的混乱网格问题,提高了特征提取质量。此外,文章还涉及特征不变性、局部遮挡敏感性和局部相关性的实验,揭示了网络如何利用上下文信息进行分类。
最低0.47元/天 解锁文章
2375

被折叠的 条评论
为什么被折叠?



