Hairmony: Fairness-aware hairstyle classification
Microsoft; The Pennsylvania State University
一句话总结
提出一套客观、公平的发型分类学(taxonomy),用纯合成数据训练一个基于冻结 DINOv2 骨干的发型分类模型,从单张图像预测发型,在短发、卷发、盘发等多样发型上比参数化重建方法更鲁棒、更公平。
研究背景
发型预测在用户数字化、虚拟形象录入等场景越来越重要,而一个真正包容的录入系统必须对不同人群都表现良好——发型纹理与造型的公平表征在许多地区甚至受法律保护。
现有方法分两类,各有局限:
- 分类/属性预测方法:受限于数据质量和标注。发型命名带有文化特异性,属性描述主观、含糊、不一致(如把长度标为 short/medium/long/male/female),且数据集覆盖人群偏窄(例如仅关注直发与卷发,或仅覆盖某一地区人群)。
- 参数化发丝重建方法:进展迅速,但大多针对长直发或波浪发,公式本身难以表达高频变化剧烈的毛躁发、螺旋卷发(coily),以及辫子、发髻、马尾等聚拢(gathered)造型。
作者因此选择分类路线,以牺牲”表示的直接性”换取”公平与鲁棒”,核心贡献包括:一套与多元领域专家共同设计的发型分类学;用该分类学标注的合成训练集与真实评测集(均公开);以及一个仅用合成数据训练、能良好泛化到真实图像的发型预测方法。
方法
整体框架分三部分:发型分类学、数据集构建、预测网络。
flowchart LR
A[单张输入图像 x] --> B[冻结 DINOv2 骨干 B]
B --> C[共享全连接层 FCL]
C --> D[发型预测头 FCs]
C --> E[属性预测头 FC1..FCA]
D --> F[发型类别 s-hat]
E --> G[分类学属性 a-hat]
F --> H[风格损失 Lstyle]
G --> I[属性损失 Lattr]
1. 发型分类学(taxonomy)
分类学是整套方法的地基,用于平衡训练数据、监督模型、并直接度量公平性。设计目标包括:完整性、公平性、粒度、易用性、一致性、客观性和可扩展性。它由领域专家(含人类学家)协作设计,并通过约 30 名多元背景标注者的多轮试点研究迭代优化。
结构上,分类学含 18 个属性:10 个全局属性(如发际线形状、表面外观、刘海等,整个发型标一次),以及把头皮分成 8 个区域、每个区域 8 个局部属性(如长度、发丝造型)。因此每个发型共有
\[A = 74\]个分类学标签。分类学被设计为逻辑一致,因而无需像先前工作那样用损失函数强制属性间一致性。
2. 纯合成数据 + 非均匀采样平衡
仅用合成数据训练,好处是消除隐私顾虑、提供无噪声真值标注,且标注成本只随资产库(非图像量)增长。作者在已有合成发型库基础上扩展到 480 种发型(3D 发丝表示),渲染出 10 万张 \(512 \times 512\) 图像,每张带随机光照、姿态、表情与相机位置。
关键设计:不做常规的类别均匀采样(会把资产库本身的失衡传递给数据集、引入偏差),而是按语义属性非均匀加权采样来平衡数据。目标分布为:50% 带刘海;75% 带聚拢;短/中/长 = 40%/30%/30%;直/波浪/卷/螺旋卷 = 50%/15%/15%/20%。评测集则标注了 FairFace 的一个人口均衡子集,共 1805 个样本。
3. 冻结骨干 + 属性辅助任务
网络用冻结的、经自监督预训练于真实图像的 DINOv2 作骨干,后接若干可训练全连接层。冻结骨干是防过拟合、保证泛化的关键——合成库小、合成图像质量有限,端到端训练极易过拟合;只优化小的全连接层能最大限度抑制过拟合并提取可迁移到真实图像的特征。
骨干输出的特征取自多层的 class token 与平均池化 patch token,兼顾高层语义与低层外观:
\[f \equiv \left[ (E^{N}_{cls}, E^{N}_{ptc}), (E^{N-1}_{cls}, E^{N-1}_{ptc}), (E^{N-2}_{cls}, E^{N-2}_{ptc}), (E^{N-3}_{cls}, E^{N-3}_{ptc}) \right]\]经共享层得到中间表示 \(l = FC_L(f)\),再分别送入发型头 \(\hat{s} = FC_s(l)\) 与各属性头 \(\hat{a}^{s}_t = FC_t(l)\)。
训练损失由两项构成。发型损失是预测分布与真值发型的交叉熵:
\[\mathcal{L}_{style}(l, s) = \mathcal{L}_{ce}(FC_s(l), s)\]属性损失把所有分类学属性的交叉熵求和,作为辅助任务:
\[\mathcal{L}_{attr}(l, s) = \sum_{t=1}^{A} \mathcal{L}_{ce}(FC_t(l), a^{s}_t)\]辅助任务的意义在于避免”坏错误”——即便没预测出完美发型,也要保证预测出的发型在关键属性(发型、长度等)上匹配,而纯分类没有这种语义相似性的概念。训练时冻结骨干、联合优化所有全连接层以最小化两项损失之和。
实验结果
在 FairFace 真实图像子集上评测发型属性分类准确率,并定义公平性为”各人口分组准确率均值 / 单组最高准确率”(越接近 100% 表示组间差异越小)。消融实验主表如下(数字忠于原文):
| 方法 | Bald | Bang Styling | Gathered | Length | Hair Type | Strands | 平均准确率 | 平均公平性 |
|---|---|---|---|---|---|---|---|---|
| ResNet34 + \(\mathcal{L}_{style}\) | 95.6% | 84.3% | 77.1% | 63.7% | 81.8% | 95.2% | 83.0% | 92.9% |
| Ours + \(\mathcal{L}_{style}\) | 96.8% | 83.0% | 86.2% | 69.6% | 90.9% | 98.5% | 87.5% | 91.9% |
| Ours + \(\mathcal{L}_{style}\) + \(\mathcal{L}_{attr}\) | 96.9% | 84.4% | 87.1% | 70.6% | 90.1% | 98.7% | 88.0% | 91.7% |
| Ours + \(\mathcal{L}_{style}\) + \(\mathcal{L}_{attr}\) Balanced | 98.0% | 83.8% | 85.4% | 69.8% | 90.2% | 98.5% | 87.6% | 92.5% |
要点:DINOv2 骨干显著抑制过拟合——ResNet34 在合成训练集达 97.7%、合成测试集 93.7%,但真实图像上表现差;DINOv2 模型训练准确率仅 74.8%、合成测试 78.0%,却在真实测试集上大幅领先。属性辅助任务进一步提升多数指标准确率。数据平衡略微降低准确率,却显著改善公平性(如 gathered 属性在性别上的公平性从 85.3% 提升到 91.7%)。
亮点与局限
亮点
- 将”公平性”从事后评估提前到方法设计的核心:分类学同时用于平衡数据、监督训练、度量公平。
- 纯合成数据训练配合冻结的真实图像预训练骨干,巧妙化解了合成-真实域差与过拟合问题。
- 分类学 + 合成资产库解耦:更新发型库不会作废真实数据的分类学真值标注,可低成本评测不同方法。
- 公开了分类学、合成训练集与真实评测集。
局限
- 极暗/极亮光照下会把螺旋卷发误判为其他发型,降低特定人群的公平性与准确率。
- 单张正面图缺乏头后视觉信息,长的聚拢发型易与短/中长非聚拢发型混淆。
- 分类而非参数化表示,缺乏发丝级的直接可编辑表征;作者也承认长期看参数化建模仍是必要方向。
延伸思考
- 用”属性匹配”替代”精确类别命中”作为可接受度度量,是把人类感知相似性引入分类任务的一种实用思路,可推广到其他难以精确定义类别的人体属性预测。
- “聚拢”这类依赖头后信息的属性天然受单图限制,多视角或视频输入可能是突破口;也提示对存在不可观测因素的任务,评测指标要显式区分”信息缺失”与”模型能力不足”。
- 分类学的可扩展设计与开源策略,试图在”分类人体属性存在伦理风险”与”包容性产品需求”之间取得平衡,这种把领域专家与多元标注者纳入设计流程的做法值得借鉴。