APP下载
报价宝  ›  科技  › 

大型人脸识别翻车现场

报价宝 来源:baojiabao.com 发布时间:2019-09-12 13:53:00 11月16日更新
报价宝综合消息大型人脸识别翻车现场

导读

随着人脸资料集越来越大,所以人脸识别技术也越来越成熟,促使了很多相关人脸识别产品的落地,如人脸解锁手机、人脸支付、人脸门锁、人脸搜寻、人脸登入等。不同的系统对于人脸识别的要求和精度有所不同,所以为了提高目前人脸识别的精度,主要的发展方向是通过减少类内的距离、增大类间的距离,就诞生了一批通过改进人脸损失函式来提高精度的算法。

这篇文章主要介绍的是基于mxnet的gluon的一个人脸识别的库,gluon-face它包括了近些年来主流的人脸损失函式,包括TripletLoss、RingLoss、CosLoss、L2Softmax、ASoftmax、CenterLoss、ContrastiveLoss、AcrLoss等。除此之外,还包括了1:1人脸验证的metric,人脸识别的pretrained model。

gluon-face的安装

gluon-face是基于mxnet的,所以需要安装mxnet

环境要求:Python3.5或者以上版本,需要安装gluoncv和mxnet

pip install gluoncv --pre

pip install mxnet-mkl --pre --upgrade

# if cuda XX is installed

pip install mxnet-cuXXmkl --pre --upgrade

安装gluon-face

pip install git+https://github.com/THUFutureLab/[email protected]#推荐

pip install gluonfr

人脸资料集

insightface专案地址:https://github.com/deepinsight/insightface

资料集下载地址:https://github.com/deepinsight/insightface/wiki/Dataset-Zoo

insightface是基于mxnet的symbol开发的一个人脸识别专案,这个专案也包括了基于不同损失函式来训练模型,整个专案结构比较复杂,阅读有一定难度,该专案也提供了不同模型的预训练模型,具体可以参考GitHub,下面是insightface使用不同的loss下的准确度

gluon-face借鉴了insightface的思想,git上面提供了一些人脸资料集的训练集和验证集,所有的人脸资料都已经通过mtcnn裁剪对齐保证人脸的图片大小为(112,112),并将资料储存为了三个档案分别是train.rec、train.idx和val_data.bin。

资料存放格式如下图:

注意:这三个档案是是将112×112的人脸资料转成了三个档案,主要目的是因为人脸资料比较大为了提高读取资料的速度加快训练,使用这种格式的档案可以极大利用mxnet的低层优化来提高速度。档案的制作方式可以参考insightface专案的介绍

gluon-face的损失函式

下面展示的是基于论文提供的不同损失函式下训练的模型,在LFW资料集上获得的最好的准确率,

gluon-face示例

地址:https://github.com/THUFutureLab/gluon-face/tree/master/examples/face_recognition

目前gluon-face的git上给出的example并不是特别全,下面我们看一个基于arcLoss的训练核心程式码,详细程式码请参考上面给的地址,相对insightface程式码要少不少,不过准确率有待验证

# 部分训练程式码,完整请参考专案内的例子

train_set = get_recognition_dataset("emore", transform=transform_train)

train_data = DataLoader(train_set, batch_size, shuffle=True, num_workers=num_worker)

loss = ArcLoss(train_set.num_classes, s=64, m=0.5)

while it

for batch in tqdm(train_data):

if it == lr_steps[lr_counter]:

trainer.set_learning_rate(trainer.learning_rate * 0.1)

lr_counter += 1

data = gluon.utils.split_and_load(batch[0], ctx_list=ctx, batch_axis=0, even_split=False)

labels = gluon.utils.split_and_load(batch[1], ctx_list=ctx, batch_axis=0, even_split=False)

with ag.record():

outputs = [net(X)[1] for X in data]

losses = [loss(yhat, y) for yhat, y in zip(outputs, labels)]

for l in losses:

ag.backward(l)

trainer.step(batch_size)

metric.update(labels, outputs)

loss_mtc.update(0, losses)

it += 1

建议

要想训练出一个好的人脸识别模型还是需要大量资料的,我这里除了上面的资料之外还有一些人脸识别相关资料集

需要的小伙伴,可以私信我回复“人脸资料”即可获取下载连结

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 汽车价格 华为手机价格 红米手机价格 耳机价格