zoukankan      html  css  js  c++  java
  • 群等变网络的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的约束,所以能够学习到一个旋转等变的性质

  • 相关阅读:
    NoSQL之Redis入门笔记
    运维甩锅神器---Jumpserver
    sersync+rsync=实时异步备份
    gitlab+jenkins=自动化构建
    python笔记07-----打包模块(shutil,zipfile,tarfile)
    python笔记06-----常用模块(time,os,sys,random)
    python笔记09-----装饰器,生成器,迭代器
    python笔记05-----函数
    机器学习3_EM算法与混合高斯模型
    机器学习2-极大似然估计与贝叶斯估计
  • 原文地址:https://www.cnblogs.com/yongjieShi/p/9857044.html
Copyright © 2011-2022 走看看