Uber发布的CoordConv遭深度质疑,“翻译个坐标也需要训练?”
圆栗子 编译自 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遭深度质疑,“翻译个坐标也需要训练?”相关推荐
- “三巨头”联合发布万字长文,深度学习将通往何方?
来源:数据实战派本文约7800字,建议阅读10+分钟 本文回顾近年来深度学习的基本概念和一些突破性成就,描述深度学习的起源,以及讨论一些未来的挑战. 人工神经网络的研究源于以下观察:人类智能来自于高度 ...
- 时隔6年,“三巨头”再度联手,发布万字长文:深度学习将通往何方?
继2015年在Nature上发表"Deep Learning"一文以来,近期,2018年图灵奖获得者."深度学习三巨头 "Yoshua Bengio.Yann ...
- 《预训练周刊》第11期:全球最大智能模型“悟道2.0”重磅发布、谷歌KELM:将知识图与语言模型预训练语料库集成...
No.11 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第11期&l ...
- 【深度学习】基于PyTorch的模型训练实用教程之数据处理
[深度学习]基于PyTorch的模型训练实用教程之数据处理 文章目录 1 transforms 的二十二个方法 2 数据加载和预处理教程 3 torchvision 4 如何用Pytorch进行文本预 ...
- 【深度学习】快照集成等网络训练优化算法系列
[深度学习]快照集成等网络训练优化算法系列 文章目录 1 什么是快照集成? 2 什么是余弦退火学习率? 3 权重空间中的解决方案 4 局部与全局最优解 5 特别数据增强 6 机器学习中解决数据不平衡问 ...
- 文本深度表示模型Word2Vec 简介 Word2vec 是 Google 在 2013 年年中开源的一款将词表征为实数值向量的高效工具, 其利用深度学习的思想,可以通过训练,把对文本内容的处理简
文本深度表示模型Word2Vec 简介 Word2vec 是 Google 在 2013 年年中开源的一款将词表征为实数值向量的高效工具, 其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为 ...
- [翻译] 使用 TensorFlow 进行分布式训练
[翻译] 使用 TensorFlow 进行分布式训练 文章目录 [翻译] 使用 TensorFlow 进行分布式训练 0x00 摘要 1. 概述 2. 策略类型 2.1 MirroredStrateg ...
- 深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型
深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型 1. 概述 2. 目标 3. 工程实践 3.1 数据寻找,数据标注 3.2 训练 3.3 部署应用到桌面程序 4. 总结 1. 概述 ...
- 机器学习笔记之深度信念网络(三)贪心逐层预训练算法
机器学习笔记之深度信念网络--贪心逐层预训练算法 引言 回顾:深度信念网络的结构表示 回顾: RBM \text{RBM} RBM叠加思想 贪心逐层预训练算法 引言 上一节介绍了深度信念网络模型的构建 ...
最新文章
- mysql链事务_MYSQL 之事务篇
- 为品牌管理增加检索名称和状态项
- 数据结构源码笔记(C语言):集合的位向量表示
- 计算机组成原理试卷五套,计算机组成原理(五套试题)
- android怎么长按一张图片保存到相册_instagram怎么保存图片?
- luogu P5304 [GXOI/GZOI2019]旅行者
- 【Tools】CSDN-markdown编辑器使用说明
- Eclipse里PHP built-in server在操作系统中的实际位置
- 基于op07的k型热电偶测量电路_基于OP07和LTC1543温度采集模块的设计
- 电池电堆及发动机的测试软件,燃料电池发动机测试系统的开发
- python基础作业_017--python基础作业
- 基金的A、B、C、E、H,有意思!
- Vivado初次使用教程
- Python-根据文件名提取文件
- 查看加密QQ空间日志
- python入门教程陈孟林_Python快速入门指南,没基础没关系
- 基于ZigBee技术的智能家居系统实施方案
- 分享一个快速下载百度网盘资源的方法
- ARMV8体系结构简介:exclusive monitor
- 美国华裔二代吐露在美生活真相:出国,请三思而后行
热门文章
- AI 人才遭疯抢,Google 为 22 岁印度毕业生开出 1000w+ 年薪
- 量子计算是否会终结区块链?
- 12306 被质疑过度获取用户隐私,不授权还买不了票
- 一人编程累,加班何人陪?1024 最好的礼物给最牛掰的你
- 58 同城 iOS 客户端搜索模块组件化实践
- Java定时任务原理
- matlab检测串口数据帧头,用matlab从串口读入数据产生图像进行分析遇到的问题,求大虾帮助!...
- 用python画星座_用python做星座介绍程序。
- 华为手机 APP被杀_华为手机服务APP将全新改版 三大升级体验更加出色
- 更改oracle字符集为utf_oracle字符集AL16UTF16改为ZHS16GBK