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%。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BLUEZ学习笔记_GATT_server_client_简单解析

文章参考了以下内容 蓝牙bluez5的开发方法及入门教程_bluez蓝牙配网demo-CSDN博客文章浏览阅读1w次,点赞15次,收藏99次。1 摘要这篇文章的主要目的是告诉大家应该如何使用bluez进行开发,由于bluez的文档实在太少了,入门门槛实在太…

vue保留用户在列表的操作记录, beforeRouteLeave离开当前组件缓存数据即可

最近遇到一个需求,用户在列表页的查询输入框输入条件后,点击查询,然后此时切换菜单,再回到之前的页面,希望能停留在上一次输入的结果上,如下例子,用户管理页面,输入yangfan这个关键词搜索后,结果如下图: 当我此时点击权限管理后,再点击用户管理切回来,结果依旧如上…

(二十二)Flask之上下文管理第三篇【收尾—讲一讲g】

目录: 每篇前言:g到底是什么?生命周期在请求周期内保持数据需要注意的是: 拓展—面向对象的私有字段深入讲解一下那句: 每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域…

ubuntu内核卸载重装

目录 问题1.问题复现2.可以正常启动的方式 保存快照卸载有问题的内核重装最新内核参考资料 问题 1.问题复现 ubuntu开机出现如下画面,启动不能正常启动 2.可以正常启动的方式 使用其他内核可以正常工作 保存快照 在解决之前保存快照,防止破坏时恢复 卸载有问题的内核…

stm32——hal库学习笔记(DMA实验)

一、DMA介绍(了解) 二、DMA结构框图介绍(熟悉) 三、DMA相关寄存器介绍(熟悉) 四、DMA相关HAL库驱动介绍(掌握) 五、DMA配置步骤(掌握) 六、编程实战&#xff…

训练yolov8+SAM的过程记录

1-首先将拿到的数据集进行重新命名(dataset1:是经过校色之后裁剪的图片;dataset2:原图) 图片文件从1.jpg开始命名的代码: folder_path rC:\Users\23608\Desktop\Luli_work\data\fanStudent\tongueseg\Fan…

【C语言】长篇详解,字符系列篇2-----strcat,strcmp,strncpy,strncat,strncmp函数的使用和模拟实现【图文详解】

欢迎来CILMY23的博客喔,本期系列为【C语言】长篇详解,字符系列篇2-----“混杂”的字符串函数,字符串函数的使用和模拟实现【图文详解】,图文讲解各种字符串函数,带大家更深刻理解C语言中各种字符串函数的应用&#xff…

springmvc+ssm+springboot房屋中介服务平台的设计与实现 i174z

本论文拟采用计算机技术设计并开发的房屋中介服务平台,主要是为用户提供服务。使得用户可以在系统上查看房屋出租、房屋出售、房屋求购、房屋求租,管理员对信息进行统一管理,与此同时可以筛选出符合的信息,给笔者提供更符合实际的…

《Linux C编程实战》笔记:消息队列

消息队列是一个存放在内核中的消息链表,每个消息队列由消息队列标识符标识。与管道不同的是消息队列存放在内核中,只有在内核重启(即操作系统重启)或显示地删除一个消息队列时,该消息队列才会被真正的删除。 操作消息…

英伟达推出免训练,可生成连贯图片的文生图模型

目前,多数文生图模型皆使用的是随机采样模式,使得每次生成的图像效果皆不同,在生成连贯的图像方面非常差。 例如,想通过AI生成一套图像连环画,即便使用同类的提示词也很难实现。虽然DALLE 3和Midjourney可以对图像实现…

如何修改unity的背景颜色

要在Unity中将背景颜色设为黑色,可以按照以下步骤进行: 1、在Unity编辑器中,选择你想要修改背景颜色的摄像机对象(一般是Main Camera)。 2、在Inspector面板中,找到"Clear Flags"(清…

掌握Redis核心:常用数据类型的高效运用秘籍!

在数据驱动的时代,高效地存储和处理数据成为了开发者们的重要任务。Redis,作为一个开源的高性能键值对(key-value)数据库,以其独特的数据结构和丰富的功能,成为了众多项目的首选。 今天,我们就…

高精度双向计量旋翼干式脉冲水表

在现代社会,水资源的合理利用与精确管理至关重要。随着科技的不断进步,水表技术也在迭代升级。今天,我们将探讨一种高科技水表——高精度双向计量旋翼干式脉冲水表,它如何改变我们的用水习惯,提升水资源管理的效率。 1…

Stable Diffusion 模型分享:FenrisXL(芬里斯XL)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 FenrisXL 是一个拟人化的 SDXL 模型,可以为动物们穿上人类的衣服&…

吴恩达机器学习全课程笔记第三篇

目录 前言 P42-P48 神经元和大脑 神经网络中的层 更复杂的神经网络 前向传播(做出预测) P49-P53 代码中的推理 构建一个神经网络 P54-P60 矩阵乘法 TensorFlow框架实现神经网络 前言 这是吴恩达机器学习笔记的第三篇,第二篇笔记…

苍穹外卖学习-----2024/02/21

1.新增员工 /*** 处理SQL异常* param sqlIntegrityConstraintViolationException* return*/ExceptionHandlerpublic Result exceptionHandler(SQLIntegrityConstraintViolationException sqlIntegrityConstraintViolationException){//String message sqlIntegrityConstraintV…

IDEA启动Springboot报错:无效的目标发行版:17 的解决办法

无效的目标发行版:17 的解决办法 一般有两个原因,一可能是本地没有安装JDK17,需要安装后然后在IDEA中选择对应版本;二可能是因为IDEA版本太低,不支持17,需要升级IDEA版本。然后在File->Project Struct…

Zabbix 6.2.1 安装

目录 1、监控介绍 监控的重要性 网站的可用性 监控范畴 如何监控 2、Zabbix 介绍 zabbix 简介 zabbix 主要功能 zabbix 监控范畴 Zabbix 监控组件 zabbix 常见进程 zabbix agentd 工作模式 zabbix 环境监控中概念 3、搭建LNMP 拓扑规划 安装MySQL 安装 Nginx …

libpng编译-android端(libpng官网下载是没有android编译脚本)

libpng编译-android端(libpng官网下载是没有android编译脚本) 环境配置(mac的原理一样可以自己配置,我在linux编译) 配置ubuntu的ndk环境 1、执行 sudo vim /etc/profile,对Path的路径文件进行更改&…

python(23)——while循环

前言 在Python中,while 循环用于重复执行一段代码块,只要指定的条件保持为真(True)。一旦条件变为假(False),循环就会终止。while 循环通常用于在不知道循环将执行多少次的情况下进行迭代。 w…