人脸识别像素最低_一种低分辨率图像的人脸识别方法与流程

本发明涉及计算机视觉技术领域,更具体地,涉及一种低分辨率图像的人脸识别方法。

背景技术:

目前最常用的人脸识别算法是基于卷积神经网络(Convolutional Neural Network,CNN)的,CNN由一系列的卷积操作组成,如图1所示,CNN输入一张人脸图片,最终输出用于识别的特征向量;特征向量接近的图片则认为来自于同一个体。

卷积操作定义为:

Conv(K,x)=K*x

其中K是卷积操作的参数矩阵,尺寸为(d*d)(d根据经验设定),x是输入,*是标准的2-D矩阵卷积。每一个卷积操作的输出,会作为下一个卷积操作的输入;第一个卷积操作的输入是原始的人脸图像。

神经网络在使用之前,需要一个过程,称为训练;神经网络有一系列卷积操作的K参数,通过随机初始化确定,然后通过反向传播算法来优化。训练需要一个损失参数,反映参数的优劣。参数优,损失小;反之亦然。

现有技术提供了一种基于PCN的低分辨率图像的人脸识别方法,该方法提出了一个4层的浅层神经网络,其以超分辨率重建为目标预训练浅层神经网络,之后调整训练目标为低分辨率图像分类识别,重新训练网络,通过利用预训练过程中获得的先验知识使得图像识别取得更高的准确率。

但是PCN方法局限于简单浅层神经网络,未对具体问题提出充分优化的网络结构,且PCN方法使用预训练需要更多的计算资源。

技术实现要素:

本发明为解决以上现有技术的缺陷,提供了一种低分辨率图像的人脸识别方法。

为实现以上发明目的,采用的技术方案是:

一种低分辨率图像的人脸识别方法,包括有以下步骤:

S1.构建残差卷积神经网络,训练样本向残差卷积神经网络输入的元组在输入至残差卷积神经网络之前,经过3个额外的卷积操作;

S2.计算残差卷积神经网络的联合损失函数L:

Lf=α1Ls+α2Lc

L=α3Lr+α4Lf

其中n表示训练样本数,k表示训练样本中的个体数,xi表示训练样本Ii的特征,ci表示Ii的个体,e是自然对数,M和b表示全联接层矩阵和偏移量,Mj表示矩阵M的jth列,bj表示偏移量b的jth元素,mci表示个体ci的特征中心;α1、α2、α3、α4表示手工设定的常数;F(Ii;W)表示3个额外的卷积操作中,最后的一个卷积操作输出的特征;W表示网络的参数;Ls表示交叉墒损失,Lc表示中心损失,Lr表示超分辨率重建损失;

S3.根据联合损失函数L利用反向传播算法对残差卷积神经网络的网络参数进行优化;

S4.判定计算得到的联合损失函数L是否低于所设定的阈值,若是则结束训练过程;

S5.训练好残差卷积神经网络后向残差卷积神经网络输入测试样本,得到识别结果。

优选地,所述训练样本向残差卷积神经网络输入的是元组<Ii,Hi,ci>,其中Ii表示从高分辨率图像Hi产生的低分辨率图像;

与现有技术相比,本发明的有益效果是:

(1)本发明提供的方法采用残差卷积神经网络来进行人脸识别,使用到的网络结构和损失函数更加合理,获得性能提升。

(2)本发明提供的方法不需要预训练等步骤,加速网络训练,减少计算资源消耗。

附图说明

图1为卷积网络的示意图。

图2为构建的残差卷积神经网络的示意图。

图3为构建的残差卷积神经网络的网络结构参数示意图。

图4为3个额外的卷积操作的网络结构参数示意图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

以下结合附图和实施例对本发明做进一步的阐述。

实施例1

本发明提供的方法包括有以下步骤:

S1.构建残差卷积神经网络,构建的残差卷积神经网络的网络结构示意图如图2所示,网络结构的参数详见图3;如图4所示,训练样本向残差卷积神经网络输入的元组在输入至残差卷积神经网络之前,经过3个额外的卷积操作;

