A simple yet effective loss function for face verification.
Switch branches/tags
Nothing to show
Clone or download
Latest commit f57f7a7 Aug 3, 2018
Failed to load latest commit information.
Caffe-AM-Softmax @ 504d8a8 change caffe submodule Feb 1, 2018
assets update figure Jan 18, 2018
draw Create ReadMe.md Mar 22, 2018
prototxt Update GNAP.prototxt Aug 2, 2018
.gitignore prototxt Jan 17, 2018
.gitmodules submodule caffe Jan 17, 2018
LICENSE Initial commit Dec 30, 2017
README.md Update README.md Aug 3, 2018


Additive Margin Softmax for Face Verification

by Feng Wang, Weiyang Liu, Haijun Liu, Jian Cheng

The paper is available as a technical report at arXiv.



In this work, we design a new loss function which merges the merits of both NormFace and SphereFace. It is much easier to understand and train, and outperforms the previous state-of-the-art loss function (SphereFace) by 2-5% on MegaFace.


If you find AM-Softmax useful in your research, please consider to cite:

  title = {Additive Margin Softmax for Face Verification},
  author = {Wang, Feng and Liu, Weiyang and Liu, Haijun and Cheng, Jian},
  journal = {arXiv preprint arXiv:1801.05599},
  year = {2018}


Requirements: My Caffe version https://github.com/happynear/caffe-windows. This version can also be compiled in Linux.

The prototxt file is in ./prototxt. The batch size is set to 256. If your GPU's memory is not sufficient enough, you may set iter_size: 2 in face_solver.prototxt and batch_size: 128 in face_train_test.prototxt.

The dataset used for training is CASIA-Webface. We removed 59 identities that are duplicated with LFW (17) and MegaFace Set 1 (42). This is why the final inner-product layer's output is 10516. The list of the duplicated identities can be found in https://github.com/happynear/FaceDatasets.

All other settings are the same with SphereFace. Please refer to the details in SphereFace's repository.

PS: If you want to try the margin scheme described in ArcFace, you may try to transplant this layer in the experiment branch of my Caffe repository. LabelSpecificHardMarginForward() is the kernel function for cos(theta+m).

Model and Training Log

Feature normalized, s=30, m=0.35: OneDrive, Baidu Yun .


See our arXiv technical report.

3rd-Party Re-implementation