小样本学习之—-孪生网络(Siamese Networks) (2)

孪生网络(Siamese Networks) 属于二分类,基于相似性的先验知识。

参考论文:

1、Siamese Neural Networks for One-shot Image Recognition

2、FaceNet: A Unified Embedding for Face Recognition and Clustering

简单来说,Siamese network就是“连体的神经网络”,神经网络的“连体”是通过共享权值来实现的,如下图所示。

训练连体网络的两种方法:

1、每次取一对样本,比较他们的相似度。

Siamese Neural Networks for One-shot Image Recognition

使用一个大的数据集,每一类里面有很多样本。用训练集构造正样本和负样本。正样本告诉神经网络什么是同一类,负样本告诉神经网络不同样本的区别。

1.1 数据集的获取 (正负样本的构造)

从同一类图片随机抽取两张图片,并设置标签1,表示同一类。

从不同类中随机抽取两张图片,设置标签为0,表示不同的类别。

1.2、网络架构

1.3 训练:衡量不同图片的相似度(为什么叫连体网络:共享权值,公用一个CNN框架)

1.4损失:

target 和 sim 的损失,来更新参数。

1.4、测试位置的数据

逐一将support set里面的图片分别和query求相似度,取其最高的那个。

2、每次取三个样本( anchor ,+,-),比较他们的相似度。

FaceNet: A Unified Embedding for Face Recognition and Clustering

2.1数据集处理:

从数据集中随机抽取一张图片,作为锚点anchor,再从该类别中随机去一张正样本 ,从除了该类以外的图片中抽取一个负样本作为sample

2.2训练:共享网络

2.3损失函数:

模板d+越小,d-越大

2.4 测试:选择模型输出距离最小的。

总结:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注