S2.计算残差卷积神经网络的联合损失函数L:

Lf=α1Ls+α2Lc

L=α3Lr+α4Lf

其中n表示训练样本数,k表示训练样本中的个体数,xi表示训练样本Ii的特征,ci表示Ii的个体,e是自然对数,M和b表示全联接层矩阵和偏移量,Mj表示矩阵M的jth列,bj表示偏移量b的jth元素,mci表示个体ci的特征中心;α1、α2、α3、α4表示手工设定的常数;F(Ii;W)表示3个额外的卷积操作中,最后的一个卷积操作输出的特征;W表示网络的参数;Ls表示交叉墒损失,Lc表示中心损失,Lr表示超分辨率重建损失;

S3.根据联合损失函数L利用反向传播算法对残差卷积神经网络的网络参数进行优化;

S4.判定计算得到的联合损失函数L是否低于所设定的阈值,若是则结束训练过程;

S5.训练好残差卷积神经网络后向残差卷积神经网络输入测试样本,得到识别结果。

常规的人脸识别算法在图像分辨率较低的时候性能不佳,为了解决这个技术问题,本实施例对训练过程进行了改进:

(1)所述训练样本向残差卷积神经网络输入的是元组<Ii,Hi,ci>,其中Ii表示从高分辨率图像Hi产生的低分辨率图像;

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

史上最污技术解读,我竟然秒懂了

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删假设你是个妹子&#xff0c;你有一位男朋友&#xff0c;于此同时你和另外一位男生暧昧不清&#xff0c;比朋友好&#xff0c;又不是恋人。你随时…

textureview 缩放_View的双指缩放以及移动

最近做项目&#xff0c;做到了要让视频缩放的功能&#xff0c;所以写了一个小DEMO&#xff0c;进行双指手势的操作&#xff0c;DEMO是使用TextView做测试&#xff0c;实际使用监听放在TextureView也是正常运行。首先就是记录下触摸屏幕的手指数量&#xff0c;一个手指触摸的时候…

tdd java_Java TDD简介–第1部分

tdd java欢迎来到测试驱动开发 &#xff08;TDD&#xff09;系列的介绍。 我们将在TDD上下文中讨论Java和JUnit &#xff0c;但这只是工具。 本文的主要目的是使您全面了解TDD&#xff0c;而无论使用哪种编程语言和测试框架。 如果您在项目中不使用TDD&#xff0c;那么您要么是…

C++最佳实践 | 代码风格

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删C最佳实践:1. 工具2. 代码风格&#xff08;本文&#xff09;3. 安全性4. 可维护性5. 可移植性及多线程6. 性能7. 正确性和脚本代码风格代码风格最…

使用map的find头文件_C++ map用法

C 中 map 提供的是一种键值对容器&#xff0c;里面的数据都是成对出现的,如下图&#xff1a;每一对中的第一个值称之为关键字(key)&#xff0c;每个关键字只能在 map 中出现一次&#xff1b;第二个称之为该关键字的对应值。在一些程序中建立一个 map 可以起到事半功倍的效果&am…

lucene 查询示例_高级Lucene查询示例

lucene 查询示例本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中&#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要&#xff0c;然后了解Lucene中搜索的工作方式。 此外&#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中…

okhttp 连接池_okhttp 源码分析

https://square.github.io/okhttp/​square.github.iosquare/okhttp​github.com0 概述okhttp是一个现代的网络请求框架Http/2 支持 所有访问同一个主机的Request都共用一个socketconnection pool 连接池 减少请求延迟GZIP 压缩数据&#xff0c;减少传输所用的带宽Response Cac…

程序员日均写7行代码被开除,公司:正常员工每天200行

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删根据前不久CSDN发布的《2021-2022中国开发者调查报告》显示&#xff0c;大部分程序员平均每天会写200行左右的代码。那么代码的数量能衡量一个程…

