dualplus / LTNet

Implement of LTNet in "Facial expression recognition with inconsistent datasets", ECCV 2018
46 stars 12 forks source link

论文中一些地方没看懂 #3

Open Ostnie opened 5 years ago

Ostnie commented 5 years ago

之前做过一些表情的工作,表情这一块的内容中不同数据集标注标准不一致一直是一个很严重的问题,很开心看到了你的论文,但是有些地方看不太懂,关于caffe也知之甚少,所以在这里提一下问,希望能解开我的困惑。

  1. 论文第七页阐述完EM的问题之后,开始介绍LTN的结构,有这么一句话rather than minimizing the discrepancy between the estimated truths and the observed labels directly, LTNet predicts each coder’s annotation and minimizes the discrepancy between the predicted and observed annotations。 是否描述的是,LTN并不直接像其他模型一样对预测结果和label计算一个损失进行优化,而是针对一个图片(假设只有一个)输出每一个标注者的标注情况,然后最小化他们的损失。 换而言之,我理解的是,假如现在我一副图片有了三个标注者,模型A的pred,模型b的pred,以及图片本身的label,那么对这一幅图片而言,我输入它,通过LTN我得到的是三个输出预测值,分别对应于前面三个label,我计算每一个的损失,最终求和作为总的损失。

2.如果前面1没理解错,那么现在我们看LTN结构 image 这里有两个问题,一是basic network部分最后得到的latent truth layer是否是我们一般所说的卷积层最后一层的输出?图看上去很像,但是加上后面T的意义的话,我觉得这里应该是一个长度为L的全连接层的输出,这样才能在进行batchsizeL 和LL的矩阵乘法,二是probability transition layers是否可以理解成一个转移矩阵,类似T的定义所言,它代表的是真实i被标注为所有类别可能性的分布,那么这个矩阵是否是可学习的?如果可学习,那么为了保持其行归一性,训练过程中是不是也需要每训练一次就进行一次行归一化?直到训练结束。

3.如果前面我所理解的都没有太大问题,那么对于第三页的一幅图还有一点疑惑 image 我现在理解的流程如问题一所说,先训练两个模型,再将其预测作为标签,这样每个图片拥有了三个标签,分别在latent truth layer后有三个可训练的转移矩阵得到最后的对标注者的预测标签,分别计算损失然后求和,进行反响传播优化模型。 那么这样的话我对于假如Unlabeled数据有点不解,这样以来就导致部分数据最后输出的label有三组,部分有两组,遇到只有两组的图片时,最正常的想法就是只算这两组的损失进行优化,请问是这么处理的吗?

之所以疑惑是因为我觉得对于unlabel的数据缺少一个维度,感觉像是data层面的dropout,网络本身并不知道哪些数据最终算损失时会缺少一部分,所以这种奇怪的改动会带来什么影响我很好奇,因为换作是我可能会直接抛弃掉这些unlabel的数据,不知道有没有做过类似的实验,是否使用unlabel数据对最后结果的影响。我感觉这是一个很有价值的问题,因为如果能验证以某种方式使用unlabel图片会带来提升,那么对于存在大量的unlabel图片的问题来说绝对是一个好消息。

dualplus commented 5 years ago

谢谢你对我们工作感兴趣。以下是我的回答。

  1. 你的理解是正确的。
  2. 这个图我画的有点抽象。。。。latent truth layer的输出是p,是个N维向量,元素和为1,表示概率分布。第i维是表示输入图像属于的第i个类的概率。你可以理解这个层是某些featuremap输出过了fully connect layer然后再过了softmax layer得到了这样一个输出p。 probability transition layer是一个概率转移矩阵,每次forward前都需要归一化。具体实现间repo里面的inner_product_with_prob_layer。这个概率转移矩阵需要学习。
  3. unlabel data是为了更好的学习概率转移矩阵。paper里这个学习框架的核心是希望同一份数据有不同份标注,标注之间有一致的地方也有冲突的地方,这样可以通过估计每份标注的特点(概率转移矩阵)来反推真实标签(latent truth)是什么。使用unlabel data可以让不同份标注混合地更加充分。我们有未发表的实验结果表明,不使用unlabel data,结果会比现在有所下降。
NingCY commented 5 years ago

关于第三个问题,我的理解是作者是先分别用RAF和AffectNet各自独立地训练了两个模型A和B,然后用模型A来预测AffectNet数据集得到PredA,用模型B来预测RAF数据集得到PredB,这样图片有了两个标签,应该是没有用模型A预测自己的训练集RAF的这一步,所以所有的图片都是两个coder,不知道我理解的对不对?@dualplus

NingCY commented 5 years ago

另外,我也有个问题想问下您@dualplus,如果使用latent label来训练得到模型,那么在测试的时候是否也需要让测试的数据通过LTNet转换成latent label再用模型进行测试?