当前位置: 首页 > news >正文

关于卷积神经网络旋转不变性的一点研究

今天一直在思考CNN的旋转不变性,众所周知,CNN具有平移不变性,但是是否具有旋转不变性呢。我们来研究下吧。

1 查阅资料

查阅了许多国内外资料,在解释旋转不变性的时候,普遍得出来,CNN具有一定的旋转不变性,但是这个旋转不变性是有一定的角度控制的,当然起作用的是maxpooling 层,当我们正面拍一些照片的时候,在某些地方会得到activation.然后旋转一定的角度之后,这个依然在相同的点得到activation区域。当然决定这个区域的是maxpooling 层,所以说maxpooling越大可以旋转保持抽取特征不变性的角度就越大。现在很多人解决这种问题的方法都是用data augmentation

data augmentation:人工增加训练集的大小. 通过平移, 翻转, 加噪声等方法从已有数据中创造出一批""的数据

当然这位仁兄介绍的比较仔细,传送门:http://www.cnblogs.com/love6tao/p/5841648.html,但是这种方法,很容易导致模型过拟合。有没有一种方法能解决这个问题呢,下面我来介绍一篇CVPR 2016上的文章。

2 论文介绍

论文名字:RIFD-CNN: Rotation-Invariant and Fisher Discriminative Convolutional Neural Networks for Object Detection

当然这篇文章介绍了旋转不变性改进,和判别改进,但是我这里只介绍一种。

R-CNN模型图:

它这个模型其实很简答,前面就是data augmentation. 然后放上传统的CNN层(VGGNet,AlexNet).是传统网络分类层的前一层。本模型是在之间加了层以保证模型的旋转不变性。

模型分为两层:一层data augmentation 和model training.

Data augmentation:给一些列初始的训练样本,我们通过旋转变化得到了一系列新的训练样本:,其中是正样本,是负样本,是一些列的k个旋转角度。

model training:为了达到旋转不变的特性,文章增加了一个旋转不变全连接层中的m是除了分类层次的所有层数。不像传统的卷积神经网络,仅仅优化多项逻辑斯蒂回归,即y的值是多项的,是大于2分类的(0,1,2)。具体不多说,传送门,讲的很详细:http://www.docin.com/p-586309778.html

但是本文提出的R-CNN模型,通过加上正则约束项优化一个新的目标函数,以确保训练样本在旋转之前和之后分享相似的特征。

为了减少训练损耗,直接把之前神经网络训练好的参数,带进去。假设层的输出,的输出。是分类层的参数。那么我们就可以得到:

其中是RELU 和softmax激活函数。关于激活函数我这里就不说了。

那么给出训练样本以及他们对应的标签,假设总的参数为.

那么就可以得到下面的优化公式:

其中为平衡三个目标公式的约束项。其中为softmax 分类器的损失函数:. 其中N是训练样本个数,K是每个样本旋转的次数。

第二,是作为旋转不变正则化约束项。可以表示为:

是RI-CNN旋转之后特征的平均值,表示为:

目标函数的第三项作为一个权值衰减组,为了控制权重,防止过拟合。

整个模型的优化都是用随机梯度下降来优化。

下面贴出这个算法:

总结:算法不是太难,但是想法很好。

转载于:https://www.cnblogs.com/xiaohuahua108/p/7045209.html

相关文章:

  • J2EE之JDBC
  • Spring mvc 中使用 kaptcha 验证码
  • J2EE之JNDI
  • redis 设置密码
  • J2EE之JBOSS配置数据库连接池
  • xdotool xdotool模拟击键和鼠标移动--CutyCapt是一个截图工具,xvfb-run
  • J2EE之XML
  • IE8提示console未定义
  • 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-(一千零一拾一元整)输出。
  • oracle11g中SQL优化(SQL TUNING)新特性之Adaptive Cursor Sharing (ACS)
  • 浅析JAVA内部类
  • 将字符串按照单词完全反转---公司面试题
  • UI教程
  • 我想要的是什么,我真的清楚吗?
  • Java数据类型(2)------自动封装拆箱
  • [译]前端离线指南(上)
  • CSS实用技巧干货
  • Cumulo 的 ClojureScript 模块已经成型
  • C学习-枚举(九)
  • Java反射-动态类加载和重新加载
  • MySQL主从复制读写分离及奇怪的问题
  • nfs客户端进程变D,延伸linux的lock
  • ReactNativeweexDeviceOne对比
  • Vue小说阅读器(仿追书神器)
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 闭包,sync使用细节
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 浏览器缓存机制分析
  • 免费小说阅读小程序
  • 如何学习JavaEE,项目又该如何做?
  • 探索 JS 中的模块化
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 积累各种好的链接
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #WEB前端(HTML属性)
  • (02)Hive SQL编译成MapReduce任务的过程
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (论文阅读40-45)图像描述1
  • (转)EOS中账户、钱包和密钥的关系
  • .chm格式文件如何阅读
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET的数据绑定
  • .NET中winform传递参数至Url并获得返回值或文件
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • @拔赤:Web前端开发十日谈
  • [100天算法】-实现 strStr()(day 52)
  • [20161101]rman备份与数据文件变化7.txt