Visualizing and Understanding Convolutional Networks论文实现

文章目录

    • 核心代码实现
    • 运行结果

本文对预先训练好的vgg16 model, 进行了反relu、反池化、反卷积,从而可视化vgg16的卷积过程。
项目运行环境:win10 + python2.7 + cpu
python库:numpy + chainer + matplotlib
关于对论文的理解可参考:https://www.cnblogs.com/hellcat/p/7149348.html

核心代码实现

		# n_activation_maps: 表示feature map的数量
        for i in range(n_activation_maps):  # For each channel
            h = hs[layer_idx].copy()
            condition = xp.zeros_like(h)
            condition[0][i] = 1  # 将目前感兴趣的feature map保留下来,其他的都置为0

            h = Variable(xp.where(condition, h, xp.zeros_like(h)))
            for i in reversed(range(layer_idx + 1)):
                p = self.mps[i]
                # 反池化
                h = F.upsampling_2d(h, p.indexes, p.kh, p.sy, p.ph, unpooling_sizes[i])
                for deconv in reversed(self.deconv_blocks[i]):
                    # 反relu --> 反卷积
                    h = deconv(F.relu(h))

运行结果

输入图片:
Visualizing and Understanding Convolutional Networks论文实现_第1张图片

输出结果:
该结果表明输入图片属于熊猫的概率为97.7%。

['n02510455'
 'giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca']	probability:0.977424144745
['n02509815'
 'lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens']	probability:0.0196101851761
['n02133161'
 'American black bear, black bear, Ursus americanus, Euarctos americanus']	probability:0.000676636816934
['n02445715' 'skunk, polecat, wood pussy']	probability:0.000416155613493
['n02447366' 'badger']	probability:0.000290626252536

卷积过程可视化: 即在卷积过程中,都做了些什么,提取了哪些特征

conv_block1:
Visualizing and Understanding Convolutional Networks论文实现_第2张图片

conv_block2:

交流学习可添加QQ:1759873286

你可能感兴趣的:(卷积)