前两天我们介绍了自上而下的注意力模型通用人工智能技术之'注意力':Top-down Neural Attention ppt论文翻译及代码,今天来看一下demo和代码
下图是Top-down Neural Attention by Excitation Backprop模型的架构图,是从原文件是models/COCO/deploy.prototxt生成的图片。
原图片可在https://github.com/zdx3578/dpl.model.arch.pic/blob/master/excitationBP/Ebpdp.jpg下载
我们看看官方提供的demo,官方直接提供了训练好模型下载,
Demo for Top-down Neural Attention
展示如何使用 Excitation Backprop 可视化 CNN classifier's top-down attention 的例子
In [1]:
先下载模型并设置top layers。
In [2]:
载入图片. 图片 resized to 224 for the shortest dimension. Since the provided CNN model is converted to a fully convolutional model, we can input images of arbitrary aspect ratio.
In [3]:
Out[3]: 图片加载展示
<matplotlib.image.AxesImage at 0x7f4b8cc94450>
我们前向传播计算图片的输出结果,看看图片的分类预测结果
In [4]:
分类预测结果输出为:[('person', 0.48118758), ('car', 0.24551073), ('bench', 0.052021608), ('truck', 0.035574023), ('dog', 0.027694246), ('chair', 0.022356458), ('fire hydrant', 0.020682575), ('cup', 0.012563098), ('bottle', 0.012223985), ('backpack', 0.011581988)]
现在我们使用注意力模型可视化图片中国的几个物体类别
In [5]:
其中三步骤注释也描述很清楚
# invert the top layer weights
# invert back
# compute the contrastive signal
输出的注意力分布图如下:
我们看一下相关代码:
首先caffe.set_mode_eb_gpu 其中eb即excitationBP
看python/_caffe.cpp void set_mode_eb_gpu() { Caffe::set_mode(Caffe::EB_GPU); }
我们看layer.hpp
定义了Caffe::EB_GPU到 Backward_eb_gpu 如下最底部
在conv_layer.cu gpu代码中,定义了ConvolutionLayer的Backward_eb_gpu函数。,如下第二行
对应的conv_layer.cpp也增加了Backward_eb_cpu函数,图片中间部分,分别是Forward_cpu Backward_cpu Backward_eb_cpu 函数
其他相关文件也对应进行的增加了相关函数 如 Backward_eb_gpu
Backward_eb_cpu 等,可以查看https://github.com/jimmie33/Caffe-ExcitationBP/commit/813880b5002bc9e6f52920aaa4543a2e00a975bf#diff-b67ca59e238069c153d9a69ecd4a49c1 相关修改文件如下:
后面是demo讲Excitation BP方法和其他方法进行了比较,如deconvolution mode
In [6]: set_mode_dc_gpu
通过set_mode_dc_gpu 更改处理方式进行deconvolution操作,结果如下:当然效果不如EBP好
再继续是demo讲Excitation BP方法和其他方法进行了比较,如普通的错误BP方式。
[7]: set_mode_gpu
当然效果也不如EBP好
梳理的还不清楚,还请高人多指教!
望大家代码跑的顺畅,玩的开心!
caffe源码解读入门参考:
http://www.lai18.com/content/9887644.html
http://zhangliliang.com/2015/02/11/about-caffe-code-convolutional-layer/
http://www.thinkface.cn/thread-3723-1-1.html
http://blog.csdn.net/qq_16055159/article/details/45057297
看github代码版本: https://github.com/jimmie33/Caffe-ExcitationBP/commit/813880b5002bc9e6f52920aaa4543a2e00a975bf#diff-b67ca59e238069c153d9a69ecd4a49c1