前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码解读Top-down Neural Attention by Excitation Backprop及模型架构图

代码解读Top-down Neural Attention by Excitation Backprop及模型架构图

作者头像
CreateAMind
发布2018-07-20 15:41:51
1.8K0
发布2018-07-20 15:41:51
举报
文章被收录于专栏:CreateAMindCreateAMind

前两天我们介绍了自上而下的注意力模型通用人工智能技术之'注意力':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]:

代码语言:javascript
复制

载入图片. 图片 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]: 图片加载展示

代码语言:javascript
复制
<matplotlib.image.AxesImage at 0x7f4b8cc94450>

我们前向传播计算图片的输出结果,看看图片的分类预测结果

In [4]:

代码语言:javascript
复制
代码语言:javascript
复制
分类预测结果输出为:[('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]:

代码语言:javascript
复制
其中三步骤注释也描述很清楚
代码语言:javascript
复制
# invert the top layer weights
代码语言:javascript
复制
# invert back
代码语言:javascript
复制
# compute the contrastive signal
代码语言:javascript
复制
输出的注意力分布图如下:
代码语言:javascript
复制
我们看一下相关代码:
代码语言:javascript
复制
首先caffe.set_mode_eb_gpu   其中eb即excitationBP
看python/_caffe.cpp void set_mode_eb_gpu() { Caffe::set_mode(Caffe::EB_GPU); }
我们看layer.hpp 
代码语言:javascript
复制
定义了Caffe::EB_GPU到 Backward_eb_gpu 如下最底部
代码语言:javascript
复制

在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

代码语言:javascript
复制
通过set_mode_dc_gpu 更改处理方式进行deconvolution操作,结果如下:当然效果不如EBP好

再继续是demo讲Excitation BP方法和其他方法进行了比较,如普通的错误BP方式。

[7]: set_mode_gpu

代码语言:javascript
复制
代码语言:javascript
复制
当然效果也不如EBP好
代码语言:javascript
复制
代码语言:javascript
复制
 梳理的还不清楚,还请高人多指教!
 望大家代码跑的顺畅,玩的开心!
 
 
 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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CreateAMind 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档