Rank-consistent Ordinal Regression for Neural Networks

Rank-consistent Ordinal Regression for Neural Networks

摘要

分类任务的网络结构已经得到显著的发展,但是常用的损失函数(例如多类别交叉熵)不能解决ranking(排名)和序数回归的问题。

本文作者提出了一个新框架(Consistent Rank Logits,CORAL),该框架具有rank-monotonicity(排名单调性) and consistent confidence scores(置信分数一致性)的理论保证。预测一致性问题(后面有讲)

通过参数共享,降低了训练复杂度并且可以将其扩展到CNN网络结构中用于有序回归的任务。

此外,该方法在一系列用于年龄预测的人脸图像数据集上的经验评估表明,与目前最先进的有序回归方法相比,有很大的改进。(实验证明方法的有效性)

1.介绍

除年龄估计 [ 17 ]以外,序数回归的流行应用包括预测各种疾病的进展,例如阿尔茨海默氏症[ 8 ],克罗恩氏症 [ 36 ],动脉[ 34 ]和肾脏疾病[ 32 ]。同样,序数回归模型是文本消息广告[ 26 ]和各种推荐系统[ 18 ]的常见选择

常见的分类任务忽略了类别之间的顺序性,8提出扩展二分类进行有序回归的框架,但是会有分类器不一致的现象

本文作者提出了一种方法和定理保证了分类器的一致性,并且容易扩展到现有算法中使用,并且在人脸数据集上验证了算法的有效性。

2.相关工作

A. 有序回归和排名(ranking)

过去,针对线性回归已经开发了几种广义线性模型的多元扩展。

有序回归,早期14 15使用感知器和SVM,15提出了一个通用的简约框架。

1 将K ranks任务转变成K-1个二分类器,第k个任务去判断人脸年龄是否超过 r k r_k rk ,所有K - 1任务共享相同的中间层,但在输出层分配不同的权重参数。但是该方法不能保证预测一致性。论文中举了一个例子,假如第k个分类器预测年龄超过30岁,但是第k-1个分类器预测年龄低于20岁,最后的得到的预测年龄将是一个矛盾的现象。

1 作者中提出了此分类器在一致性问题上并不理想,并且要保证一致性的话会造成训练复杂度,本文作者就是在确保一致性的基础上,不增加复杂度。

B. CNN Architectures for Age Estimation

目前最先进的年龄估计方法都是使用CNN架构。1 2124

1 :单独训练二分类器,最后结合无关的预测结果用于排序ranking

24 :ranking-CNN,训练CNNs的ensemble,最后结合预测结果,实验显示结果优于单个模型,但是增加复杂度&出现不一致问题。

26 :siamese CNN,只有一个输出单元跟目前看到的输出不太一样,看看?

多任务CNN相比共享浅层参数的单个CNN来说performance要好

3.提出的方法

本节描述了所提出的CORAL框架,该框架解决了基于多个二进制分类任务进行排序的有序回归CNNs中分类器不一致的问题。

A. Preliminaries

符号说明

在这里插入图片描述
其中 x i x_i xi表示第i张图片, y i y_i yi 表示相应的rank值,D表示dataset,N表示样本数
在这里插入图片描述
在这里插入图片描述

≻ \succ 表示排序的顺序,有序回归的任务就是找到一个排序规则 h : X → Y h : X \rightarrow Y h:XY ,最小化loss(h)

cost matrix C ∈ K ∗ K C ∈ K*K CKK

C y , r k C_{y,r_k} Cy,rk 表示将一个样本 ( x , y ) (x,y) (x,y) 预测为 rank $r_k 的 损 失 , 的损失, C_{y,y} = 0 ; 当 ;当 y \neq r_k时,C_{y,r_k} > 0$

在有序回归任务中,cost matrix的每一行是个V型。
在这里插入图片描述
classification cost matrix

在这里插入图片描述
没有考虑到顺序信息。

absolute cost matrix
在这里插入图片描述

8 提出一个每一行都是凸的cost matrix
在这里插入图片描述
“ rank-monotonic threshold model ”训练复杂度高,在实践中不可行

我们提出的CORAL框架既不需要具有凸条件的cost matrix,也不需要依赖于每个训练示例的显式加权项来获得rank单调阈值模型,也不需要为每个二元任务生成一致的预测。此外,CORAL允许一个可选的任务重要性加权。例如,可以使用非统一任务重要性权重的可选分配来解决标签不平衡(第三- e节),这使得CORAL框架更适用于真实世界的数据集。

