人证比对+图片相似度+MTCNN+FACENET+CNN

简介: 人证比对+图片相似度+MTCNN+FACENET+CNN

理论


人证比对,其实就是人脸识别的一部分。


通常来说;我们采用神经网络提取特征,如vgg,resnet,我们需要去掉最后的全连接层,只保留前面网络所提取到的特征,而后直接用特征当做向量表示,计算欧几里得距离,借此得到人脸之间的相似度。


但是对于卷积神经网络来说,softmax损失虽然能有效分类,但是不满足相似度所要求的两个条件:1.类内差距小。2.类间差距大。


总而言之:相似度有两个充要条件:1.特征提取算法上的优异性。2.损失函数的优异性。


目前来说,用于人证比对的损失函数有两种:1.三元组损失。2.中心化损失。


算法


1.MTCNN进行人脸裁剪和对齐。


2.然后就是普通的训练啦,resnet,vgg,densenet啥的都行。


3.损失必须要用三元组损失或者中心损失。


最后:输入两张图片就可以计算距离。


代码


下面展示一三元组损失


         
def triplet_loss(anchor, positive, negative, alpha):
    with tf.variable_scope('triplet_loss'):
        pos_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, positive)), 1)
        neg_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, negative)), 1)
        basic_loss = tf.add(tf.subtract(pos_dist,neg_dist), alpha)
        loss = tf.reduce_mean(tf.maximum(basic_loss, 0.0), 0)
    return loss

下面展示一些 中心损失


         
def center_loss(features, label, alfa, nrof_classes):
    nrof_features = features.get_shape()[1]
    centers = tf.get_variable('centers', [nrof_classes, nrof_features], dtype=tf.float32,
        initializer=tf.constant_initializer(0), trainable=False)
    label = tf.reshape(label, [-1])
    centers_batch = tf.gather(centers, label)
    diff = (1 - alfa) * (centers_batch - features)
    centers = tf.scatter_sub(centers, label, diff)
    loss = tf.reduce_mean(tf.square(features - centers_batch))
    return loss, centers
目录
相关文章
|
1月前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络中的卷积层,如何提取图片的特征?
卷积神经网络中的卷积层,如何提取图片的特征?
31 0
|
8月前
|
机器学习/深度学习 数据采集 监控
m基于CNN卷积神经网络的口罩识别系统matlab仿真,带GUI操作界面,可以检测图片和视频,统计人数
m基于CNN卷积神经网络的口罩识别系统matlab仿真,带GUI操作界面,可以检测图片和视频,统计人数
96 0
|
9月前
|
机器学习/深度学习 算法 TensorFlow
探索图片的真相--卷积神经网络
探索图片的真相--卷积神经网络
56 0
|
机器学习/深度学习 人工智能 算法
【Pytorch神经网络理论篇】 33 基于图片内容处理的机器视觉:目标检测+图片分割+非极大值抑制+Mask R-CNN模型
目标检测任务的精度相对较高,主要是以检测框的方式,找出图片中目标物体所在的位置。目标检测任务的模型运算量相对较小,速度相对较快。
186 0
|
机器学习/深度学习 算法 PyTorch
PyTorch实战 | 使用卷积神经网络对CIFAR10图片进行分类(附源码)
首先通过torch.randn()生成四维的随机数据,由于我们之前定义网络中Conv2d()函数接收的数据要求是四维的,其中第一维度代表样本数据的个数,第二维代表数据的通道数,第3、4维代表数据大小,这里是32×32的网格。然后将生成的数据送入neural_net(),这里会自动调用该对象的forward()方法进行模型训练并输出结果。
PyTorch实战 | 使用卷积神经网络对CIFAR10图片进行分类(附源码)
|
机器学习/深度学习 算法
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测
|
机器学习/深度学习 移动开发 算法框架/工具
DL之AlexNet(Keras框架):利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型→加载模型)
DL之AlexNet(Keras框架):利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型→加载模型)
DL之AlexNet(Keras框架):利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型→加载模型)
|
机器学习/深度学习 算法
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测(二)
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测(二)
|
机器学习/深度学习 算法
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测(一)
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测(一)
|
机器学习/深度学习 移动开发
DL之AlDL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型)(二)
DL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型)

热门文章

最新文章