之前谈到的现象是单个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