人脸属性识别记录
人脸属性识别
人脸属性识别是给定一张人脸图片,判断某一属性是否存在,属性包括眼镜、领带、性别等40个,数据集采用CelebA
人脸属性识别是一项具有挑战性的项目,主要是因为:数据集不均衡、人脸属性存在相关性、不同人脸属性的难度不同、不同人脸属性关注人脸的不同区域
what are doing
weakly localization - ICCV2019
- 原始论文为所有属性在一起提取出特征,然后对不同的属性关注不同的区域;能否提前将不同属性的区域提取出来,与原始特征组合成两路特征,参与卷积操作?
- 使用无规则的四边形,而不是使用长方形
- 使用其他的atttention模块
attention+LSTM
PFLD
- 使用了多个尺度特征的融合,average pooling得到,已实现但未训练
- 提出了一种数据不均衡的损失函数
难例挖掘和课程学习
class balanced loss
使用多个不同的网络作为backbone
- DenseNet + ResNet
Baseline
- MobileNetV2
- Resnet50
数据集不均衡
在CelebA中,某些属性存在着极端的数据不均衡,如bald属性,正样本数很少,这样会导致模型直接全部预测为负样本,而且准确率还很高。
-
样本重采样:过采样或欠采样
-
损失函数加权
- balanced cross entropy:根据正负样本比例增大少数样本的损失函数权重(正负样本比例的gamma次方)
- focal loss:不仅可以解决样本不平衡问题,还可以对难分类的样本更多关注
- 一个实现:NIH-X-Ray-focal-loss
- weighted focal loss:《deep imbalanced attribute classification using attention aggregation》
- loss penalty:《MTCNN with weighted loss penalty for facial attribute prediction》
-
缩放threshold:不同的属性使用不同的threshold
人脸属性的相关性
人脸属性并不是独立存在的,而是相互之间存在很强的相关性,如络腮胡常常伴随着男性属性,如何利用人脸属性的相关性至关重要。
- 手工分组:将属性划分为n个大类,划分标准包括:人脸区域、局部和全局、主观与客观、是否和人的身份相关
- CNN+RNN:利用RNN进行搜索相关性,但是如何从CNN过渡到RNN?
- 见博客
- 图卷积网络
- 《multi-label image recognition with graph convolutional networks》
- 《Relation-aware pedestrian attribute recognition with graph convolutional networks》
人脸属性的难度不同
值得注意的是,每个属性的预测难度不同,如预测是否戴眼镜要比预测性别简单
- 动态调整每个属性loss的占比:根据loss下降的快慢衡量任务的难度,或者loss下降和acc上升两者的快慢衡量任务的难度
- 《adaptively weighted multi-task deep network for person attribute classification》
- 《Deep multi-task multi-label CNN for effective facial attribute classification》
人脸属性关注人脸不同区域
不同属性与人脸不同的区域相关,如戴眼镜与眼睛区域有关,性别与全局区域有关
- 不同属性有不同的视觉注意力
- 《deep imbalanced attribute classification using visual attention aggregation》
- 《learning spatial regularization with image level supervisions for multi-label image classification》
- 《HydraPlusNet: Attentive deep features for pedestrian analysis》
- 《Improving pedestrian attribute recognition with weakly-supervisied multi-scale attribute-specific localization》
其他
-
multi-scale: 将中间层的feature map进行global average pooling, 然后concat到最后的fc层,一起进行分类 (类似于DenseNet)
-
Attention机制:在网络模块中加入SE block
-
DSN:不仅在最后一层引入监督函数,在中间层也引入监督函数,参考链接
-
在不同任务之间引入Focal loss,见知乎讨论
待调研
Multi-task with attention :提出了一种新的动态加权的算法
pedestrian attribute recognition with localization:为每个属性找到其分类的区域,值的一看
multi-label attention region:通过选择注意力区域协助多标签分类
乳腺癌图片分类:CNN+RNN,对图像进行分块
RetinaNet病灶检测:提出了类似于ICCV2019的结构,提出了attention gate
Attribute aware attention细颗粒度分类: keras实现
CBAM: Convolutional Block Attention Module, ECCV2018
知乎cv attention专栏 : 各种CV attention
多标签分类 :知乎的多标签分类讨论
awesome imbalanced learning : 关于数据集不均衡的repo,有论文和代码