上次说了模型训练的示例,这次把预测部分也实现下,本文预测方法会提供两种,一种是针对单样本的预测,一种是使用dataset实现样本集的预测,先来看下要要预测的文件信息。
列信息分别是:当前图片,其它图片,标签(0=同一人,1=不同人)
先看下单样本预测代码:
逻辑就是:遍历文件,每次对当前样本的两张图片先进行图像处理,再通过模型输出特征,最后计算欧式距离,距离越小说明越相似。要注意的就是图像处理要与模型训练时保持一致。
看一下测试集预测距离的排序结果:
从排序结果来看,前几个距离最小的都是同一人,说明模型效果还是很好的,从整个测试集来看,6个测试人物首位均命中,top1命中率100%。
我们再来看下使用dataset进行预测的代码:
这个就要先使用dataset,dataloader进行数据的加载,然后每次迭代获取batch_size个样本进行批量预测,准确率跟上面的一致,这里就不多说了,这里重点说下两种方法的性能对比。
从性能来看,批量预测是单样本预测的10倍速,所以预测样本多的话尽量使用批量预测方式进行处理。
以上就是预测的两种方式,上面的示例都是基于CPU的运行速度,如果有GPU的话可以开启GPU加速,性能会更好。
本节内容就这些,想下载源码的可以微信公众号《桔子的算法之路》回复:孪生网络模型训练