ZF-net

ZF-net

摘要:

1、这篇文章的motivation 是 :CNN性能良好,但是我们不知道它为何性能良好,也不知道它怎么可以被提高?

2、本文介绍了一种新方法实现中间层和分类器的可视化

3、采用消融学习,来得到中间层的作用

4、我们的模型具有很好的泛化能力,当分类器重新训练时,在calteck-101和calteck-256等数据集上性能非常好。

引言: 

1、CNN的性能举世瞩目,由下面几个原因导致上述结果:1> 大量有类标的数据集; 2)强有力的GPU计算,使训练复杂模型成为可能

3)更好的归一化策略,例如dropout

2、但是,我们还是不清楚复杂模型的内部操作,也不知道他们为何能取得这么好的效果,在一个科学立场,如果不知道模型的内部机制,那么模型的发        展就是实验和误差了

3、 本文使用反卷积的方式实现可视化,可以看到特征的演化,以及发现模型潜在的问题

4、为了得到场景的哪一部分对于分类很重要,我们将输入图像的不同部分遮住(堵塞),,(控制变量法)

方法:

1、使用监督模型,输入图像x,输出标签y(one-of-C 编码)

2、卷积、池化、修正线性单元、正则化以及softmax 分类器

3、损失函数:交叉熵, 求解方法:SGD

4、使用反卷积实现可视化:为了看到中间层的作用,我们提供了一种新方法将map 回溯到输入像素空间,反池化,修正线性单元,      反卷积

1) 反池化 ,池化过程不可逆,但是我们可以记下池化区域中最大值的位置,反池化时直接返还到相同位置

2)修正线性单元

不管是向前传,还是往回传,我们都需要特征map为正值,所以修正线性的逆变换还是自己

3) 反卷积

与BP的敏感项往回传类似,将卷积核转置然后与特征map卷积(卷积方式为“full”)

本文并没有使用正则方法,这种方法的缺点是只能看到一种激活函数的作用,而不能看到多种激活函数的综合作用

训练细节:

1、网络框架

2、数据集:ImageNet2012训练集(1.3 million images,1000 类)

resize:256*256 -->标签保存转换(扩展10 倍)

batchsize:128    ,学习速率:0.01    动量:0.9   , 卷积核 :0.01  偏置 :0  ,dropout:0.5

优化方法:SGD

3、在第一层的可视化看到一些卷积核占据统治地位,所以重新正则化了卷积核,谁的RMS超过0.1,就重新正则化为0.1

<span style="color: rgb(51, 51, 51);">   </span><span style="color: rgb(255, 0, 0);"> RMS值实际就是有效值,就是一组统计数据的平方的平均值的平方根。
    RMS=(X1平方+X2平方+......+Xn平方)/n 的1/2次方。</span>
<p><span style="font-size: 18px;"><strong>卷积可视化:</strong></span></p><p>1、特征可视化</p><span style="color: rgb(255, 0, 0);"><img src="http://img.blog.csdn.net/20160109170710134?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border: none; max-width: 100%;" />
</span>
   找到activation的前 9 名,分别回传到像素空间,证明不同的结构刺激map以及对应于输入改变的不变性,如上图的第 5 层,第 1 行 ,第 2 列,这些    patches看起来基本没有相似的地方,但是可视化证明主要是特征图主要是后景的草,而不是前景的目标。
   这个回传也证明了网络特征的分层结构:第2层主要是边,角,和颜色组合,第 3层更负责的不变性,得到相似纹理特征,第 4 层得到显著的变化,更像事物的类别了,第 5 层显示全部的物体以更显著的位置变化
