圆栗子 编译自 blog.piekniewski.info 
量子位 报道 | 公众号 QbitAI

前几天,Uber AI实验室发布了一篇非常瞩目的论文,说卷积神经网络 (CNN) 在一些很简单很直接的任务里面,会失守。

比如,一张白色图片,上面有个黑点。给CNN喂食这个点的 (i,j) 坐标,它就是画不出原来那幅图。

总结起来,监督渲染、监督坐标分类,以及监督回归,对CNN来说都是大难题。

于是,团队提出了CoordConv,来回收这些失陷的领土。



不过很快,这篇论文,和拯救CNN的主角CoordConv,就被一篇有点长的博文“鞭尸”了。

博客的主人Filip Piekniewski (暂称菲菲) 说,他给这项研究做了尸检。

加个特征,而已

首先,关于 (上文白纸黑点) 定位问题,Uber团队发现,CNN不擅长把笛卡尔坐标 (i,j) 转换成独热像素空间 (One-Hot Pixel Space) 里的位置。

菲菲提到,CNN的结构,从福岛邦彦新认知机 (Neocognitron) 的年代开始,基本就设计成“忽略位置”的了。



而CoordConv要做的,就在给神经网络的输入里,加上两个坐标通道,一个i一个j,明确告诉AI哪是哪。

果然很有道理啊。可是……

总感觉,随便一个小伙伴在实操的时候,都能对CNN做个类似的小加工,就是加个特征,解码起来更舒服嘛。

菲菲说,做计算机视觉的同行们,没有人会觉得加了几个特征就是不得了的事情。

 平平无奇

虽然,有一个非常火热纯学术辩题,就是一些学者认为,大家只应该用那些学习到的特征 (Learned Features) ,而经济实用派的选手们不同意。

从这个角度上来说,如今现在深度学习圈的人们,也开始认同特征工程 (Feature Engineering) 了,可以可以可以。

训练成果,啊这也需要训练?

加了一层坐标之后,团队就测试了一下神经网络的表现。

可爱的是,这里用的数据集名字叫“Not-So-Clevr”。



任务就是,用坐标生成独热图像,以及用独热图像生成坐标

结果表明,神经网络的性能确实比没加那一层的时候,好了一些。

不过,如果这些人不要那么激动,坐下冷静冷静,可能就会发现,直接搭一个能把笛卡尔坐标和独热编码互相转换的神经网络,不就好了么?

菲菲有了这个想法,就自己写了一串代码——

 1import scipy.signal as sp 2import numpy as np 3# Fix some image dimensions 4I_width = 100 5I_height = 70 6# Generate input image 7A=np.zeros((I_height,I_width)) 8# Generate random test position 9pos_x = np.random.randint(0, I_width-1)10pos_y = np.random.randint(0, I_height-1)11# Put a pixel in a random test position12A[pos_y, pos_x]=113# Create what will be the coordinate features14X=np.zeros_like(A)15Y=np.zeros_like(A)16# Fill the X-coordinate value17for x in range(I_width):18   X[:,x] = x19# Fill the Y-coordinate value20for y in range(I_height):21   Y[y,:] = y22# Define the convolutional operators23op1 = np.array([[0, 0, 0],24                [0, -1, 0],25                [0, 0, 0]])26opx = np.array([[0, 0, 0],27                [0, I_width, 0],28                [0, 0, 0]])29opy = np.array([[0, 0, 0],30                [0, I_height, 0],31                [0, 0, 0]])32# Convolve to get the first feature map DY33CA0 = sp.convolve2d(A, opy, mode='same')34CY0 = sp.convolve2d(Y, op1, mode='same')35DY=CA0+CY036# Convolve to get the second feature map DX37CA1 = sp.convolve2d(A, opx, mode='same')38CX0 = sp.convolve2d(X, op1, mode='same')39DX=CA1+CX040# Apply half rectifying nonlinearity41DX[np.where(DX<0)]=042DY[np.where(DY<0)]=043# Subtract from a constant (extra layer with a bias unit)44result_y=I_height-DY.sum()45result_x=I_width-DX.sum()46# Check the result47assert(pos_x == int(result_x))48assert(pos_y == int(result_y))49print result_x 50print result_y

一个卷积层,一个非线性激活,一个加和,一个减法。解决战斗。

他说,这种事情,就别花时间训练了。

100个GPU

论文主体结束之后,正片才开始。

Appendix里面,有这样一个表格。



Uber团队拿他们的坐标特征,在ImageNet上搞了一下。

具体做法是,加在了ResNet-50的第一层。

菲菲觉得,这样玩应该没什么X用,因为ImageNet里的类别,根本不是位置的函数。就算开始有这样的偏见,训练中的数据扩增也会把它抹掉了。

令人惊喜的是,研究人员用了100个GPU来训练这个改进之后的神经网络。

结果是,到了小数点后第三位,他们终于获得了微弱的安慰奖。



菲菲说,如果有一万台GPU,大概也是可以用上的,无限风光,在险峰嘛。

真有那么壕的话,不想做点更有意义的训练么?

请开始你的表演

菲菲的嘲讽熔成一句话——

这样的作品,还有人叫好,真让人难过。

那么,你怎么看?

活动报名

实习生招聘

