背景:

做大规模机器学习算法,特别是神经网络最怕什么——没有数据!!没有数据意味着,机器学不会,人工不智能!通常使用样本增强来扩充数据一直都是解决这个问题的一个好方法。

  最近的一篇论文《Training Neural Networks with Very Little Data-A Draft》提出了一个新的图像样本增强方法:对图像使用径向变换生成不同“副本”,解决样本数量太少难以训练的问题。论文地址:https://arxiv.org/pdf/1708.04347.pdf

  该论文提出将图片的直角坐标按指定中心点转换为极坐标来重构图像,从而在不同中心点位置的情况下得到一张图片的多个增强样本,实际就是选取不同的点做圆心,将图像在圆心处展开。

实现:

  论文提供了伪代码,按照伪代码直接写出Python代码很容易:

  

  但事情并没有那么简单!上面的代码输出的是这个样子:

  

  喵!

  看了网上一些实现,图形也不对。只能再仔细检查了一遍。。然后。。发现论文里的“||  ||”原来是取整。。而且作者的直角坐标原点是图的左下角而我们代码是左上角。。

修改:

  知道了问题所在修改一下代码就ok了。去掉abs(),再交换cos和sin

  

 def RT(img, center=(0, 0)):
     U, V, p = img.shape
     RTimg = img.copy() - img
     m, n = center
     for u in range(U):
         d = 2 * math.pi * u / U
         for v in range(V):
             x = v * math.sin(d)
             y = v * math.cos(d)
             mm = int(math.floor(m + x))
             nn = int(math.floor(n + y))
             if mm>=0 and mm<U and nn>=0 and nn<V:
                 RTimg[u, v, :] = img[mm, nn, :]
     return RTimg

  再跑一次图,center取图上圆心坐标:

  

  完美!

  再来增强一波明星图,最近很火的。。

  

  快跑。。

思考:

  个人理解该方法在取点时,越靠近圆心点越密集,相当于有目标的非均匀采样,中心点附近的样本点在变换后占图像比重更大。如下图中黄色区域,点要比外部更密集。

  

  

  这种做法相当于强化中心点附近区域在模型训练中的贡献,与deepid2中对同一张图片切分不同patch用于训练有异曲同工的效果。相较之下这种方法还会保留部分其他非中心区域的信息,考虑更全面。

  至于实际用于训练的效果,小霸王cpu,数据集还没转完,再议。

  原创,转载请声明。完工跑路

实现径向变换用于样本增强《Training Neural Networks with Very Little Data-A Draft》的更多相关文章

  1. A Recipe for Training Neural Networks [中文翻译, part 1]

    最近拜读大神Karpathy的经验之谈 A Recipe for Training Neural Networks  https://karpathy.github.io/2019/04/25/rec ...

  2. (转)A Recipe for Training Neural Networks

    A Recipe for Training Neural Networks Andrej Karpathy blog  2019-04-27 09:37:05 This blog is copied ...

  3. 1506.01186-Cyclical Learning Rates for Training Neural Networks

    1506.01186-Cyclical Learning Rates for Training Neural Networks 论文中提出了一种循环调整学习率来训练模型的方式. 如下图: 通过循环的线 ...

  4. Training Neural Networks: Q&A with Ian Goodfellow, Google

    Training Neural Networks: Q&A with Ian Goodfellow, Google Neural networks require considerable t ...

  5. [CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization

    课程主页:http://cs231n.stanford.edu/   Introduction to neural networks -Training Neural Network ________ ...

  6. [Converge] Training Neural Networks

    CS231n Winter 2016: Lecture 5: Neural Networks Part 2 CS231n Winter 2016: Lecture 6: Neural Networks ...

  7. [转]Binarized Neural Networks_ Training Neural Networks with Weights and Activations Constrained to +1 or −1

    原文: 二值神经网络(Binary Neural Network,BNN) 在我刚刚过去的研究生毕设中,我在ImageNet数据集上验证了图像特征二值化后仍然具有很强的表达能力,可以在检索中达到较好的 ...

  8. [CS231n-CNN] Training Neural Networks Part 1 : parameter updates, ensembles, dropout

    课程主页:http://cs231n.stanford.edu/ ___________________________________________________________________ ...

  9. cs231n spring 2017 lecture7 Training Neural Networks II 听课笔记

    1. 优化: 1.1 随机梯度下降法(Stochasitc Gradient Decent, SGD)的问题: 1)对于condition number(Hessian矩阵最大和最小的奇异值的比值)很 ...

随机推荐

  1. html5 响应式布局(媒体查询)

    响应式布局        响应式布局,简而言之,就是一个网站能够兼容多个终端--而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网浏览而诞生的.        响应式布局可以为不同终端的用户 ...

  2. input标签新增属性

    <input   list='list_t' type="text" name='user' placeholder='请输入姓名' value="" / ...

  3. 一、Solr的相关概念了解

    1.1. 什么是Solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展 ...

  4. 那些年,我们不懂的却又不得不提的 JAVA异常和异常处理!

    ---恢复内容开始--- 首先,我是个小小的菜鸟,最近突然突发奇想,想研究一下java的异常和异常的处理,稍有些理解,老鸟们莫要嘲笑... 既然要讲异常和异常的处理,我们就要先了解异常,那么,什么是异 ...

  5. NHibernate教程(8)--巧用组件

    本节内容 引入 方案1:直接添加 方案2:巧用组件 实例分析 结语 引入 通过前面7篇的学习,有点乏味了~~~这篇来学习一个技巧,大家一起想想如果我要在Customer类中实现一个Fullname属性 ...

  6. C# 委托、匿名方法、lambda简介

    在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我想下面的代码能证实这点.下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=5.答案是6个First不 ...

  7. vmware 遇到 “无法打开内核设备 \\.\Global\vmx86” 解决

    问题描述:vmware没有正常关闭,再次打开使用时蓝屏,在安全模式下再次打开不会蓝屏,但提示"无法打开内核设备 \.\Global\vmx86: 系统找不到指定的文件,你想要安装VMware ...

  8. 软工+C(2017第9期) 助教指南

    //上一篇:提问与回复 [备注]:请优先阅读 Handshake/点评/评分 三部分. 0x00 Handshake 了解<构建之法>作者参与软件工程改革的一些背景: http://www ...

  9. 四则运算GUI版

    小学四则运算界面版 李永豪 201421123117 郑靖涛 201421123114 coding 地址:https://git.coding.net/ras/work2.git 一.题目描述 我们 ...

  10. 第二次项目冲刺(Beta阶段)5.20

    1.提供当天站立式会议照片一张 会议内容: ①检查前一天的任务情况,心得分享以及困难分析. ②制定新一轮的任务计划. 2.每个人的工作 (1)工作安排 队员 今日进展 明日安排 王婧 #42文件分类改 ...