<span style="color: rgb(255, 0, 0);">2、训练期间的特征演变</span>,如下图所示
<img src="http://img.blog.csdn.net/20160109172155669?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border: none; max-width: 100%;" />
<span style="white-space: pre;">	</span>上图表示了最强activation的演变,一个指定的特征map回传到像素空间,结果图的突然跳跃发生在最强activation的起源(位置),前几层在经过较少代数后可以收敛,但是后几层需要较多代数才可以收敛,<span style="color: rgb(204, 0, 0);">证明模型需要训练只到完全收敛</span>
       3、<span style="color: rgb(204, 0, 0);">结构选取</span>:因为之前的结构在实现第一层以及第三层可视化时,只要高频和低频部分,所以将滤波器的尺寸从 11*11 -->7*7,stride从4变为2,而且,这么改变也提高了准确率。
       4、堵塞灵敏度 在图片分类时,模型到底是识别出目标在图像的位置,还是只是使用周围的纹理信息,我们将图像的不同部分分别堵塞,并监控分类器输出,以此来系统的回答这个问题,<span style="color: rgb(51, 51, 255);">最终结果是模型确实是定位出目标在场景的位置</span>。图6 显示了最高卷积层的最强特征图,除了这个特征图的激活值(空间位置的总结)作为一个阻塞位置的方程。当阻塞位置在图像位置的可视化区域时,我们看到了特征图的激活值的显著下降。<span style="color: rgb(51, 102, 255);">这个明显那说明了图像结构明显激活了特征map。</span>
<span style="color: rgb(51, 102, 255);"><img src="http://img.blog.csdn.net/20160111095018553?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border: none; max-width: 100%;" />
</span>
<pre id="recommend-content-1471844498" class="recommend-text mb-10" name="code" style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace, 'Microsoft YaHei'; background-color: rgb(243, 255, 236);"><p><span style="font-size: 18px;"><strong>实验:</strong></span></p><p>1、</p><p><img src="http://img.blog.csdn.net/20160111100934944?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border: none; max-width: 100%;" />
</p><p>2、<span style="color: rgb(51, 102, 255);">保持模型的深度很重要。随意拿掉一层都会让准确率下降</span></p><p><img src="http://img.blog.csdn.net/20160111101045530?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border: none; max-width: 100%;" />
</p>

3、模型的泛化能力,就是训练好模型后,重新训练分类器,用到其它数据集上


<img src="http://img.blog.csdn.net/20160111101316483?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border: none; max-width: 100%;" /><img src="http://img.blog.csdn.net/20160111101434956?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border: none; max-width: 100%;" />
</pre><pre id="recommend-content-1471844498" class="recommend-text mb-10" name="code" style="color: rgb(54, 46, 43); white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace, 'Microsoft YaHei'; line-height: 24px; background-color: rgb(243, 255, 236);">
</pre><pre id="recommend-content-1471844498" class="recommend-text mb-10" name="code" style="color: rgb(54, 46, 43); white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace, 'Microsoft YaHei'; line-height: 24px; background-color: rgb(243, 255, 236);">
</pre><pre id="recommend-content-1471844498" class="recommend-text mb-10" name="code" style="color: rgb(54, 46, 43); white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace, 'Microsoft YaHei'; line-height: 24px; background-color: rgb(243, 255, 236);">
</pre><pre id="recommend-content-1471844498" class="recommend-text mb-10" name="code" style="color: rgb(54, 46, 43); white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace, 'Microsoft YaHei'; line-height: 24px; background-color: rgb(243, 255, 236);">
</pre><pre id="recommend-content-1471844498" class="recommend-text mb-10" name="code" style="color: rgb(54, 46, 43); white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace, 'Microsoft YaHei'; line-height: 24px; background-color: rgb(243, 255, 236);">

4、特征分析

总结:

1、本问题出了一种新的可视化方法

2、使用可视化方法发现模型问题,并得到更好结果

3、网络的深度对模型非常重要

4、用ImageNet训练模型,泛化到Calteck256等数据集上,验证模型的繁华能力

5、如果能找到更好的lossfunction即允许一个图片多个目标,效果可能会更好

源:
http://blog.csdn.net/chenyanqiao2010/article/details/50488075

时间: 2024-07-30 21:40:36

ZF-net的相关文章

【转载】 Faster-RCNN+ZF用自己的数据集训练模型(Matlab版本)