B. Ordinal Regression with a Consistent Rank Logits Model

a) Label Extension and Rank Prediction

数据集 D = { X i , Y i } i = 1 N D = \{X_i,Y_i\}_{i=1}^N D={Xi,Yi}i=1N,rank label: y i y_i yi ,binary label : y i ( 1 ) , . . . , y i ( K − 1 ) y_i^{(1)},...,y_i^{(K-1)} yi(1),...,yi(K1) y i k ∈ { 0 , 1 } y_i^{k} \in \{0,1\} yik{0,1}
hahha
K - 1二分类任务具有相同的权值参数,但具有独立的偏差单元,解决了预测之间的不一致问题,降低了模型的复杂性(图1)。
在这里插入图片描述
extend label

        label = self.y[index] # 3,对应afad_train1.csv中的age,真实的age=3+15         
        levels = [1]*label + [0]*(NUM_CLASSES - 1 - label) #把label变为extend label
        levels = torch.tensor(levels, dtype=torch.float32)
output:
3
[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

给定输入 x i x_i xi,其输出通过如下公式计算得到:
在这里插入图片描述
f k ( x i ) ∈ { 0 , 1 } f_k(x_i) \in \{ 0,1\} fk(xi){0,1}表示第 k 个分类器的预测值,并且要求 { f k } k = 1 K − 1 \{f_k\}_{k=1}^{K-1} {fk}k=1K1有有序信息&rank单调性
f 1 ( x i ) ≥ f 2 ( x i ) ≥ . . . , f K − 1 ( x i ) f_1(x_i) \geq f_2(x_i)\geq ..., f_{K-1}(x_i) f1(xi)f2(xi)...,fK1(xi),保证了预测的一致性

b) Loss Function

W W W表示出了bias的所有权重参数,倒数第二层的输出: G ( X i , W ) G(X_i,W) G(Xi,W)

最后一层对应的二进制分类器的输入(加上各自的bias): { G ( X i , W ) + b k } k = 1 K − 1 \{G(X_i,W)+b_k\}_{k=1}^{K-1} {G(Xi,W)+bk}k=1K1

第k个任务的经验概率预测值:
在这里插入图片描述
最小化损失函数:(weighted cross-entropy of K−1 binary classifiers)
在这里插入图片描述
λ ( k ) \lambda ^{(k)} λ(k) denotes the weight of the loss associated with the kth classifier (assuming λ ( k ) \lambda ^{(k)} λ(k) > 0).

λ ( k ) \lambda ^{(k)} λ(k) 表示任务k的重要性参数。

def cost_fn(logits, levels, imp):
    val = (-torch.sum((F.logsigmoid(logits)*levels
                      + (F.logsigmoid(logits) - logits)*(1-levels))*imp,
                      ## 此处的loss代码有问题嘛?
           dim=1))
    return torch.mean(val)

在这里插入图片描述

按照代码的意思,log是以e为底,化简后的形式

当概率值大于0.5时(二分类任务),第k个任务的输出预测值为1
在这里插入图片描述
对于鲁棒性不好,或者难以优化的任务,考虑使用non-uniform的任务权重机制。【 III-E】

接下来就是理论验证分类器一致性

**C. Theoretical Guarantees for Classifier Consistency **

最小化Loss,学习到的bias是非增的,(定义1给出了证明)

E. Task Importance Weighting

某些相邻等级之间的特性可能有更细微的区别。例如,面部老化通常被认为是一个非平稳的[27]过程,在一定的年龄区间内,面部特征的变化可以更容易检测到。

weighting scheme:考虑了数据集的类别不平衡(label imbalances) ,V-C部分表示此方法在四个数据集上better
在这里插入图片描述

4.实验

A.数据集和预处理

MORPH-2 & CACD:使用MLxtend v0.14的facial landmark detection将鼻尖置于图片正中

80%训练集,20%测试集

training:resize:(128x128x 3)然后随机裁剪成120x120x3(augment)

testing:resize:(128x128x 3)然后中心裁剪成120x120x3

B. CNN结构

resnet-34:替换最后一层(改为K-1个二分类器)+[1] LOSS(将交叉熵改为自己设计的) ===>OR-CNN

CORAL-CNN相较于OR-CNN有较少的参数量

OR-CNN:(m+1)(K-1)*2

coral-cnn:m+k-1

C. Training and Evaluation

MAE:平均绝对误差

RMSE:均方根误差

y i y_i yi表示ground-truth, h ( x i ) h(x_i) h(xi)表示预测rank。

