python基于LBP+SVM开发构建基于fer2013数据集的人脸表情识别模型是种什么体验,让结果告诉你...

本身LBP+SVM是比较经典的技术路线用来做图像识别、目标检测,没有什么特殊的地方

fer2013数据集在我之前的博文中也有详细的实践过,如下:

《fer2013人脸表情数据实践》 系统地基于CNN开发实现

《Python实现将人脸表情数据集fer2013转化为图像形式存储本地》 一键复制代码即可实现原始csv文件转储本地图像

LBP+SVM和fer2013组合起来去使用就出现了有意思的东西了,本身LBP提取出来的特征维度就很大一般都是将近2w维,然后fer2013数据集又有接近4w的数据量,这就导致SVM模型最终的训练极度膨胀缓慢。

我是昨天回去的时候放在云服务器上面跑的,但是隔了4个小时还没有结束就休息了,一早醒来看到结果出来了,就是觉得简单的事情做得挺波折,这个还是服务器的算力计算得到的,如果是普通的PC机估计就更慢了吧。

简单看下:

 整体项目比较精简,train.json表示训练数据提取出来的LBP向量存储得到的文件,test.json表示测试数据提取出来的LBP向量存储得到的文件。mlModel.py是源代码,实现了数据加载,SVM模型训练和测试评估整套流程。results是存储下来的SVM模型和评估指标结果文件。

当我早上看到这个results体积的时候着实惊呆了,从来还没有看到过SVM模型这么这么的大,进入results目录看下,详情如下:

 一个基于LBP特征训练出来的SVM模型居然达到了恐怖的3+GB。

但是从评估结果上来看结果却是比较惨淡的,如下:

 这里也统计了单个类别下的详情:

"angry": {
			"accuracy": 0.41541755888650969,
			"F_value": 0.08385562999783879,
			"precision": 0.14285714285714286,
			"recall": 0.05934536555521567
		},
		"disgust": {
			"accuracy": 0.3392857142857143,
			"F_value": 0.08444444444444444,
			"precision": 0.16666666666666667,
			"recall": 0.05654761904761905
		},
		"fear": {
			"accuracy": 0.37298387096774196,
			"F_value": 0.0776169498636459,
			"precision": 0.14285714285714286,
			"recall": 0.053283410138248849
		},
		"happy": {
			"accuracy": 0.646927374301676,
			"F_value": 0.11223105252955999,
			"precision": 0.14285714285714286,
			"recall": 0.09241819632881086
		},
		"neutral": {
			"accuracy": 0.41186161449752886,
			"F_value": 0.08334722453742291,
			"precision": 0.14285714285714286,
			"recall": 0.058837373499646978
		},
		"sad": {
			"accuracy": 0.27565084226646249,
			"F_value": 0.06173898130680843,
			"precision": 0.14285714285714286,
			"recall": 0.03937869175235178
		},
		"surprise": {
			"accuracy": 0.6602409638554216,
			"F_value": 0.11362222682977399,
			"precision": 0.14285714285714286,
			"recall": 0.09432013769363167
		}

整体来看:效果比较一般,这个还是比较适合用深度学习去做的,感觉这样的数据体量和状态下SVM很难有较好的效果!

猜你喜欢

转载自blog.csdn.net/Together_CZ/article/details/130635314