Siamese网络是用来计算相似度的网络
输入:图像,矩阵,向量等
输出:向量
对于两个不同的输入X1, X2获取他们的输出Y1, Y2
通过计算Y1,Y2的欧氏距离或者他们的余弦相似度等方法取获取X1,X2的相似度
这个网络结构还是很清楚的,通过ROI_pooling等方法很容易就可以做到
那么Siamese网络的关键就在于训练了
训练
输入:(X1,X2,Y)
X1,X2表示一组输入,Y表示X1,X2是否为同一类 1为同一类, 0为不同类
将X1,X2 输入获得Y1, Y2
若X1,X2 为同一类,则Y1, Y2 之间的距离越小越好,否则Y1, Y2 之间的距离越大越好
也就是说随着loss的减少 为同一类之间的距离要减小,不为同一类之间的距离要加大
那么就有如下的loss函数
距离计算的函数是可以替换的,可以替换成欧氏距离,余弦相似度都可以