python keras 神经网络,搭建基于keras的cnn人脸识别
本文主要为大家介绍python神经网络facenet人脸检测和keras实现。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010什么是facenetInception-ResNetV11、Stem的结构:2、Incident-Resnet-A的结构:3、Incident-Resnet-B的结构:4、Incident-Resnet-C的结构:5、所有代码检测人脸并实现比较:
目录
最近学了我最喜欢的mtcnn,但是光有某人的脸有什么用?我们必须知道是谁,并开始facenet特征提取之旅。
谷歌2015年在CVPR发表的人脸检测算法,利用了同一张人脸在不同角度的照片中具有高内聚性,不同人脸具有低耦合性等特点。提出了cnn三元组挖掘方法,在LFW数据集上的准确率达到99.63%。
CNN将人脸映射到欧洲空间的特征向量。本质上,不同图片的人脸特征距离大;通过同一个人的脸的距离总是小于不同个人的脸,这是一个先验知识训练网络。
测试时只需要计算人脸特征嵌入,然后计算距离使用阈值,就可以判断两张人脸照片是否属于同一个人。
简单来说,在使用阶段,facenet是:
1.输入面部图片。
2.通过深度学习网络进行特征提取。
3.L2标准化
4.得到128维特征向量。
下载链接:https://pan.baidu.com/s/1T2b5u2mZ9yMtKt3TvLxTaw
提货代码:xmg0
什么是facenet
Incident-resnet v1是facenet使用的主干网络。
它的结构很有意思!
图中显示了整个网络的主干结构:
你可以看到内部结构分为几个重要的部分。
1、梗
2、盗梦空间
3、盗梦空间
4、盗梦空间-resnet-C
Inception-ResNetV1
在facenet中,其输入大小为160x160x3,输入后:
两次卷积-一次最大汇集-两次卷积
Python实现代码如下:
输入=输入(形状=输入_形状)
# 160,160,3 - 77,77,64
x=conv2d_bn(输入,32,3,步距=2,填充=有效,名称=Conv2d_1a_3x3 )
x=conv2d_bn(x,32,3,padding=valid ,name=Conv2d_2a_3x3 )
x=conv2d_bn(x,64,3,name=Conv2d_2b_3x3 )
# 77,77,64 - 38,38,64
x=MaxPooling2D(3,步幅=2,name=MaxPool_3a_3x3)(x)
# 38,38,64 - 17,17,256
x=conv2d_bn(x,80,1,padding=valid ,name=Conv2d_3b_1x1 )
x=conv2d_bn(x,192,3,padding=valid ,name=Conv2d_4a_3x3 )
x=conv2d_bn(x,256,3,步距=2,填充=有效,名称=Conv2d_4b_3x3 )
1、Stem的结构:
incidence-resnet-a的结构分为四个分支。
1、未经处理直接输出
2、经过一次1x1的32通道的卷积处理
3、经过一次1x1的32通道的卷积处理和一次3x3的32通道的卷积处理
4、经过一次1x1的32通道的卷积处理和两次3x3的32通道的卷积处理
234步的结果堆叠后j进行一次卷积,并与第一步的结果相加,实质上这是一个残差网络结构。
实现代码如下:
branch_0 = conv2d_bn(x, 32, 1, name=name_fmt(Conv2d_1x1, 0))
3、Inception-resnet-B的结构:
Inception-resnet-B的结构分为四个分支
1、未经处理直接输出
2、经过一次1x1的128通道的卷积处理
3、经过一次1x1的128通道的卷积处理、一次1x7的128通道的卷积处理和一次7x1的128通道的卷积处理
23步的结果堆叠后j进行一次卷积,并与第一步的结果相加,实质上这是一个残差网络结构。
实现代码如下:
branch_0 = conv2d_bn(x, 128, 1, name=name_fmt(Conv2d_1x1, 0))
4、Inception-resnet-C的结构:
Inception-resnet-B的结构分为四个分支
1、未经处理直接输出
2、经过一次1x1的128通道的卷积处理
3、经过一次1x1的192通道的卷积处理、一次1x3的192通道的卷积处理和一次3x1的128通道的卷积处理
23步的结果堆叠后j进行一次卷积,并与第一步的结果相加,实质上这是一个残差网络结构。
实现代码如下:
branch_0 = conv2d_bn(x, 192, 1, name=name_fmt(Conv2d_1x1, 0))
5、全部代码
from functools import partial
检测人脸并实现比较:
利用opencv自带的cv2.CascadeClassifier检测人脸并实现人脸的比较:根目录摆放方式如下:
demo文件如下:
import numpy as np
实现效果为:
[0.6534328]
[1.3536944]
以上就是python神经网络facenet人脸检测及keras实现的详细内容,更多关于facenet人脸检测keras实现的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。