量子位正在招募活动运营实习生,策划执行AI明星公司CEO、高管等参与的线上/线下活动,有机会与AI行业大牛直接交流。工作地点在北京中关村。简历欢迎投递到quxin@qbitai.com

具体细节,请在量子位公众号(QbitAI)对话界面,回复“实习生”三个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

Uber发布的CoordConv遭深度质疑,“翻译个坐标也需要训练?”相关推荐

  1. “三巨头”联合发布万字长文,深度学习将通往何方?

    来源:数据实战派本文约7800字,建议阅读10+分钟 本文回顾近年来深度学习的基本概念和一些突破性成就,描述深度学习的起源,以及讨论一些未来的挑战. 人工神经网络的研究源于以下观察:人类智能来自于高度 ...

  2. 时隔6年,“三巨头”再度联手,发布万字长文:深度学习将通往何方?

    继2015年在Nature上发表"Deep Learning"一文以来,近期,2018年图灵奖获得者."深度学习三巨头 "Yoshua Bengio.Yann ...

  3. 《预训练周刊》第11期:全球最大智能模型“悟道2.0”重磅发布、谷歌KELM:将知识图与语言模型预训练语料库集成...

    No.11 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第11期&l ...

  4. 【深度学习】基于PyTorch的模型训练实用教程之数据处理

    [深度学习]基于PyTorch的模型训练实用教程之数据处理 文章目录 1 transforms 的二十二个方法 2 数据加载和预处理教程 3 torchvision 4 如何用Pytorch进行文本预 ...

  5. 【深度学习】快照集成等网络训练优化算法系列

    [深度学习]快照集成等网络训练优化算法系列 文章目录 1 什么是快照集成? 2 什么是余弦退火学习率? 3 权重空间中的解决方案 4 局部与全局最优解 5 特别数据增强 6 机器学习中解决数据不平衡问 ...

  6. 文本深度表示模型Word2Vec 简介 Word2vec 是 Google 在 2013 年年中开源的一款将词表征为实数值向量的高效工具, 其利用深度学习的思想,可以通过训练,把对文本内容的处理简

    文本深度表示模型Word2Vec 简介 Word2vec 是 Google 在 2013 年年中开源的一款将词表征为实数值向量的高效工具, 其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为 ...

  7. [翻译] 使用 TensorFlow 进行分布式训练

    [翻译] 使用 TensorFlow 进行分布式训练 文章目录 [翻译] 使用 TensorFlow 进行分布式训练 0x00 摘要 1. 概述 2. 策略类型 2.1 MirroredStrateg ...

  8. 深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型

    深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型 1. 概述 2. 目标 3. 工程实践 3.1 数据寻找,数据标注 3.2 训练 3.3 部署应用到桌面程序 4. 总结 1. 概述 ...

  9. 机器学习笔记之深度信念网络(三)贪心逐层预训练算法

    机器学习笔记之深度信念网络--贪心逐层预训练算法 引言 回顾:深度信念网络的结构表示 回顾: RBM \text{RBM} RBM叠加思想 贪心逐层预训练算法 引言 上一节介绍了深度信念网络模型的构建 ...

最新文章

  1. mysql链事务_MYSQL 之事务篇
  2. 为品牌管理增加检索名称和状态项
  3. 数据结构源码笔记(C语言):集合的位向量表示
  4. 计算机组成原理试卷五套,计算机组成原理(五套试题)
  5. android怎么长按一张图片保存到相册_instagram怎么保存图片?
  6. luogu P5304 [GXOI/GZOI2019]旅行者
  7. 【Tools】CSDN-markdown编辑器使用说明
  8. Eclipse里PHP built-in server在操作系统中的实际位置
  9. 基于op07的k型热电偶测量电路_基于OP07和LTC1543温度采集模块的设计
  10. 电池电堆及发动机的测试软件,燃料电池发动机测试系统的开发
  11. python基础作业_017--python基础作业
  12. 基金的A、B、C、E、H,有意思!
  13. Vivado初次使用教程
  14. Python-根据文件名提取文件
  15. 查看加密QQ空间日志
  16. python入门教程陈孟林_Python快速入门指南,没基础没关系
  17. 基于ZigBee技术的智能家居系统实施方案
  18. 分享一个快速下载百度网盘资源的方法
  19. ARMV8体系结构简介:exclusive monitor
  20. 美国华裔二代吐露在美生活真相:出国,请三思而后行

热门文章

  1. AI 人才遭疯抢,Google 为 22 岁印度毕业生开出 1000w+ 年薪
  2. 量子计算是否会终结区块链?
  3. 12306 被质疑过度获取用户隐私,不授权还买不了票
  4. 一人编程累,加班何人陪?1024 最好的礼物给最牛掰的你
  5. 58 同城 iOS 客户端搜索模块组件化实践
  6. Java定时任务原理
  7. matlab检测串口数据帧头,用matlab从串口读入数据产生图像进行分析遇到的问题,求大虾帮助!...
  8. 用python画星座_用python做星座介绍程序。
  9. 华为手机 APP被杀_华为手机服务APP将全新改版 三大升级体验更加出色
  10. 更改oracle字符集为utf_oracle字符集AL16UTF16改为ZHS16GBK