DRML(2016-CVPR)重现过程记录---(9)问题解决与最终结果
来源:互联网 发布:查询树形 mysql 编辑:程序博客网 时间:2024/05/29 13:48
之前谈到的现象是单个AU用lmdb和softmax可以正常训练,而采用了multi-label数据输入和multi-sigmoid loss函数层却不能正常训练,后来张君鹏帮我检查,发现是因为输入的数据没有shuffle。后来我发现这个错误刘琳学姐也犯了,大概新入门caffe的人在第一次修改输入层时可能容易犯这个错误。因为一般我们用lmdb时会在命令中添加shuffle,但是新的层一般是不会自动设计这个shuffle的,所以需要人为打乱输入再送进神经网络中去。
打乱输入数据之后,处理了BP4D和DISFA数据集,就可以训练测试多个AU了。下面是结果
上面是DISFA数据集在DRML上的测试结果
上面是 DISFA数据集在AlexNet, ConvNet, DRML上的结果对比
上面是DISFA在DRML上的ROC曲线和AUC值
上面的图是BP4D数据集在DRML, ConvNet, AlexNet下的训练loss曲线
上面的图片是BP4D 数据集在DRML训练模型的ROC曲线
上面是BP4D数据集结果与文章的对比(f1-score)
上面是BP4D数据集结果与文章的对比(AUC)
结论与分析
根据DISFA数据集在DRML上的测试结果,其中第一行中的(p/n)(p/n)分别代表ground truth和实验出来AU是否存在,在最后两列求得正负样本比,为0的情况代表负样本数目是正样本数目的10倍及以上,这种情况认为该AU训练无效。所以我们只需要观察样本比非0的这些AU。显然正负样本数目最接近的AU12与AU25是表现最好的,说明正负样本比对神经网络训练影响比较大。而AU26,AU4,AU6,相对来说学习得不是很成功。
看DISFA数据集在DRML上ROC曲线分析,也是AU12和AU25学习得最好,这里有一个有趣的现象,就是AU4和AU6的正负样本比差不多,而AU4的学习效果却比AU6差很多呢?这就要从他们的本质说起了。AU4代表的含义是皱眉头,这个AU一般跟负面情绪有关,AU6代表的是脸颊提升,AU6通常会与AU12同时出现。AU6比AU4好检测的原因有两个:一,AU6的动作幅度较大,脸颊提升造成的脸部变化远比皱眉造成的脸部变化要大;二,AU6与AU12具有强烈的相关性,而AU12嘴角提升这种明显的变化十分容易检测到,两者又一般同时出现,这个强烈的相关性会直接提升AU6的检测性能。
看DISFA数据集在DRML、ConvNet、AlexNet上的结果对比。以AU12为例,仔细观察可以发现,DRML和ConvNet的结果比AlexNet好,说明之前提出的去掉pooling层是有意义的,但是ConvNet和DRML的区别不是很明显,有时候ConvNet比DRML稍微好一点,有时候DRML比ConvNet稍微好一点,都差不太多,这里还不好判断region层是否真的有用。
我们再来看一下BP4D数据集的实验结果。
根据DRML、AlexNet、ConvNet的训练曲线,仅仅看这个曲线只能发现AlexNet是收敛最好最快的。然后让我们看看具体的模型测试结果。
看数据集在DRML训练模型的ROC曲线。根据这个ROC曲线可以看到,同样的,不同的AU训练出来的效果是不一样的,AU6和AU12训练的结果十分好看,这里会发现AU10的结果也很好,这是因为AU10的样本量是最多的。
总的来说,结论是有region层的DRML的确比没有region层的ConvNet结果好,所以region的设计应该是有意义的;而我的结果比作者文章的好看,究其原因应该是因为我在选取数据集时严格控制了样本比例,我这里设置选择BP4D所有正样本,对应负样本数目不得高于正样本数目的两倍,train\val\test都是这么做的,所以结果比作者的好看。
至此,DRML的重现工作已基本完成。感谢作者Kaili Zhao的远程答疑,以及小学弟张君鹏的各种帮忙~
- DRML(2016-CVPR)重现过程记录---(9)问题解决与最终结果
- DRML(2016-CVPR)重现过程记录---(1)caffe+DRML源码编译
- DRML(2016-CVPR)重现过程记录---(4)问题与反思
- DRML(2016-CVPR)重现过程记录---(6)新的尝试与思考-tensorflow?
- DRML(2016-CVPR)重现过程记录---(2)数据预处理
- DRML(2016-CVPR)重现过程记录---(3)训练模型
- DRML(2016-CVPR)重现过程记录---(5)问题定位_1
- DRML(2016-CVPR)重现过程记录---(7)问题定位_2
- DRML(2016-CVPR)重现过程记录---(8)问题定位_3
- DRML(2016-CVPR)重现过程记录---(10)代码上传
- Moses运行过程记录---Moses结果和评测(四)
- 重现Redis--数据结构与对象(一)
- 重现Redis--数据结构与对象(二)
- 重现Redis--数据结构与对象(三)
- ICTCLAS分词系统研究(八)--生成最终分词结果
- ICTCLAS分词系统研究(八)--生成最终分词结果
- 机器人最小能量最终结果(调试完成)
- 预测Job最终执行结果(修改Hadoop源码)
- 算法第十四周解题报告
- Spring-IoC概念
- 网络获取bitmap
- NetBeans打包报错
- Java知识小结—(3)
- DRML(2016-CVPR)重现过程记录---(9)问题解决与最终结果
- vs快捷键
- 字符串的排列__
- Ubuntu安装anaconda和tensorflow
- JAVA基于poi实现操作Excel
- MOOC清华《程序设计基础》第4章:筛法求素数
- 算法设计与应用基础系列10
- Angular程序架构
- JQuery 的跨域方法 可跨新浪、腾讯、经网等任意网站