代码:https://github.com/linkcao/FS2K_extract
hair(有无头发)、hair_color(头发颜色)、gender(图像人物性别)、earring(是否有耳环)、smile(是否微笑)、frontal_face(是否歪脖)、style(图片风格),详细信息均可通过FS2K的anno_train.json和anno_test.json获取,本质是一个多标签分类问题。整体的处理流程如下图所示:

hair_color、style 两个多分类标签,因此对这两个标签做编码处理hair_color中0 对应 [1,0,0,0,0], 1对应[0,1,0,0,0], 2对应[0,0,1,0,0],以此类推,共5类style中 0 对应 [1,0,0],1对应[0,1,0], 2对应[0,0,1],以此类推,共3类模型结构参数

由于VGG16最后一层全连接输出1000维特征,因此在本题中需要在加一层全连接输入1000维特征,输出13维特征,最后再加上一层sigmoid激活函数,在得到每一类预测的概率后,针对编码过的hair_color、style的8列,对各自的编码后的对应列计算概率最大的列下标,作为该属性的预测值。
训练参数
| batch | 64 |
|---|---|
| epoch | 20 |
| optimizer (优化器) | SGD(随机梯度下降) |
| criterion (损失函数) | BCELoss(二分类交叉熵损失) |
| 学习率 | 0.01 |
photo数据集上模型训练Loss

结果 「方法一」
| f1 | precision | recall | accuracy | |
|---|---|---|---|---|
| hair | 0.926064 | 0.903045 | 0.950287 | 0.950287 |
| gender | 0.598046 | 0.611282 | 0.59369 | 0.59369 |
| earring | 0.74061 | 0.674408 | 0.821224 | 0.821224 |
| smile | 0.513038 | 0.580621 | 0.639579 | 0.639579 |
| frontal_face | 0.758024 | 0.694976 | 0.833652 | 0.833652 |
| hair_color | 0.351596 | 0.387132 | 0.389101 | 0.389101 |
| style | 0.460469 | 0.526145 | 0.443595 | 0.443595 |
| average | 0.668481 | 0.672201 | 0.708891 | 0.708891 |
模型结构参数

模型修改 ,模型最后加一层全连接输入1000维特征,输出13维特征,最后再加上一层sigmoid激活函数
训练参数
| batch | 64 |
|---|---|
| epoch | 20 |
| optimizer (优化器) | SGD(随机梯度下降) |
| criterion (损失函数) | BCELoss(二分类交叉熵损失) |
| 学习率 | 0.01 |
photo数据集上模型训练Loss

photo数据集结果 「方法二」
| f1 | precision | recall | accuracy | |
|---|---|---|---|---|
| hair | 0.926064 | 0.903045 | 0.950287 | 0.950287 |
| gender | 0.657874 | 0.657195 | 0.6587 | 0.6587 |
| earring | 0.744185 | 0.764809 | 0.821224 | 0.821224 |
| smile | 0.634135 | 0.63298 | 0.652008 | 0.652008 |
| frontal_face | 0.758024 | 0.694976 | 0.833652 | 0.833652 |
| hair_color | 0.498804 | 0.515916 | 0.546845 | 0.546845 |
| style | 0.508202 | 0.57917 | 0.482792 | 0.482792 |
| average | 0.715911 | 0.718511 | 0.743188 | 0.743188 |
Sketch数据集上模型训练Loss

sketch数据集结果 「方法三」
| f1 | precision | recall | accuracy | |
|---|---|---|---|---|
| hair | 0.926064 | 0.903045 | 0.950287 | 0.950287 |
| gender | 0.811982 | 0.813721 | 0.814532 | 0.814532 |
| earring | 0.743495 | 0.720011 | 0.813576 | 0.813576 |
| smile | 0.573169 | 0.573085 | 0.614723 | 0.614723 |
| frontal_face | 0.758024 | 0.694976 | 0.833652 | 0.833652 |
| hair_color | 0.358576 | 0.339481 | 0.419694 | 0.419694 |
| style | 0.842575 | 0.942995 | 0.803059 | 0.803059 |
| average | 0.751736 | 0.748414 | 0.78119 | 0.78119 |
模型结构参数

训练参数
| batch | 64 |
|---|---|
| epoch | 20 |
| optimizer (优化器) | SGD(随机梯度下降) |
| criterion (损失函数) | BCELoss(二分类交叉熵损失) |
| 学习率 | 0.01 |
photo数据集上模型训练Loss

photo数据集结果 「方法四」
| f1 | precision | recall | accuracy | |
|---|---|---|---|---|
| hair | 0.926064 | 0.903045 | 0.950287 | 0.950287 |
| gender | 0.935669 | 0.936043 | 0.935946 | 0.935946 |
| earring | 0.837358 | 0.837194 | 0.853728 | 0.853728 |
| smile | 0.784984 | 0.787445 | 0.790631 | 0.790631 |
| frontal_face | 0.780436 | 0.832682 | 0.8413 | 0.8413 |
| hair_color | 0.685242 | 0.665904 | 0.718929 | 0.718929 |
| style | 0.515421 | 0.567896 | 0.497132 | 0.497132 |
| avg | 0.808147 | 0.816276 | 0.823494 | 0.823494 |
Sketch数据集上模型训练Loss

sketch数据集结果 「方法五」
| f1 | precision | recall | accuracy | |
|---|---|---|---|---|
| hair | 0.926064 | 0.903045 | 0.950287 | 0.950287 |
| gender | 0.883773 | 0.886639 | 0.885277 | 0.885277 |
| earring | 0.743196 | 0.734733 | 0.819312 | 0.819312 |
| smile | 0.610952 | 0.661847 | 0.671128 | 0.671128 |
| frontal_face | 0.758024 | 0.694976 | 0.833652 | 0.833652 |
| hair_color | 0.372596 | 0.360252 | 0.423518 | 0.423518 |
| style | 0.944535 | 0.96071 | 0.938815 | 0.938815 |
| avg | 0.779892 | 0.775275 | 0.815249 | 0.815249 |