Language:
🇨🇳
🇺🇸
«facenet»复现了论文FaceNet: A Unified Embedding for Face Recognition and Clustering
基于similarity实现,增加了如下功能:
- 通过配置文件模块设置训练参数;
- 支持多
GPU
训练以及混合精度训练; - 添加多种预处理函数以及训练配置。
关于FMNIST/CIFAR/LFW
的训练结果,请参见详细
facenet是一篇非常优秀的人脸识别论文,它创新性的提出了一种新的训练范式 - 三元组损失(triplet loss
)训练。三元组损失的核心思想在于缩小同类人脸之间的欧式距离的同时尽可能的的扩大不同类之间的距离,每次训练都需要采集训练图像(锚点)以及同类正样本和不同类负样本。
similarity提供了一个非常棒的facenet
训练工程。每轮训练开始之前先通过采样器对数据进行分配,保证每批次数据中包含P
个类别以及每个类别拥有K
个训练样本;完成前向计算后对同批次数据进行两两计算,采集符合semi-hard
定义(负样本并没有比正样本接近于锚点,但是其距离仍位于边界范围内)的正负样本对参与损失函数计算。
上述工程的不足之处在于它并不支持多GPU
训练、混合精度训练以及没有很好的模块化设计导致扩展性不强,不能够直接作用于实际应用。 为了更好的训练facenet
,本仓库基于similarity进行了增强操作,提供了更友好的训练实现。
$ pip install -r requirements.txt