数据集划分
![image-20200713171145017](https://i-blog.csdnimg.cn/blog_migrate/b89970e8028b79a1f288289d72340f95.png)
一个简单的Siamese network可以如下
这样就可以对一个Query 来分别对比support set 中的每个图片计算sim的值
![image-20200713172851084](https://i-blog.csdnimg.cn/blog_migrate/3c5dd1cc0b2d945b06d145981f0bd198.png)
而对于孪生网络的训练过程
-
首先选择一个图片作为anchor(锚点),然后记录下这个anchor ,再在这个anchor所在类中随机抽取一个样本共同构成正样本,然后在非anchor所在类中的其他类中随机抽取一个样本构成负样本
-
将anchor、正样本和负样本分别输入同一个神经网络,计算特征之间的距离
![image-20200713173348465](https://i-blog.csdnimg.cn/blog_migrate/b37decba86ba941cc1718d594ea184e3.png)
-
所以在这里希望正样本的d更小而负样本的d更大,定义loss=0情况为:负样本的d>=正样本的d+anchor的d![](https://i-blog.csdnimg.cn/blog_migrate/a607ebf334c856f242f62b5218ed0985.png)
-
算出所有距离![image-20200713173828525](https://i-blog.csdnimg.cn/blog_migrate/fd306eb2bf0ca316ce40e31d6e5a0590.png)
-
得到最后的结果