汤晓鸥为CNN搓了一颗大力丸

简介: 香港中文大学-商汤联合实验室的潘新钢、罗平、汤晓鸥和商汤的石建萍,给出了一个新选项。他们设计了一种新的卷积架构,既能让CNN提升它在原本领域的能力,又能帮它更好地泛化到新领域。

大把时间、大把GPU喂进去,训练好了神经网络。

接下来,你可能会迎来伤心一刻:

同学,测试数据和训练数据,色调、亮度不太一样。

同学,你还要去搞定一个新的数据集。

是重新搭一个模型呢,还是拿来新数据重新调参,在这个已经训练好的模型上搞迁移学习呢?

香港中文大学-商汤联合实验室的潘新钢、罗平、汤晓鸥和商汤的石建萍,给出了一个新选项。

他们设计了一种新的卷积架构,既能让CNN提升它在原本领域的能力,又能帮它更好地泛化到新领域。

这个新架构叫做IBN-Net。

它在伯克利主办的WAD 2018 Challenge中获得了Drivable Area(可行驶区域)赛道的冠军。相关的论文Two at Once: Enhancing Learning and Generalization Capacities via IBN-Net发表在即将召开的计算机视觉顶会ECCV 2018上。

image

给神经网络加个buff

IBN-Net并不是一个像ResNet那样独立的神经网络架构,它可以和其他深度学习模型结合起来使用,提升它们的性能,但不会增加计算成本。经典的DenseNet、ResNet、ResneXt、SENet等等,都能用它来助攻。

这就相当于给深度学习模型加了个buff,或者说,喂下了一颗大力丸。

image

同时,它还是迁移学习的替代品。

在一个数据集上训练好了模型,如果测试数据和训练集风格、颜色上有点不一样,或者换个数据集来测试,模型的性能就会大打折扣。

这时候,按套路就该迁移学习出场了,用新数据给训练好的模型调参。

数据集这么多,现实世界更是丰富多彩,一个一个地去重新搭模型或者调参数,要多少工程师才够用?

而IBN-Net就不需要新数据来调参,能自动让模型更好地适应新的领域。

不怕加滤镜,跨越次元壁

在图像识别和语义分割任务上,IBN-Net都能帮深度学习模型提分。

image

比如在ImageNet上,加了IBN-Net(的各种变体),就能在同样的参数设置,同样的计算成本下,让ResNet50的错误率下降0.5-1.5个百分点。

如果测试数据在原始ImageNet的基础上再做一些变化,调整一下颜色亮度对比度,甚至用Cycle-GAN改改风格,基本款ResNet50错误率就会大幅上升。而加了IBN-Net的版本,错误率就能少上升一些,如上图括号中的数据所示。

语义分割任务上也是一样。

image

IBN-Net加持的ResNet50,能在现实世界的城市街道图像数据集Cityscapes、虚拟世界的GTA5数据集上都取得比原版更好的成绩。

想让模型跨越虚拟与现实之间的次元壁,既能适应Cityscapes,也能用在GTA5上,IBN-Net也很擅长。

论文中说,将模型从Cityscapes迁移到GTA5,用IBN-Net能让迁移后的性能少下降8.5%;从GTA5迁移到Cityscapes,则能少下降7.5%。

这种跨越次元壁的迁移可大有用处。比如说在自动驾驶领域,用游戏来初步训练无人车是个常见的操作,可是把这样训练出来的算法搬到现实环境中,显然要经过大量调整。

让模型更快更好地适应不同环境的IBN-Net,简直就是效率提升利器。

“IBN”究竟是什么?

要理解这个IBN-Net的架构,要先从两种标准化方法IN(Instance Normalization,实例标准化)和BN(Batch Normalization,批标准化)。

它们都能让神经网络调参更简单,用上更高的学习速率,收敛更快。如果你搭过图像分类模型,batchnorm(BN)大概很熟悉了,而IN更多出现在风格迁移等任务上。与BN相比,IN有两个主要的特点:第一,它不是用训练批次来将图像特征标准化,而是用单个样本的统计信息;第二,IN能将同样的标准化步骤既用于训练,又用于推断。

潘新钢等发现,IN和BN的核心区别在于,IN学习到的是不随着颜色、风格、虚拟性/现实性等外观变化而改变的特征,而要保留与内容相关的信息,就要用到BN。

二者结合,就成了IBN-Net。

image


image

还可以根据需求,来调整IN和BN在模型中的搭配。

各种变体的具体情况,论文中有更清晰的描述。

论文:https://arxiv.org/pdf/1807.09441.pdf

(暂时还没有的)代码:https://github.com/XingangPan/IBN-Net

嗯……开源代码确实还没放出,但repo已经搭好了。

愿此repo早日填上~

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

相关文章
|
12月前
|
机器学习/深度学习 安全
洛谷P2245 星际导航(kruskal重构树)
洛谷P2245 星际导航(kruskal重构树)
98 0
|
算法 C语言 C++
算法修炼之练气篇——练气一层
前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
96 0
|
存储 关系型数据库 索引
B+树层数计算(面试官直呼内行)
首先搞清楚一个常识,我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛 在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是 4k
1943 0
进阶指南图论——闇の連鎖 I. 黑暗的锁链(树上差分+LCA)
进阶指南图论——闇の連鎖 I. 黑暗的锁链(树上差分+LCA)
141 0
【算法提高——第三讲(一)】图论(2)
【算法提高——第三讲(一)】图论(2)
【算法提高——第三讲(一)】图论(2)
【算法提高——第三讲(二)】图论(1)
【算法提高——第三讲(二)】图论(1)
【算法提高——第三讲(二)】图论(1)
【算法提高——第三讲(一)】图论(1)
【算法提高——第三讲(一)】图论(1)
【算法提高——第三讲(一)】图论(1)
【算法提高——第三讲(二)】图论(2)
【算法提高——第三讲(二)】图论(2)
【算法提高——第三讲(二)】图论(2)
【算法提高——第三讲(二)】图论(4)
【算法提高——第三讲(二)】图论(4)
【算法提高——第三讲(二)】图论(4)