Auto Seg-Loss:自动损失函数设计

2020 年 10 月 21 日 CVer

点击上方“CVer”,选择加"星标"置顶

重磅干货,第一时间送达

本文者:ILOAH

https://zhuanlan.zhihu.com/p/266102401

本文已由原作者授权,不得擅自二次转载


前段时间,有一则新闻比较火:

https://www.zhihu.com/question/423291211/answer/1500141433

体能水平可以反映竞技水平吗?对于普通人来说,体能水平和单项的比赛能力大多存在正相关关系。然而,高水平运动员需要的是对特定项目的针对性训练,更高的体能水平并不意味着更好的成绩,比如对于某些项目(如长跑)来说,上肢过于强壮反而是负担。因此,许多高水平运动员即使在专项上打破了亚洲记录,面对体能测试也败下阵来。反过来考虑,如果一个运动员日常只以体能测试的项目作为自己的训练目标,最终长跑、冲刺、引体、深蹲等项目炉火纯青,那么他大概率也可以在某些专项上凭借身体素质取得远超普通人的成绩,但并不足以成为顶尖的运动员。

为什么要说这则新闻呢?实际上,如果把我们的神经网络模型看做一个运动员,许多时候,这个运动员面对的专项比赛的评价指标(比如语义分割里的mIoU)和它的训练目标(比如常用的Cross Entropy Loss)并不完全一致。尽管CE Loss在绝大多数时候可以训练出不错的模型,但这是凭借足够强的“身体素质”得到的成绩,缺少了对于专项的针对性优化。

那么,能否用专项的评价指标,比如mIoU来指导训练呢?不幸的是,多数的评价指标都是不可微的,无法直接通过反向传播进行训练。当然,这并不能阻挡住研究者们的脚步。许多研究尝试通过对评价指标进行可微近似的方式,得到一个代理损失函数来指导训练(比如The Lovász-Softmax loss: A tractable surrogate for the optimization of the intersection-over-union measure in neural networks 和 Learning Surrogates via Deep Embedding)。但是,这些可微近似并不一定能让模型取得良好的训练效果——尽管训练目标是一致的,但教练的训练计划(梯度)的好坏也决定了运动员(模型)的训练水平。因此,代理损失函数的设计需要expertise以及较高的试错成本;即便如此,设计出的代理损失函数有许多也不足以独当一面,需要和CE Loss联合训练才能达到不错的效果。

Auto Seg-Loss: Searching Metric Surrogates for Semantic Segmentation


论文:https://arxiv.org/abs/2010.07930

Auto Seg-Loss 希望(在语义分割任务上)将这个流程自动化。简单来说,我们发现主流的语义分割指标(基本由TP/TN/FP/FN组成)都能写成可微运算(比如加、乘)、量化(one-hot)和logical运算(与AND、或OR)的形式。由于logical运算实际上只定义在  上,我们使用一个参数化的曲面对logical运算进行插值,使得其在  上有可微的定义,并使用softmax替代one-hot量化,从而得到一个可微版本的代理损失函数。接下来,我们使用强化学习算法(PPO2)对这个曲面的形状进行搜索,从而保证这个代理损失函数能够良好地指导训练。图1是我们算法的整体框架。

图1 整体框架


在实现时,我们尝试了分段Bezier曲线分段线性曲线两种参数化的方式。我们提出了真值表约束单调性约束作为先验,以限制参数化曲面的形状。实验表明这两种参数化的方式都可以得到不错的代理损失函数,同时这两条约束有效地提高了搜索的效率和效果。

我们在PASCAL VOC和Cityscapes上进行了实验。相对于手动设计的代理损失函数或Cross Entropy的改进,搜索出来的代理损失函数在主流的语义分割指标上都能达到on par或更高的水平,尤其对边缘相关指标的提升比较大。值得一提的有两点:

  1. 可能得益于搜索空间的设计,我们的搜索效率比较高,在VOC上使用DeepLab V3+,对于mIoU的搜索只需要8个小时左右(8卡V100,实际上搜到一半已经基本收敛了,时间大概相当于相同数据集两次正常训练);

  2. 我们搜索出的代理损失函数可以很好地迁移到其他的模型架构数据集,因此只需要一次搜索就可多次使用(不仅如此,我们发现针对mIoU搜索出的参数同样适用于FWIoU和Boundary IoU等同类指标)。下面的两个表是我们尝试的两种参数化形式的实验结果。

表1 分段bezier参数化实验效果
表2 分段linear参数化实验效果