cs 曲线证明其performance better
在这里插入图片描述
随机种子设置三次,以随机初始化三次weight(不同模型要保证随机种子一致)

所有CNN模型训练200epoch,SGD,指数衰减率 β 0 = 0.90 \beta_0 = 0.90 β0=0.90 β 2 = 0.99 \beta_2 = 0.99 β2=0.99(默认值)

learning rate: α = 5 ∗ 1 0 − 5 \alpha = 5*10^{-5} α=5105 best,且都是在200个epoch后模型收敛

代码中除了ResNet-34,还有Inception-v3和VGG-16的模型

D. Hardware and Software

  • PyTorch 1.1.0
  • NVIDIA GeForce 1080Ti
  • Titan V graphics cards
  • https://github.com/Raschka-research-group/coral-cnn

5. 实验结果和讨论

Estimating the Apparent Age from Face Images

在这里插入图片描述
Table1中显示了OR-CNN和CORAL-CNN模型优于CE-CNN,其中CORAL-CNN best

MORPH-2 > AFAD > CACD > UTKFace

原因: MORPH-2数据集质量比较好

AFAD中低分辨率(20*20), UTKFACE比AFAD ten times smaller(指的是数据集数量)

由于CACD的大小与AFAD大致相同,所以性能较低可能是由于需要考虑的年龄范围更广(CACD为14-62岁,AFAD为15-40岁)。

6.数据集搜集

1、关于人脸

https://blog.csdn.net/qq_22734083/article/details/87868387

本文用到的四个数据集

1.1 MORPH2 (2006)

下载:http://www.faceaginggroup.com/morph/
论文:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1613043
根据论文引用情况,MORPH2数据集是目前最流行的年龄估计数据集之一,该数据集的准确率近年也已趋近饱和。MORPH2也是一个跨时间的数据集,收录了同一个人在不同年龄段的图片。该数据集分为商用和学术用版本,学术用版本包括了13000个人的55134张图片,照片收集时间跨度2003-2007年,人物年龄为16-77岁,平均年龄为33岁。MORPH2数据集除年龄外还记录了人物的其他信息,如性别、种族、是否戴眼镜等。

1.2 CACD(2014)

下载:http://bcsiriuschen.github.io/CARC/
论文:http://cmlab.csie.ntu.edu.tw/~sirius42/papers/chen14eccv.pdf
CACD收集了2000个名人的163,446张图片,年龄跨度为16 到 62。截止论文发表时间,是当时最大规模的跨年龄数据集。收集照片的时间跨度为2004-2013年。数据集同时也提供了16个人脸关键点的标注信息。CACD数据集提供者明确指出,虽然该数据集包含人物年龄信息,但只建议使用此数据集做跨年龄人物检索,不建议使用该数据集来做年龄预估。

1.3 AFAD(2016)

下载:https://github.com/afad-dataset/tarball
论文:https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Niu_Ordinal_Regression_With_CVPR_2016_paper.pdf
数据集【4】规模为164432张脸,其中63680张女性、100752男性。年龄段为15-40岁。该数据集的特点是数据几乎全是中国人。该数据的数据来源为人人网,首先爬取人人网上的图片数据并获取相册所有者的年龄,然后使用人力对错误图片进行过滤。本数据年龄分布也不是很均衡,在最年轻和年纪较大的年龄段数据较少(也好理解,因为该年龄使用人人网的人少)。
根据观察,感觉数据集整体标注效果比较准确,但有一些小图片(22*22)看不清楚,且有很多同一个人的图片几乎完全一样。数据集还有一个特点就是图片截取的较小,只留了较少的脸部,发型和颈部都去除了。其实年龄估计和人的发型、身体等也有一定联系,截取太小将无法使用到这些信息

1.4 UTKFace(2017)

下载:https://susanqq.github.io/UTKFace/
论文:https://arxiv.org/pdf/1702.08423.pdf
UTKFace数据集是一个具有较长年龄跨度(范围从0到116岁)的大型人脸数据集。该数据集包含20,000多张面部图像,其中包含年龄,性别和种族的注释。图像覆盖了姿势,面部表情,光照,遮挡,分辨率等的大变化。该数据集可用于各种任务,例如,面部检测,年龄估计,年龄进展/回归,地标定位等。

7. 代码

在代码设计部分,包括了OR-CNN和CORAL-CNN
在这里插入图片描述
afad-ordinal.py(网络结构如上)

afad-coral.py(本论文的网络结构)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值