群等变网络的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.文章摘要 神经网络的层次越深越难训练.我们提出了一个残差学习框架来简化网络的训练,这些 ...
随机推荐
- 微信小程序实现图片裁剪上传(wepy)
参考https://github.com/we-plugin/we-cropper,在wepy中实现,参考的具体例子是we-cropper/example/cutInside/ 项目上传图片时2:3的 ...
- 关于ComponentOne For WinForm 的全新控件 – DataFilter数据切片器(Beta)
概述 数据切片器在电子商务网站上很常见 - 它们可以帮助用户快速过滤所选商品,并且所有过滤选项都可以在一个地方使用,通常包含核心控件类型为:清单,范围栏和单选按钮等.在ComponentOne For ...
- burpsuit 无法导入证书,抓取https的解决办法
想用burpsuit中转https流量,需要安装证书: 确保浏览器能访问http 后,访问:http://burp/ 点击右上角下载证书. 然后导入,这些网上都有方法. 但如果你试了后: ①提示导入失 ...
- Java核心技术梳理-泛型
一.引言 在学习集合的时候我们会发现一个问题,将一个对象丢到集合中后,集合并不记住对象的类型,统统都当做Object处理,这样我们取出来再使用时就得强制转换类型,导致代码臃肿,而且加入集合时都是以Ob ...
- 利用python操作excel
https://zhuanlan.zhihu.com/p/51292549 打开程序:https://segmentfault.com/q/1010000002441500
- spark streaming 整合 kafka(一)
转载:https://www.iteblog.com/archives/1322.html Apache Kafka是一个分布式的消息发布-订阅系统.可以说,任何实时大数据处理工具缺少与Kafka整合 ...
- C# 虹软离线SDK引擎 人脸识别
一,背景 整体来说虹软的人脸识别SDK还是不错的.我们测试过Face++的,百度的,腾讯的,都是在线联网的,需要把上传数据到它们服务器,不利商业用途:虹软SDK支持离线. 二,下载虹软SDK 1.注册 ...
- 用GraphX分析伴生网络(一)
1. 图论与GraphX 图论是一个数学学科,研究一组实体(称为顶点)之间两两关系(称为边)的特点.通过构建关系图谱,并对关系进行分析,可以实现更好的投放广告,推荐关系等.随着关系图谱越来越强大,计算 ...
- web 服务发布注意事项
1.在发布的时候首先查看服务器对外开放的端口,如果没有最好和客户进行沟通需要开放那些对应的端口,要不外界无法访问发布的站点. 2.在oracle需要远程控制服务器的数据库的时候需要开发1521端口.
- 另一道不知道哪里来的FFT题
给定一个序列,求出这个序列的k阶前缀和,模998244353,n<=1e5. k阶前缀和可以看成一个一个n*k的平面上的二维行走问题. 第i项对第j项的贡献是从(i,0)走到(j,k)的NE L ...