对于边缘相关的指标,我们发现,单独使用边缘指标指导训练会使模型只关注边缘的分割结果。图2展示了这个现象。通过将边缘指标和整体指标(如mIoU)组合进行训练,模型可以在保证合理的整体表现的同时提高边缘的分割效果。另外一个有趣的发现是,用来评估边缘准确度的Boundary F1 score在容许误差不为0时,用来指导训练可能会造成边缘的锯齿效果,这实际上是对这个指标的一个hack。我们在附录里讨论了这个问题。

图2 单独使用边缘指标以及组合整体指标

我们希望Auto Seg-Loss可以降低研究以及业务中,为了某个给定的指标(比如边缘部分的IoU或者F-score)设计和调整损失函数时的试错成本,向自动损失函数设计前进一步。我们的文章已经在arxiv挂出来了,代码也即将开源并整合进一些开源Segmentation框架,期待各位试用以及与各位的讨论!

论文:https://arxiv.org/abs/2010.07930


论文下载


在CVer公众号后台回复:1021,即可下载上述论文


下载2


后台回复:CVPR2020,即可下载代码开源的论文合集

后台回复:ECCV2020,即可下载代码开源的论文合集


重磅!CVer-图像分割 微信交流群已成立


扫码添加CVer助手,可申请加入CVer-图像分割 微信交流群,旨在交流语义分割、实例分割、全景分割和医学图像分割等


同时也可申请加入CVer大群和细分方向技术群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。


一定要备注:研究方向+地点+学校/公司+昵称(如图像分割+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加群


▲长按关注我们

整理不易,请给CVer点赞和在看

登录查看更多
0

相关内容

代理损失函数或者称为替代损失函数,一般是指当目标函数非凸、不连续时,数学性质不好,优化起来比较复杂,这时候需要使用其他的性能较好的函数进行替换。
【WWW2021】用优化框架解释和统一图神经网络
专知会员服务
45+阅读 · 2021年2月1日
【伯克利-Ke Li】学习优化,74页ppt,Learning to Optimize
专知会员服务
41+阅读 · 2020年7月23日
零样本文本分类,Zero-Shot Learning for Text Classification
专知会员服务
96+阅读 · 2020年5月31日
【Nature论文】深度网络中的梯度下降复杂度控制
专知会员服务
40+阅读 · 2020年3月9日
 图像内容自动描述技术综述
专知会员服务
87+阅读 · 2019年11月17日
深度学习的多个loss如何平衡?
极市平台
5+阅读 · 2020年3月16日
深度度量学习中的损失函数
极市平台
7+阅读 · 2019年10月30日
再谈人脸识别损失函数综述
人工智能前沿讲习班
14+阅读 · 2019年5月7日
人脸识别损失函数综述(附开源实现)
极市平台
29+阅读 · 2019年3月12日
分享神经网络中设计loss function的一些技巧
极市平台
35+阅读 · 2019年1月22日
换个角度看GAN:另一种损失函数
机器学习算法与Python学习
7+阅读 · 2019年1月1日
自定义损失函数Gradient Boosting
AI研习社
13+阅读 · 2018年10月16日
面试整理:关于代价函数,正则化
数据挖掘入门与实战
8+阅读 · 2018年3月29日
Focal Loss for Dense Object Detection
统计学习与视觉计算组
11+阅读 · 2018年3月15日
Arxiv
1+阅读 · 2021年2月4日
Image Segmentation Using Deep Learning: A Survey
Arxiv
45+阅读 · 2020年1月15日
Deep learning for cardiac image segmentation: A review
Arxiv
21+阅读 · 2019年11月9日
A General and Adaptive Robust Loss Function
Arxiv
8+阅读 · 2018年11月5日
VIP会员
相关VIP内容
相关资讯
深度学习的多个loss如何平衡?
极市平台
5+阅读 · 2020年3月16日
深度度量学习中的损失函数
极市平台
7+阅读 · 2019年10月30日
再谈人脸识别损失函数综述
人工智能前沿讲习班
14+阅读 · 2019年5月7日
人脸识别损失函数综述(附开源实现)
极市平台
29+阅读 · 2019年3月12日
分享神经网络中设计loss function的一些技巧
极市平台
35+阅读 · 2019年1月22日
换个角度看GAN:另一种损失函数
机器学习算法与Python学习
7+阅读 · 2019年1月1日
自定义损失函数Gradient Boosting
AI研习社
13+阅读 · 2018年10月16日
面试整理:关于代价函数,正则化
数据挖掘入门与实战
8+阅读 · 2018年3月29日
Focal Loss for Dense Object Detection
统计学习与视觉计算组
11+阅读 · 2018年3月15日
Top
微信扫码咨询专知VIP会员