抽象工厂和工厂方法示例_工厂方法设计模式示例

抽象工厂和工厂方法示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查…

rust废铁最快_Rust初体验,它确实有点快

写了多年的Java&#xff0c;某天机缘巧合之下听说了一门语言叫Rust&#xff0c;Rust的亲爹是Mozilla&#xff0c;如果要和其它语言拼爹的话&#xff0c;实力应该还是可以的。官方介绍如下&#xff1a;Rust is blazingly fast and memory-efficient: with no runtime or garbage…

jax-ws和jax-rs_JAX-RS和JSON-P集成

jax-ws和jax-rs这篇简短的文章讨论了JAX-RS 2.0中对JSON-P的支持 JSON-P…&#xff1f; JSON处理API &#xff08;JSON-P&#xff09;是Java EE 7中引入的。 它提供了用于处理JSON数据的标准API&#xff0c;并且与XML对应的JAXP非常相似。 JSON-B &#xff08;JSON绑定&#x…

这10个C语言技巧让初学者少走180天弯路!

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删技巧 1&#xff1a;不要使用“GOTO”语句二十几年前&#xff0c;当计算机编程尚处于起步阶段时&#xff0c;程序流程是由“GOTO”语句来控制。该…

flyway版本号_Flyway版本化管理数据库脚本

假如我们有一个叫shiny的项目&#xff0c;它是由一个程序Shiny-Server 和一个数据库 Shiny-DB组成的;简单结构图如下&#xff1a;image.png但是很多时候&#xff0c;现实开发团队是这样的&#xff1a;image.png我们的项目shiny项目的运行环境是有多套的&#xff0c;我们擅长解决…

hystrix熔断 简介_Hystrix简介

hystrix熔断 简介在过去的几天里&#xff0c;我一直在探索Netflix Hystrix库&#xff0c;并欣赏了这个出色的库所提供的功能。 引用Hystrix网站上的内容&#xff1a; Hystrix是一个延迟和容错库&#xff0c;旨在隔离对远程系统&#xff0c;服务和第三方库的访问点&#xff0c…

89 个嵌入式相关概念,你懂几个?

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删01操作系统&#xff08;Operating System&#xff0c;OS&#xff09;是管理计算机硬件与软件资源的系统软件&#xff0c;同时也是计算机系统的内…

python源码笔记_python源码学习笔记(二)

(二) python 继承和多态这非常类似C的功能&#xff0c;只不过是是在C基础上开发的。由上一节知&#xff0c;python的所有对象的基础都是PyObject&#xff0c;所以例如创建一个PyIntObject对象&#xff0c;是通过PyObejct*变量来维护&#xff0c;所以在python内部各个函数之间传…

linux 延时一微秒_让我们暂停一微秒

linux 延时一微秒低延迟Java应用程序中的许多基准测试涉及必须在一定负载下测量系统。 这就要求保持事件进入系统的稳定吞吐量&#xff0c;而不是在没有任何控制的情况下以全油门将事件泵入系统。 我经常要做的任务之一是在事件之间将生产者线程暂停一小段时间。 通常&#xf…

C语言不是最好的,却是我最爱的~

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删以下为译文&#xff1a;虽然 C 语言并不是我所学的第一门语言&#xff0c;也不是我的最后一门语言&#xff0c;但是我仍然非常喜欢 C&#xff0c…

vue 传递多行数据_vue父组件向子组件传递多个数据的实例

在平时我们使用VUE组件的时候&#xff0c;经常需要将父组件的某些数据传递给子组件&#xff0c;这个时候&#xff0c;我们通常会有很多的办法&#xff0c;这里主要分为两种情况&#xff1a;第一种&#xff1a;静态数据传递&#xff1a;传递一个 字符串第二种&#xff1a;动态数…

lucene 源码分析_Lucene分析过程指南

lucene 源码分析本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中&#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要&#xff0c;然后了解Lucene中搜索的工作方式。 此外&#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中…