个人理解,水平有限,有错请多指正。参考论文:Online Detection and Classification of Dynamic Hand Gestures with Recurrent 3D Convolutional Neural Networks
CTC是作为RNN的损失函数使用,只在训练的时候使用。
首先,假设有P个动态手势的视频序列,每个视频包含T个clips,则X包含N=T*P个clips。CTC的一个思想是加入一个空label,这里定义成no gesture。定义一个向量y包含这个视频序列的P个手势,现在在这P个手势间隔中插入no gesture label,用辅助向量y'表示,则y'的长度应该是P'=2*P+1。
如上图所示(图片来自语音识别论文):D,O,G可以看成不同的手势,当识别多个视频流的动态手势时,多条路劲可以得到同一个向量y。如:[1-22-]=[-12--]=[12],其中1,2为具体手势的label,而-为空手势。从图可得最终路径的结束必须是在N-1的具体手势或者空手势结束。所以我们求得由X视频序列计算y向量的概率为:
其中:
等式意思即为DOG图表达意思,其计算方式采用的是递归的方式。所以需要初始化与,代表在t=0时取空手势与第一个有效手势的概率,其中s代表softmax预测函数。
而CTC的损失函数为: