# 3rd place solution

Congrats everyone with excellent result.
Here is our solution summary.
![](assets/80f9d25429fc4a0d5be0007c.jpg)
Solution summary
Dataset
pretrain
: triple identities by hflip and vflip
image resolution: 137 x236
Model
for seen grapheme and unseen grapheme
* (phalanx) encoder -> gempool -> batch_norm -> fc
* (earhian) encoder -> avgpool -> batch_norm -> dropout -> fc
arcface
* encoder -> avgpool -> conv1d -> bn
* s 32(train), 1.0(test)
* m 0.5
stacking
* conv -> relu -> dropout -> fc
Augmentation
cutmix
shift, scale, rotate, shear
Training
seen grapheme
: train model for seen grapheme with pretrain dataset, then finetune it with original dataset
arcface and unseen grapheme
: train pretrained model for seen grapheme with original dataset
replace softmax with
[pc-softmax](https://arxiv.org/abs/1911.10688)
loss function: negative log likelihood
SGD with CosineAnnealing
Stochastic Weighted Average
Inference
arcface
* use cosine similarity between train and test embedding feature
* threshold: smallest cosine similarity between train and validation embedding feature