CoordConv(NeurIPS 2018)

paper:An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution

official implementation:https://github.com/uber-research/coordconv

存在的问题

本文揭示并分析了CNN在两种不同类型空间表示之间转换能力的欠缺:从密集笛卡尔表示到稀疏基于像素的表示。虽然这种转换似乎对网络来说很容易学习,但实验结果表明比预计要困难,至少当网络由如若干卷积层组成时是这样的。虽然直接堆叠卷积层擅长于图像分类等任务,但对于坐标转换来说它们不是正确的模型。

作者首先设计了一个数据集Not-so-Clever dataset并在这个数据集上进行模型坐标转换能力的实验。这个数据集是Sort-of-CLEVER数据集的单一目标、灰度版本,具体是在一个64x64的画布上放置9x9的方块,方块完整的落在画布内因此方块中心点可能落入的区域大小为56x56,遍历中心点所有可能的位置得到一个包含3136样本的数据集,对于每个样本 \(i\),数据集包含三个字段:

  • \(C_{i}\in\mathbb{R}^2\),其中心位置的笛卡尔坐标 \((x,y)\)
  • \(P_{i}\in\mathbb{R}^{64\times 64}\),中心点像素的one-hot表示
  • \(I_{i}\in\mathbb{R}^{64\times 64}\),64x64的图像,其中9x9的方块在上面

这3136张图片按两种方式划分为训练集和测试集:uniform,所有可能的位置随机按80/20分成训练集和测试集;quadrant,按象限划分,三个象限作为训练集,另一个象限作为测试集。样本以及划分示例如图2

The CoordConv Layer

本文提出的CoordConv是对标准卷积层的一个简单延伸,这里只考虑二维的情况。卷积在很多任务中都表现良好可能是由于下面三个因素:学习参数较少、在GPU上计算快、具有平移不变性。CoordConv保留了前两个特性,但是允许网络根据任务需要学习保留或丢弃第三点即平移不变性。丢弃平移不变性似乎会阻碍网络学习可泛化函数的能力,但在后续实验中可以看到,分配少量的网络容量来建模问题的non-translation invariant非平移不变性可以得到一个更容易训练的模型并且泛化能力更强。 

CoordConv的具体实现很简单:增加额外的通道,其中填充的是对应位置的坐标(常数,不参与训练),然后与输入沿通道维度concatenate,然后接一个普通卷积层。图3展示了二维坐标 \(i,j\) 的情况。

后续实验中,坐标 \(i,j\) 都进行了归一化使它们落入[-1, 1]范围内。

Supervised Coordinate tasks

Supervised Coordinate Classification

第一个也是最简单的任务是监督坐标分类,如图1上所示,输入为坐标 \((x,y)\),网络需要学习绘制正确的输出坐标。这是一个简单的多分类问题,每个像素位置为一个类别。 

图4展示的是两种划分方式下训练集精度 vs.测试集精度。网络结构如下所示,包含6个stride=2的转置卷积。 

在uniform划分数据集上,模型有一定的泛化能力,但最高的测试精度为86%,远没有达到100%。由此作者得到了第一个惊人的结论:即使在监督训练下,对卷积网络来说,学习一个从 \((x,y)\) 到one-hot像素的平滑函数是困难的。此外,训练卷积网络达到86%的精度需要一个小时,200k的参数。在quadrant划分数据集上,卷积网络根本无法泛化,图5展示了训练集和测试集预测结果的总和,可以直观地看出卷积模型的记忆能力和泛化能力的欠缺。

相反CoordConv在两个划分数据集上都获得了完美的性能,只需要7.5k的参数和10-20s的训练时间。参数的简约进一步验证了它是更适合坐标转换任务的模型。

Supervised Coordinate Regression

由于学习由笛卡尔坐标转换为基于像素的坐标非常困难,作者又研究了相反的转换是否同样困难。作者尝试了不同的卷积网络结构一个4层的卷积层加全连接层(85k参数,具体结构表S1所示)在uniform划分数据集上表现很好(平均误差不到半个像素),但同样的结构在quadrant划分数据上完全失败了。一个小的全卷积结构(12k参数)在quadrant划分数据集上可以实现有限的泛化(误差平均约5个像素)但在uniform划分数据集上表现很差。如图5右所示。 