说明:本博文假设你已经做好了自己的数据集,该数据集格式和VOC2007相同.下面是训练前的一些修改. (做数据集的过程可以看http://blog.csdn.net/sinat_30071459/article/details/50723212) Faster-RCNN源码下载地址: Matlab版本:https://github.com/ShaoqingRen/faster_rcnn Python版本:https://github.com/rbgirshick/py-faster-rcnn 本

MySQL Workbench建表时 PK NN UQ BIN UN ZF AI 的含义

PK==>  PRIMARY KEY    ==> 主键NN==>  NOT NULL       ==> 不可为空UQ==>  UNIQUE         ==> 唯一的AL==>  AUTO INCREMENT ==> 自动增加BIN==> BINARY         ==> 二进制UN==>  UNSIGNED       ==>无符号位的ZF==>  ZERO FILL      ==>补零 PK Belong

ZF框架数据对象映射模式的思考

最近学了ZF框架,对手册中DB这一节Zend_Db_Table_Row的介绍中说,使用了Zend_Db_Table::find()或::findRow()方法可以返回一个Zend_Db_Table_Row的对象,该对象自动映射到表中的这一行记录,字段和类属性完全关联在一起(字段名是下划线分隔的,属性名由首个单词小写的驼峰式命名,如自动“last_name”,则操作时属性名“lastName”),获取任何字段就直接像操作类属性一样,如: $row = $table->fetchRow('first

MySQL workbench中的PK,NN,UQ,BIN,UN,ZF,AI说明

- PK: primary key (column is part of a pk) 主键- NN: not null (column is nullable) 是否为空  (非空)- UQ: unique (column is part of a unique key) 唯一索引 (外键)- AI: auto increment (the column is auto incremented when rows are inserted) 自动增加- BIN: binary (if dt is

zf框架环境搭建

apache配置: 1.....在#LoadModule vhost_alias_module modules/mod_vhost_alias.so后面加上 LoadModule php5_module C:/php5.3/php5apache2_2.dllPHPIniDir "C:/php5.3/"AddType application/x-httpd-php .php .html .phtml php配置: 1,打开extension=php_mysql.dllextension=

楼市、股市后下一届ZF将用什么去做超发货币的蓄水池(

这是天涯论坛上最近的的一个热帖合集,周小川曾直言超发货币需要蓄水池来装,以控制通货膨胀.这个蓄水池楼市做过.股市曾经也充当过,或许现在的地下钱庄也算一部分吧,那下一届政府会如何选择这个蓄水池呢,这或将成为影响中国今后十年乃至更长时间社会经济发展的一个关键问题,花半小时看完本帖, 我想会有所收获. 原作者在连载过程中对原来的跟帖有回应,所以行文有些"个性",原帖较长,转载的时候没办法只能一段一段来帖,放上来,供列为看官一阅.  ==============================

获取ZF值

获取ZF的值, 可用SETE指令(zf值放到al中), 也可以用 JNZ   JNE 跳转指令间接获得, 请看下面这段代码: char *s1 = "123";char *s2 = "1234"; __asm{    xor al, al    mov edi, s1    mov ecx, -1    repnz scasb    not ecx         //取得字串s1的长度(包括末尾的空字符'\0')    mov edi, s1    mov esi

基于ZF中的.htaccess文件学习Apache的Rewrite语法

首先我们看一下这个.htaccess文件: RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] 这里面涉及到了3个指令: 1.RewriteEngine  最简单,控制

mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI

[intrinsic column flags] (基本字段类型标识) - PK: primary key (column is part of a pk) 主键 - NN: not null (column is nullable) 非空 - UQ: unique (column is part of a unique key) 唯一 - AI: auto increment (the column is auto incremented when rows are inserted) 自增

mysql workbench中PK,NN,UQ,BIN,UN,ZF,AI字段类型标识说明

PK:primary key 主键 NN:not null 非空 UQ:unique 唯一索引 BIN:binary 二进制数据(比text更大) UN:unsigned 无符号(非负数) ZF:zero fill 填充0 例如字段内容是1 int(4), 则内容显示为0001 AI:auto increment 自增