博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汤晓鸥为CNN搓了一颗大力丸
阅读量:6094 次
发布时间:2019-06-20

本文共 1816 字,大约阅读时间需要 6 分钟。

大把时间、大把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在模型中的搭配。

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

论文:

(暂时还没有的)代码:

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

愿此repo早日填上~

原文发布时间为:2018-07-27

本文来自云栖社区合作伙伴“”,了解相关信息可以关注“量子位”。

转载地址:http://qtwza.baihongyu.com/

你可能感兴趣的文章
Android Annotation扫盲笔记
查看>>
React 整洁代码最佳实践
查看>>
聊聊架构设计做些什么来谈如何成为架构师
查看>>
Java并发编程73道面试题及答案
查看>>
iOS知识小集·设置userAgent的那件小事
查看>>
移动端架构的几点思考
查看>>
Tomcat与Spring中的事件机制详解
查看>>
Spark综合使用及用户行为案例区域内热门商品统计分析实战-Spark商业应用实战...
查看>>
初学者自学前端须知
查看>>
Retrofit 源码剖析-深入
查看>>
C#由变量捕获引起对闭包的思考
查看>>
QTP的那些事—WMI+SQL分析查询工具
查看>>
Android中EditText
查看>>
最近笔记本电脑开机启动正常,进入黑屏?
查看>>
【字符串排序】n个数连接得到最小或最大的多位整数
查看>>
内存对齐与ANSI C中struct型数据的内存布局 【转】
查看>>
Jmeter之Http Cookie Manager
查看>>
极速理解设计模式系列:16.迭代器模式(Iterator Pattern)
查看>>
Java刷题知识点之内存溢出和内存泄漏的概念、区别、内存泄露产生原因、内存溢出产生原因、内存泄露解决方案、内存溢出解决方案...
查看>>
Java:正则表达式的详解
查看>>