CapsuleNet论文笔记
1.论文地址:Dynamic Routing Between Capsules
2.CapsuleNet vs 传统CNN
传统的CNN对于图像大幅度的旋转、变形或朝向不同的方向的图片是无法处理的,除此之外,CNN中的Pooling层会丢失一些信息,如位置信息等,这对于目标检测或目标精确分割是不利的。CNN 的输入和输出都是标量,Capsule则以向量作为输入和输出,CaspsuleNet与CNN的区别见下表:
3.CapsuleNet 网络结构
第一层——普通的卷积层conv1:
Input:28*28*1 image
parameters setting: kernel size 9*9 、 stride1*1、channels 256 、no padding 、activation: ReLu
parameters:9*9*256 +256 (Weight+Bias)
Output:20*20*256 feature maps
shape:[x,28,28,1] to [x,20,20,256] ,x represents batch
第二层——PrimaryCaps:
Input:20*20*256 feature maps
parameters setting:kernel size 9*9、 stride 2*2 、channels 32 、no padding 、activation: Squashing func、No routing
parameters:9*9*256*32+8*32
Output: 6*6*32*8*1 vectors
shape:[x,20,20,256] to [x,6*6*32,8,1]
理解:8个并行的卷积层,第四个维度做合并
第三层——DigitCaps layer:
Input: 6*6*32向量Ui ,维度为[8,1]
Output: Vj,维度为[16,1],j在0-9之间,代表capsule的编号
parameters:6*6*32*10*8*16(Weight)+6*6*32*10*1(Cij/Bij)
理解:
从PrimaryCaps到DigitCaps layer可看做是一种全连接的方式,且DigitCaps layer中用Routing法则更新参数。
重构与表征:
在训练期间,除了特定的 Capsule 输出向量,将其它的输出向量置为0;然后经过三层FC+Sigmoid重构图片,重构部分可以帮助我们直观感受到当DigitCaps layer的输出向量某一维向量发生改变后重构图片发生的变化,即可以得出对应维度表示的特殊含义。
4.DigitCaps layer中的Routing法则
DigitCaps layer的操作可看做两部分组成:Ui与Wij线性组合得到Uij hat,然后用Uij hat与Vj的內积更新Bij(Cij),这样也不需要利用反向传播了。更新Bij的过程可类比K-means聚类,不断更新Bij的值,得到最优的输出,一般来说Routing迭代三次就能达到较好的效果。
u_j|I hat可以理解为在前一层为第i个Capsule连接到后一层第j个Capsule的强度;b_ij 依赖于两个 Capsule 的位置与类型,但不依赖于当前的输入图像,不需要反向传播而直接通过计算输入与输出的一致性更新参数。
Routing伪代码如下:
其中i代表l层的第i个Capsule,j代表下一层(l+1)的第j个Capsule。每个Capsule的length代表了这个位置存在目标的可能性,其orientation表示了目标的多维度信息,如方向、粗细等。
Routing的作用在于找到一个最好的Cij。
5.Capsule Net Loss
Capsule Net的损失函数由两部分组成,第一部分是前三层网络的损失,论文没有使用常用的交叉熵损失函数,而用了SVM中的Margin Loss:
第二部分的损失是重构部分的损失,重构部分的损失为重构图片与原始图片之间的像素点的欧氏距离和组成,最终的损失为可表示为 Loss=Lc+0.0005*Lre,重构部分的损失可看做是一个正则项,防止网络过拟合。
6.文章亮点与不足
Capsule Net使用了向量作为输入和输入,并且摒弃了传统CNN的Pooling层,因此保留了更多的信息;Routing是一个动态的过程:上一层Capsules选择性的激活下一层的Capsules,这对于解决遮挡或重叠数字非常有利(强者俞强);网络中采用了Squash激活函数,在确保值在[0,1]范围内的同时保留了方向信息。
但CaspuleNet中参数众多,训练速度较慢,如何提高训练速度以及如何适应于对类似ImageNet这种size较大的图片是一个挑战。
小结:CapsuleNet与普通的CNN框架不太相同,论文读起来有点难以理解,我在网上搜到了许多关于这篇文章的解读,并且认真阅读了pytorch版本的代码,后归纳总结为此篇博客,希望读完这篇博客的你能从大体的框架上了解到CapsuleNet,后续细节的地方等我琢磨透了在更新。
Reference
1.机器之心-先读懂CapsNet架构然后用TensorFlow实现:全面解析Hinton提出的Capsule
2.知乎-如何看待Hinton的论文《Dynamic Routing Between Capsules》
3. 知乎专栏-浅析 Hinton 最近提出的 Capsule 计划
4.Youtube视频
CapsuleNet论文笔记相关推荐
- ORB-SLAM3 论文笔记
ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...
- 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION
一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...
- 最新图神经网络论文笔记汇总(附pdf下载)
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]近年来,图神经网络变得非常火热,每年顶会在该领域内都会出现大量的研究论文,本文为大家提 ...
- [论文笔记] Fast Quality Driven Selection of Composite Web Services (ECOWS, 2006)
Time: 4.0 hours Jae-Ho Jang, Dong-Hoon Shin, Kyong-Ho Lee, "Fast Quality Driven Selection of Co ...
- 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning
论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning 2017-06-06 21: ...
- 光流 速度_[论文笔记] FlowNet 光流估计
[论文笔记] FlowNet: Learning Optical Flow with Convolutional Networks 说在前面 个人心得: 1. CNN的光流估计主要是速度上快,之后的v ...
- 论文笔记 《Maxout Networks》 《Network In Network》
原文出处:http://zhangliliang.com/2014/09/22/paper-note-maxout-and-nin/ 论文笔记 <Maxout Networks> & ...
- 论文笔记:HKMF-T: Recover From Blackouts in TaggedTime Series With Hankel Matrix Factorization
论文笔记:Hankel Matrix Factorization for Tagged Time Series to Recover Missing Values during Blackouts_U ...
- 论文笔记 A Spatial-Temporal Decomposition Based Deep Neural Network for TimeSeries Forecasting
0 abstract 空间时间序列预测问题出现在广泛的应用中,如环境和交通问题.由于存在特定的空间.短期和长期模式,以及维度的诅咒,这些问题具有挑战性. 在本文中,我们提出了一个用于大规模空间时间序列 ...
最新文章
- 从源码分析DEARGUI之add_radio_button
- Oracle SQL之 序列使用限制
- windows下面的文件拷贝到linux下面出现乱码
- 更新整理本人所有博文中提供的代码与工具(C++,2013.11)
- 瑞星2009:3大拦截2大防御功能主动遏制木马病毒
- NIOS2随笔——BMP解码与VGA显示
- ORA-12514:tns监听程序当前无法识别连接描述符中请求服务;ORA-03113:通信通道的文件结尾
- 搭建DNS域名解析服务器
- 为什么使用 adapter模式
- Android webview上传图片(适配3.0,4.0,5.0,6.0)
- 挂机平台android,红手指手游挂机平台
- 吴恩达机器学习正则化线性回归和偏差算法的MATLAB实现(对应ex5练习)
- springboot Error executing DDL via JDBC Statement
- 使用后处理Alpha通道丢失的问题
- RNA editing restricts hyperactive ciliary kinases文章翻译
- 微服务真的过时了吗?Twitter员工因为微服务被马斯克解雇了
- NLP工具——NLTK 安装及使用
- eclipse as 项目编码修改
- mysql在mye_数据库映射出现重大问题
- 如何配置Linux ip地址
热门文章
- 【Python基础】parse_args()的使用
- ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法
- 物流: 产业联盟要做“带头大哥”
- fieldset标签
- 修改mysql中数据库存储主路径
- 鹅厂50万年薪软件测试工程师面试惨案
- 【python入门第二十二天】python函数-匿名函数
- 实验三 ARP 协议分析实验
- 斯坦福命名实体识别(Stanford Named Entity Recognizer)
- 工控服务器什么作用,工控服务器是什么?服务器主板和普通主板的区别有哪些...