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

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

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


image

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

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

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



image


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

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

加个特征,而已

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

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



image

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

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

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

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

image

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

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

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

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

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


image

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

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

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

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

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 position
12A[pos_y, pos_x]=1
13# Create what will be the coordinate features
14X=np.zeros_like(A)
15Y=np.zeros_like(A)
16# Fill the X-coordinate value
17for x in range(I_width):
18   X[:,x] = x
19# Fill the Y-coordinate value
20for y in range(I_height):
21   Y[y,:] = y
22# Define the convolutional operators
23op1 = 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 DY
33CA0 = sp.convolve2d(A, opy, mode='same')
34CY0 = sp.convolve2d(Y, op1, mode='same')
35DY=CA0+CY0
36# Convolve to get the second feature map DX
37CA1 = sp.convolve2d(A, opx, mode='same')
38CX0 = sp.convolve2d(X, op1, mode='same')
39DX=CA1+CX0
40# Apply half rectifying nonlinearity
41DX[np.where(DX<0)]=0
42DY[np.where(DY<0)]=0
43# 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 result
47assert(pos_x == int(result_x))
48assert(pos_y == int(result_y))
49print result_x 
50print result_y

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

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

100个GPU

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

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

image

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

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

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

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

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

image

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

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

请开始你的表演

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

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

那么,你怎么看?

原文发布时间为:2018-07-16
本文来自云栖社区合作伙伴“量子位”,了解相关信息可以关注“量子位

相关文章
|
算法 Go 文件存储
DAMO-YOLO: 兼顾速度与精度的新目标检测框架
我们团队最近开源了DAMO-YOLO!其效果达到了YOLO系列的SOTA,欢迎各位试用!​简介DAMO-YOLO是一个兼顾速度与精度的目标检测框架,其效果超越了目前的一众YOLO系列方法,在实现SOTA的同时,保持了很高的推理速度。DAMO-YOLO是在YOLO框架基础上引入了一系列新技术,对整个检测框架进行了大幅的修改。具体包括:基于NAS搜索的新检测backbone结构,更深的neck结构,精
813 0
DAMO-YOLO: 兼顾速度与精度的新目标检测框架
|
4月前
|
人工智能 自动驾驶 安全
破壁人AI百度:科技公司反内卷的典型样本
破壁人AI百度:科技公司反内卷的典型样本
42 0
破壁人AI百度:科技公司反内卷的典型样本
|
9月前
|
数据可视化 计算机视觉
【计算机视觉】DINOv2的四种模型代码示范(含源代码)
DINOv2利用最大模型ViT-g的知识蒸馏,而不是从头开始训练,从而提高了性能。这个过程包括将知识从更大、更复杂的模型(教师)转移到更小的模型(学生)。学生模型被训练来模仿教师的输出,从而继承其优越的能力。这个过程提高了小型模型的性能,使它们更有效率。
|
3月前
|
Java 开发者
Java 学习路线 2024 最新版!
又对上次分享的 Java 学习路线进行了简单修改完善,并增加了免登录下载和黑夜模式,这里重发一下。 花了一个月零碎的时间,我根据当下 Java 后端求职和招聘的最新要求,对之前写的 Java 后端学习路线进行了全面的优化和改进。
|
1月前
|
NoSQL Java Redis
【问题篇】解决Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException
【问题篇】解决Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException
254 0
|
11月前
|
计算机视觉 索引
必备技能 | YOLOv6中的用Channel-wise Distillation进行的量化感知训练来自哪里?(一)
必备技能 | YOLOv6中的用Channel-wise Distillation进行的量化感知训练来自哪里?(一)
177 0
|
10月前
|
算法 PyTorch 算法框架/工具
pytorch实现空洞卷积+残差网络实验(torch实现)
pytorch实现空洞卷积+残差网络实验(torch实现)
318 0
|
机器学习/深度学习 编解码 达摩院
【OpenVI-图像超分实战篇】别用GAN做超分了,快来试试基于扩散模型的图像超分吧!
近10年来,深度学习技术得到了长足进步,在图像增强领域取得了显著的成果,尤其是以GAN为代表的生成式模型在图像复原、老片修复,图像超分辨率等方面大放异彩。图像超分辨率是视频增强方面,用于提升画质的典型应用。生成对抗网络GAN使得在图像分辨率增加的同时,保持细节特征,补充生成真实的纹理,其中应用广泛的工作是Real-ESRGAN。 扩散模型DiffusionModel在图像超分辨率这方面的新的应用,展现出其超过GAN的生成多样性和真实性。看完后,你会发现,还在用GAN做图像超分辨率吗?已经OUT了,快来试试DiffusionModel吧!
25543 3
【OpenVI-图像超分实战篇】别用GAN做超分了,快来试试基于扩散模型的图像超分吧!
|
机器学习/深度学习 存储 数据挖掘
基于Pytorch的图卷积网络GCN实例应用及详解
基于Pytorch的图卷积网络GCN实例应用及详解
525 0
基于Pytorch的图卷积网络GCN实例应用及详解
|
算法 Windows
RANSAC算法理解
RANSAC算法理解
288 0
RANSAC算法理解