1、迁移 transfer ,的方法训练低分辨率人脸识别
在主干网络中添加一个数据变量,作为数据输入接口,接收,高分辨率网络的人脸识别512 维度特征,与当前网络的接口输出,直接求L2,作为损失函数,
可使用的参考代码,mxnet
1、neuron-selectivity-transfer
• 两个模型512 feature, 先归一化然后求 求欧式距离 ,反向传播权重5
域适应损失,(MMD)最大均值差异损失,迁移学习中常用
https://arxiv.org/pdf/1707.01219.pdf mxnet mmd 实现,(https://gitee.com/huangchaosusu/neuron-selectivity-transfer,代码)
2、https://blog.csdn.net/yimiyangguang1994/article/details/80833607 ,双通道蒸馏学习,https://github.com/TuSimple/DarkRank
3、2017(guided CNN)
LEARNING GUIDED CONVOLUTIONAL NEURAL NETWORKS FORCROSS-RESOLUTION FACE RECOGNITION
https://people.cs.nctu.edu.tw/~walon/publications/fu17mlsp.pdf
低分辨率人脸验证,有遮挡的人脸验证
4、ADDA,对抗域损失迁移训练,没有mxnet,有pytorch tensorflow版
2017CVPR–Adversarial Discriminative Domain Adaptation
代码有参考,没有使用,因为里面的GRL 梯度反转层没有mxnet 实现, ADDA,有一个说明,直接梯度反转层的缺点,
类似对抗损失训练,多了一个鉴别器网络,输入是原网络和目标网络的特征,规定标签是0 和 1,然后二分类,得到域损失,达到迁移的目的,两者都是源网络训练好,直接得到特征,只训练目标网络,以及域鉴别器
mxnet mnist对抗学习https://www.cnblogs.com/heguanyou/p/7642608.html 代码解析,梯度更新
如何处理读取两组数据训练,如何,梯度更新两个网络
ADDA,的对抗学习提取特征,参考 pytorch 的实现代码,以及mxnet mnist gan 训练代码,梯度更新,主要过程,读取两组数据,然后鉴别器训练得到的梯度,给生成器网络训练
modD.forward(mx.io.DataBatch(outG, [label]), is_train=True)
modD.backward()
diffD = modD.get_input_grads()
# diffD就是modG的loss产生的梯度,用它来向后传播并更新参数。
modG.backward(diffD)
modG.update()
1、 adda 训练注意事项,bind, inputs_need_grad=True,设定true,为了进行输入特征的梯度计算,鉴别器网络的更 新,输入不需要,所以数据需要加detach,不计算输入的梯度,
d_model.bind(data_shapes=data_shapes,label_shapes = label_shapes,inputs_need_grad=True),默认是false,不计算输入梯度
2、I got a similar result to @Tianlin-Gao with office31 dataset. I freezed 1~4th conv blocks of ResNet50 and trained only the 5th block and the classifier, same config (for discriminator: 1e-3, for target encoder: 1e-5) for lr. I resized images to 224 x 224.
Adaptation epochs 20
Final result 83.52% (https://github.com/corenel/pytorch-adda/issues/15)
sgd 训练不好,
用adam 训练
mxnet.optimizer.Adam(learning_rate=0.0001, beta1=0.5, beta2=0.9, epsilon=1e-08)
3、 训练设置
default.kvstore = 'device'#'local' #'device' #MXNET_ENABLE_GPU_P2P=1,,local P2P=0
export MXNET_ENABLE_GPU_P2P=1
export MXNET_GPU_WORKER_NTHREADS=4
MXNET_BACKWARD_DO_MIRROR=1
5、2018 SSPP-DAN:
Deep Domain Adaptation Network for Face Recognition with Single Sample Per Person,单人脸例如只有证件照,图片的人脸识别场景,domloss 用到了梯度反转层,gradient reversal layer (GRL)
EK-LFH 是自制和scface 类似的数据,并多了多姿态
https://arxiv.org/pdf/1702.04069.pdf
https://github.com/csehong/SSPP-DAN/blob/master/train_model.py
6、DeepSaliency论文翻译学习-Visual Saliency Based on MuItiscale Deep Features
对对齐的图片进行每个分类下的图片进行多尺度,例如截取五官的局部,也是一个人
7、 2019 信息最大化进行迁移学习,
论文 http://export.arxiv.org/pdf/1812.00194
哔哩哔哩 https://www.bilibili.com/video/BV1qJ411y7jS?p=2
同样的源数据,这样的的方法效果迁移的泛化性更好
8、【ICCV2019】probabilistic face embeddings 概率人脸嵌入, 对监控模糊低分辨人脸更具有适应性
https://blog.csdn.net/leviopku/article/details/102796208
(Note: 在图像质量层次不齐的数据集上PFE表现更佳)
PFE倾向于在图像质量更多样化的数据集上实现更大的性能改进。
9、2021 CVPR 2021 | 帮你理解域迁移:可视化网络知识的变化
https://zhuanlan.zhihu.com/p/369252839
可以使用在低分辨人脸的方法,例如域对抗迁移训练的方式