许多因素都可能导致性能的变化,包含max-pooling、BN、全连接层的使用,作者并没有充分研究每个因素在这些任务上导致表现不佳的程度,相反只报告了在两种划分数据集上寻找可行架构的努力并没有产生任何赢家。相比之下,一个900参数的CoordConv模型,具体一个CoordConv层后接几层普通卷积就可以在两种划分数据集上快速训练和泛化。

Applicability to Classification, Object Detection

正如预期的那样,对于需要平移不变性的分类任务,CoordConv对分类任务并没有显著的帮助。添加一个额外的8输出通道的1x1 CoordConv,ResNet-50的Top-5精度运行5次平均只提升了0.04%。但至少CoordConv不会影响性能,因为它总是可以学会忽略坐标。 

目标检测的实验是在包含随机缩放并在64x64的背景上随机放置的MNIST数字组成的数据集上进行的,训练集有9000张,测试集有1000张。模型采用Faster R-CNN,结构如下所示

结果如下,可以看到当使用CoordConv,测试集的IOU提升了24%。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/696025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

远程连接 vscode 出错 “远程主机可能不符合 glibc 和 libstdc++ VS Code 服务器的先决条件”

原因: vscode 版本是 1.86,服务器上的 glibc 和 libstdc 版本不满足 要求(2.28 和 3.4.25)。 解决: 1、下载 1.85.2,解压直接运行 Code.exe。 2、回退 Remote-ssh 到 0.107.1。 参考: vscode 1.86版本远程ssh不兼容旧…

Leetcode155(设计最小栈)

例题: 分析: 题目要求我们必须在常数时间内检索到最小元素。 我们可以使用两个栈(A、B)来实现,A栈用来正常存储数据、弹出数据, B栈用于存储A栈中的最小元素,如下图: 刚开始&#…

Spring 类型转换、数值绑定与验证(一)— DataBinder

DataBinder 是Spring用于数据绑定、类型转换及验证的类。使用场景有:1)xml配置文件定义bean,Spring 内部使用DataBinder 来完成属性的绑定;2)Web请求参数绑定,在Spring MVC 中,Controller的方法参数通常会自…

Stable Diffusion 模型分享:Indigo Furry mix(人类与野兽的混合)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十

开启智能互动新纪元——ChatGPT提示词工程的引领力

目录 提示词工程的引领力 高效利用ChatGPT提示词方法 提示词工程的引领力 近年来,随着人工智能技术的迅猛发展,ChatGPT提示词工程正逐渐崭露头角,为智能互动注入了新的活力。这一技术的引入,使得人机交流更加流畅、贴近用户需求&…

2.22作业

test.c #include "test.h" seq_p creat_list(){seq_p L(seq_p)malloc(sizeof(seq_list));if(LNULL){printf("申请空间失败\n");return 0;}L->len0;return L; } int seq_p_empt(seq_p L){if(LNULL){return -12;}return L->len0?1:0; } int seq_p_fu…

华为OD机试真题-寻找最富裕的小家庭-2023年OD统一考试(C卷) --Python--开源

