群等变网络的pytorch实现
CNN对于旋转不具有等变性,对于平移有等变性,data augmentation的提出就是为了解决这个问题,但是data augmentation需要很大的模型容量,更多的迭代次数才能够在训练数据集合上对旋转等变,对于测试集合,也不一定能够保证等变
可能大家会问,旋转等变网络有什么优点?data augmentation有什么优点,旋转等变网络就有什么优点,比如,不同方向的狗,转了一个方向之后还是一个狗,cnn希望经过多层卷积之后的feature也只是转了一个方向。16年的一篇ICML论文应运而生。
给出链接
Group Equivariant Convolutional Networks ,视频,https://archive.org/details/Redwood_Center_2016_06_27_Taco_Cohen, 代码:https://github.com/tscohen/GrouPy
这里给出github上的一个pytorch实现的版本
代码链接:https://github.com/adambielski/pytorch-gconv-experiments,很强
实际上18年有一篇论文讲述了如何用群等边网络来进行病理图片的分割,题目为Rotation Equivariant CNNs for Digital Pathology
里面有一张图讲述群等变网络讲的很清楚,拷贝过来给大家讲一下,英文好的还可以看有两个视频https://www.youtube.com/watch?time_continue=1586&v=TlzRyHbWeP0
tohen亲自讲的也有一个:https://archive.org/details/Redwood_Center_2016_06_27_Taco_Cohen
图片如下
上面这个图表示的是经过旋转之后的图片,输出的feature map具有等变性。
通过debug pytorch的代码,能够了解具体操作的过程是,Z2-P4卷积是将kernel旋转四次,分别与输入的图片做卷积,而P4-P4卷积是对于输出的4个feature map,分别将四个kernel绕着顺时针方向转动90°,同时kernel自身也转动90°,这样的四种状态分别与输出的不动的feature map分别做卷积,每一种状态做卷积之后的输出结果四个相加,这样为一个featuremap,四个状态对应4个feature map,即为最终的输出,那这样又为什么会学习到一个旋转不变的性质呢?因为同一个kernel的四种状态对于不同的feature map应该是能够得到一个p4的约束,所以能够学习到一个旋转等变的性质
群等变网络的pytorch实现的更多相关文章
- 群晖NAS网络存储服务器防盗防小偷
群晖NAS网络存储服务器防盗防小偷 根据群晖NAS的实际测量外形尺寸到淘宝网邮购金属 配电箱(弱电箱). 把配电箱(弱电箱)用粗螺丝固定到机柜或墙壁上. 把群晖NAS用密码纯铜挂锁锁在配电箱(弱电箱 ...
- AlexNet网络的Pytorch实现
1.文章原文地址 ImageNet Classification with Deep Convolutional Neural Networks 2.文章摘要 我们训练了一个大型的深度卷积神经网络用于 ...
- Node.js使用PM2的集群将变得更加容易
介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...
- 从JAVA多线程理解到集群分布式和网络设计的浅析
对于JAVA多线程的应用非常广泛,现在的系统没有多线程几乎什么也做不了,很多时候我们在何种场合如何应用多线程成为一种首先需要选择的问题,另外关于java多线程的知识也是非常的多,本文中先介绍和说明一些 ...
- k8s集群Canal的网络控制 原
1 简介 直接上干货 public class DispatcherServlet extends HttpServlet { private Properties contextConfigProp ...
- Ceph集群更换public_network网络
1.确保ceph集群是连通状态 这里,可以先把机器配置为以前的x.x.x.x的网络,确保ceph集群是可以通的.这里可以执行下面的命令查看是否连通,显示HEALTH_OK则表示连通 2.获取monma ...
- 关于java多线程理解到集群分布式和网络设计的浅析
对于JAVA多线程的应用非常广泛,现在的系统没有多线程几乎什么也做不了,很多时候我们在何种场合如何应用多线程成为一种首先需要选择的问题, 另外关于java多线程的知识也是非常的多,本文中先介绍和说明一 ...
- U-Net网络的Pytorch实现
1.文章原文地址 U-Net: Convolutional Networks for Biomedical Image Segmentation 2.文章摘要 普遍认为成功训练深度神经网络需要大量标注 ...
- ResNet网络的Pytorch实现
1.文章原文地址 Deep Residual Learning for Image Recognition 2.文章摘要 神经网络的层次越深越难训练.我们提出了一个残差学习框架来简化网络的训练,这些 ...
随机推荐
- 爆料:2019手游折扣app是真福利还是骗人哪个靠谱?
直接上干货.也许你在找寻,安全的手游折扣App,稳定的手游折扣App,不断续充的折扣App,续充不涨价的折扣App,网上的内容太多,难以分辨.那么看这个可以直接给你答案 1.历史(2004年成立,15 ...
- tp未验证内容-9
在tp的数据库配置中, convention.php中所有的选项都没有设置,要自己在Home/conf/config.php中自己设置, 注意几个地方,一是数据库的名字是: db_name,不是db_ ...
- 20165306 2017-2018-2《Java程序设计》课程总结
课程总结 每周作业链接汇总: 预备作业一:我期望的师生关系 预备作业二:学习基础和C语言基础调查 预备作业三:Linux安装与学习 第一周作业:Java入门 第二周作业:基本数据类型与数组,运算符.表 ...
- jquery 获取当前点击的是谁
//今天早上有人问这个问题 想着没写过jquery的笔记 //那就随便写一下吧 下面两个方法 根据不同情况而定用哪种方法$(".class").click(function(){ ...
- while循环和递归
这个问题是在数据结构的二叉树添加结点的时候碰见 添加新结点的时候可以用while循环自身解决(这里这个方式更好) 也可以用递归解决 递归就像小明去楼顶取东西 ,从一楼开始爬,看,不是的,继续爬,每层 ...
- IDEA去除自动检测bean是否存在
操作步骤如下图所示:
- 简单粗暴的上传项目至 Github
嗯,写了一个项目,觉得还OK,就想放在 Github 继续维护和方便使用,那么如何简单快速的将代码上传至 Github 上? 1. 你得有自己的 Github账号,如何创建账号这里就不说了.因为.. ...
- PHP7&Swoole源码安装
PHP7源码安装 1.获取PHP http://php.net/downloads.php 2.解压 tar -xjvf php-7 (根据压缩包的格式修改命令 如果时间戳有问题 -m) 3. ./c ...
- Lab 7-3
For this lab, we obtained the malicious executable, Lab07-03.exe, and DLL, Lab07-03.dll, prior to ex ...
- Netflix分享构建Microservices的经验
Netflix分享构建Microservices的经验 http://t.cn/Rwjgutw 新词:Microservices.我觉得就是service oriented architecture的 ...