原址 http://blog.youkuaiyun.com/ubunfans/article/details/49765411
今天看到一篇估算颜值的blog,看起来挺有意思的,记录下来,分享一下!哈哈哈哈
先放地址:Computer Vision for Predicting Facial Attractiveness
同时要感谢一下幕后英雄,那些收集整理并公开数据库的伟人们SCUT-FBP数据库
鄙人一点感觉:估计颜值这事儿,要融合肤色,轮廓,皮肤纹理,五官协调等才有一个准确的判断,单单一方面并不能得到准确的结果,况且每个人的审美标准都不一样。
这篇blog的技术只使用了轮廓信息,得到的结果已经比较接近ground truth了!
- 数据库
数据采用的是华南理工大学人机交互只能实验室的数据库,总共500张样本,至于样本整理过程可以去看官方的参考文献。
由于样本数量有限,采用留一交叉验证,每次拿499张训练,其余一张测试;对所有样本都这样做,总共有500个模型 - 特征

<code class="language-python hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"> a = [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">22</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">23</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">27</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">37</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">40</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">43</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">46</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">32</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">34</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">36</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">13</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">49</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">55</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">52</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">58</span>]</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
先定义一系列关键点位置,关键点是通过CLM算法求得的(现在有很多算法效果不错),
使用itertools产生四个点的子序列,然后计算两两之间的距离比值作为特征,总的特征维度为3876维。
3. 筛选特征
PCA筛选,长度自己可以指定
4. 训练
总共采用了四种算法
gaussian process
random forest
linear regression
SVM
5. 结果
测试结果和ground truth做pearson correlaion
结果如图:
让人吃惊的是SVM的结果是最差的!
颜值取值范围为1-5
作者还给了代码:face-rating
Yoona, Predicted Rating: 3.6
Yuri, Predicted Rating: 3.4
Tiffany, Predicted Rating: 3.8