读《FVGNN: A Novel GNN to Finger Vein Recognition from Limited Training Data》

tmd,当初随便看看竟然没有当回事,现在才意识到这篇文章多重要(╥﹏╥)
###############

1.引言

指静脉识别过程:

  1. 图像采集(红外)
  2. 图像预处理(ROI,滤波增强)
  3. 特征抽取(LBP,GOM,LGS,OED等方法)
  4. 特征匹配(度量)

静脉图片尤其需要一些预处理,静脉血压、体温等都会有影响

小样本多分类限制了深度学习,虽然可以匹配但是分类就很麻(但是CNN通过数据增强会很强)

2.相关工作

传统方法提取特征:

  1. 基于手指静脉线:
    重复线跟踪法、最大曲率法、平均曲率法、Gabor滤波法【9】

  2. 基于指静脉纹理特征(LBP等,对平移旋转效果较差)

  3. 基于局部不变特征(对平移旋转效果较好,但本身是寻找细节点,这就很不稳定)

还有一些其他方法,PCA,流形空间(超球面吗?),超像素(OED吧?)

解决深度学习所需样本量不足:

  1. 数据增强(“p图”,但是数据量太少还是不行) (但其实没有transform,纯粹的resnet18效果就是无敌,就很麻)
  2. 迁移学习(类似于预训练,任务模型差别大那就瘪了)
  3. 基于度量(本质孪生匹配相似度,真要明确识别,还得立个标杆。不过reid那边有分类加三元匹配的,效果好像很牛逼)

本文是将图像作为节点(把CNN提取到的最终一行特征作为每个节点即图像个体的属性信息,做节点分类)

3.方法

输入包括有标签和无标签(这是有自监督要素,还是zero-shot啊?)
提高泛化性,对标签的one-hot编码做标签平滑(那就是说不用torch自带的那种交叉熵咯?y_true是一行向量,而不是nll里的一个离散值?)
原本样本x对应标签第k类的概率是,现在变成了(1-e)+e/(k-1)

节点是通过CNN得到的每个图像对应的嵌入向量,再分别对任两个节点一组通过一个CNN构造边信息即邻接矩阵(带权的)有graph了就开始GNN了

最后用有惩罚项的交叉熵做损失

4.实验

MMCBNU_6000、SDUMLA-FV
提出只在卷积层和全连接层归一化权重,这样可以避免过拟合

5.总结

可无视数据集稀疏问题
第一篇将GNN应用于指静脉(2019会议)
取代了相似度匹配方法

思考

这篇文章与其说是用了GNN,倒不如说是用了图表示学习,就是将欧式图像建模到非欧式的图结构数据,其实也就是得到对应嵌入矩阵,至于更新嵌入的模型依然是VGG,残差,inception这些CNN,学习邻接矩阵(图结构信息)的模块也不是GNN的模型,所以更体现在思想方面。

你可能感兴趣的:(小白,论文,深度学习,计算机视觉,神经网络)