题目: 考察内容: dict–update—for sum max 代码: """ 题目分析:输入: N int 1,1000 成员总数 list len(list)N int 1, 1000000 财富值 N-1行, N1 N2, N1是N2的父节点 输出&#xff…

操作系统导论-课后作业-ch19

1. 本书在第6章中有过介绍,gettimeofday函数最多精确到us,并且大致精确(并不完全精确),需要多迭代几次减少误差,循环次数太多也会导致结束时间小于开始时间(即回滚)的现象&#xff…

两数相加

2. 两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个…

C语言—指针(1)

碎碎念:做指针题的时候我仿佛回到了原点&#xff0c;总觉得目的是为了把框架搭建起来&#xff0c;我胡说的哈31 1.利用指针变量将一个数组中的数据反向输出。 /*1.利用指针变量将一个数组中的数据反向输出。*/#include <stdio.h> #include <time.h> #include <…

一文读懂:AWS 网络对等互连(VPC peering)实用操作指南

VPC peering connection-网络对等互连在您的 Atlas VPC 和云提供商的 VPC 之间建立私有连接。该连接将流量与公共网络隔离以提高安全性。本篇文章有VPC peering的操作指南以及价格等信息。如还有疑问请联系我们MongoDB的销售&#xff0c;客户成功经理或解决方案架构师。 1 使用…

2000-2022年各省环境规制数据(原始数据+计算过程+计算结果)

2000-2022年各省环境规制数据&#xff08;原始数据计算过程计算结果&#xff09; 1、时间&#xff1a;2000-2022年 2、范围&#xff1a;30省 3、来源&#xff1a;各省年鉴、国家统计局、统计年鉴 4、指标&#xff1a;年份、省份、工业污染源治理投资完成实际额、工业增加值…

gitlab,从A仓库迁移某个工程到B仓库,保留提交记录

从A仓库&#xff0c;拷贝 git clone --bare ssh://git192.168.30.88:22/framework/platform.git 在B仓库新建工程&#xff0c;注意&#xff1a;一定要去掉默认的生成README文件进入platform.git 文件夹下&#xff0c;推送到B仓库 git push --mirror ssh://git192.168.30.100…

压缩感知常用的重建算法

重建算法的基本概念 在压缩感知&#xff08;Compressed Sensing, CS&#xff09;框架中&#xff0c;重建算法是指将从原始信号中以低于奈奎斯特率采集得到的压缩测量值恢复成完整信号的数学和计算过程。由于信号在采集过程中被压缩&#xff0c;因此重建算法的目标是找到最符合…

文件上传漏洞--Upload-labs--Pass20--数组绕过

一、漏洞原理 漏洞来源&#xff1a;count()函数漏洞。 现自定义一个数组 arr[]&#xff0c;定义arr[0]1,arr[3]2, 此时count(arr)的值为2&#xff0c;则arr[count[arr]]即为arr[2]&#xff0c;但是arr[2]未定义&#xff0c;即为一个空值&#xff0c;若使用count()函数的本意是…

图形系统开发实战课程:进阶篇(上)——6.图形交互操作:拾取

图形开发学院&#xff5c;GraphAnyWhere 课程名称&#xff1a;图形系统开发实战课程&#xff1a;进阶篇(上)课程章节&#xff1a;“图形交互操作:拾取”原文地址&#xff1a;https://www.graphanywhere.com/graph/advanced/2-6.html 第六章 图形交互操作:拾取 \quad 在图形系统…

【网络编程】okhttp深入理解

newCall 实际上是创建了一个 RealCall 有三个参数&#xff1a;OkHttpClient&#xff08;通用配置&#xff0c;超时时间等&#xff09; Request(Http请求所用到的条件&#xff0c;url等) 布尔变量forWebSocket&#xff08;webSocket是一种应用层的交互方式&#xff0c;可双向交互…

2.22使用GPIO子系统编写LED灯驱动,应用程序测试//注册三个按键的中断

使用GPIO子系统编写LED灯驱动 驱动程序 #include <linux/init.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_gpio.h> #include <linux/gpio.h> #include <linux/timer.h> #include <linux/interrupt.h>…

ubuntu22.04@Jetson Orin Nano之CSI IMX219安装

ubuntu22.04Jetson Orin Nano之CSI IMX219安装 1. 源由2. 安装2.1 硬件安装2.2 软件配置2.3 新增摄像头 3. 效果4. 参考资料 1. 源由 折腾半天时间&#xff0c;捣鼓这个套装摄像头(IMX219)的安装&#xff0c;死活就是没有这个设备。世界总是这么小&#xff0c;看看遇到问题的大…

排序算法之——快速排序

快速排序 1.基本思想2.图示详解——以升序排列为例3.对基本思想和图示的补充说明4.代码实现5.空间、时间复杂度5.1最好情况5.2最坏情况 6.区间按照基准值划分的方法6.1 Hoare法6.2 挖坑法 7.优化措施7.1三数取中法7.1.1三数取中法——核心代码7.1.2优化效果7.1.3补充说明 7.2 递…