Age Estimation | Papers With Code
Hierarchical Attention-Based Age Estimation and Bias Analysis,基于注意力机制的分层年龄估计和偏差分析。
这篇论文发表于2023年12月,影响因子为23.6,属于计算机科学领域一区的期刊,刊登于IEEE Transactions on Pattern Analysis and Machine Intelligence上。
论文分了五个部分,分别为背景介绍、相关工作、基于注意力的分层年龄估计、实验结果、总结。
比较重点的部分有相关工作中的注意力机制和Transformer,还有基于注意力的分层年龄估计这一部分。
首先要讲的是注意力机制,读,self-attention自注意力机制的工作原理是,输入的一串向量中,读,其中的,读。这里输入的一串向量,读。
这里的a1 a2 a3 a4是前面所说的一串输入的图像特征向量,每个向量都会分别生成q、k、v三个参数,由各自对应的可训练参数权重矩阵经过计算得出的。从第一张图开始看,这里要寻找和a1相关的向量,要用a1的q1与剩下向量与自身的k相乘分别得出a1与各个向量的关联性attention score,q1是通过wq×a1得到的,k是通过wk×对应向量得到的。
接下来第二张图,attention score经过softmax或其他激活函数的激活,得到一个经过激活的关联性attention score prime。接着(图3),经过激活的attention score prime与每个向量的v相乘之后的总和就是self-attention输出的一个向量,即和a1相关的重要信息都抽取出来了,因为是(读b),捕捉到了特征的内部相关性。
Transformer就有用到刚刚讲的self-attention,本文主要用到的是Transformer中的Encoder部分,它的功能是输入一排向量-输出一排向量,可以做到这个的还有RNN或CNN。
Transformer-Encoder的结构是这样的:输入图片,将图片经过处理后的特征向量输入,关于这里的位置编码,光用self-attention没有位置的资讯,是共线进行的,要加上positional encoding,Positional Encoding就是句子中词语相对位置的编码,让Transformer保留词语的位置信息,对NLP有作用,但在本文的方法中,增强图像嵌入的序列是无序的,不用位置信息,就不用positional encoding了。
接下来的部分可以叫作一个Block,一个Transformer-Encoder里可以有很多个Block,每个Block里的操作层大致为self-attention、Fully Connected Feed Forward Network。
具体来看,输入的图像特征向量b经过self-attention得到一个向量a,这个a要与原本的输入b求和,也就是要进行residual的操作,读,这里的初始输入信息至少能没有损失的传递下去,排除效果不好的操作带来的消极影响,保障模型的效果不会变得更差。
Residual之后输入进norm层,layer normalization,(看图3公式),norm出来后进入Fully Connected Feed Forward Network,再进行一次residual,输入norm,最后输出。是这样连起来的,在图1中找对应,这里的self attention 就是图中的Multi-Head Attention,residual和norm就是图中的Add & Norm,Fully Connected Feed Forward Network就是图中的Feed Forward。
Self attention到底有什么用呢,他在Transformer-Encoder中的主要作用就是,提取和总结向量特征。图中的Multi-Head Attention 与Self attention区别就是有多个q、k、v,读。
第三章基于注意力的分层年龄估计的基于自注意力机制的图像特征嵌入,主要有三个方面的内容,读。
文章中有列举出本文模型与传统的区别,读。
第一部分,上面是,读,下面是,读,上面的图中分别进行k次的增强的对象是复制出来的吗?引用的论文中有这个图,读,主要是k个augmentation,我觉得这么画应该也是一样的。
第二部分,上面是,读,下面是,读。
第三部分,上面是,读,下面是,读。
两个模型之间的区别还有后面的这一部分,上面是,读,下面这部分是论文着重讲述的部分,分层概率年龄回归。
分层概率年龄回归这一内容主要分为了概率、回归、分层,这三个部分,首先要讲的是概率,概率年龄估计。
在图中是上面这条线路,读,点,X,笑脸。
第二部分,回归,是下面得这条线路,读,点,第三部分分层,是指,读。
将两个部分结合在一起,用到的是这个公式,读。
下面是各个部分用到的不同的损失函数,第一个是概率估计部分的损失函数,交叉熵损失函数,首先讲一下熵是什么。读。这里有一个例子,表中有三种编码方式,可能发生的事件有天气晴朗,多云,下雨,下雪,各对应不同的发生概率。编码长度就是编码的二进制位数乘上事件发生的概率,的总和,发现最短编码的情况就是发生概率小的事件用长编码,发生概率大的事件用短编码,编码长度最短的情况下,发现可以通过概率直接计算出来,公式就是熵的公式。读。
下面介绍交叉熵。读。可以看出来Q2模型交叉熵比较小,也是他预测的比较准确,点,读,点,读。
第二个损失函数是均方误差损失函数,读。
第三个损失函数是均值-方差损失函数,读。点,我觉得这里拿概率乘以一个分组序号与年龄真值作比较感觉不太理解,有没有可能是ac而不是c。点,点,读,点,读。
最终整合成一个总的损失函数,其中的均方差损失函数应该是这样的,加了个求和也不太能理解,第二个LM可能是LV。
基于注意力的分层年龄估计,读。
针对上面讲述的损失函数,文章中用到的优化方式是使用Ranger优化器。
第四章,讲了数据集、实施细节、实验结果、消融实验、偏差统计、SAE的通用性。第一部分,讲述了数据集和评估协议。
第二部分,实施细节。
第三部分,实验结果。
第四部分,消融实验。K,太阳,4个头,binsize是分组的数量吗,如果是1的话,是不是相当于没有分类。
第五部分,偏差统计。
第六部分,SAE的通用性。