python keras 神经网络,搭建基于keras的cnn人脸识别

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: