【虹膜识别】论文阅读:Fast Iris Segmentation under Partly Occlusion Based on MTCNN and Weighted FCN】_眼睛遮蔽权重-程序员宅基地

技术标签: 论文阅读  计算机视觉  深度学习  

Fast Iris Segmentation under Partly Occlusion Based on MTCNN and Weighted FCN

摘要

很多时候,眼科医生会通过观察虹膜组织的形态变化来推断眼睛的健康状况、眼病的发生和恢复情况。因此,对虹膜进行准确、自动的分割是一项非常重要的任务。本文针对部分遮挡情况,提出了一种虹膜分割方法,包括基于MTCNN的快速眼部检测、基于加权FCNHough变换的虹膜分割以及虹膜半径坐标校正。首先,我们将多任务级联卷积网络应用于眼睛检测,该网络具有轻巧、快速的特点。然后,我们提出加权FCN和Hough变换来分割虹膜,即使虹膜部分遮挡。最后,我们设计了一种校正方案来校正真实世界中的虹膜半径。实验结果表明,该方法的正确率达到97.6%,正确率达到98.5%,优于现有方法。

关键词

深度学习,虹膜检测,多任务级联卷积网络,全卷积网络,霍夫变换

1 引言


综上所示,我们提出了一种针对部分遮挡情况的虹膜分割方法,包括基于MTCNN的快速眼部检测,基于加权FCN和Hough变换的虹膜分割,以及在现实世界中对虹膜半径的坐标校正。我们的主要贡献如下:
1)为了快速检测眼部部位,我们应用MTCNN返回眼部坐标。MTCNN使用三个级联网络,这些网络估计包含面部框架的位置,并标记面部的左右眼睛。
2)对于部分遮挡下虹膜的检测,我们提出加权FCN来预测带有虹膜位置信息的掩膜图。然后通过霍夫变换准确提取虹膜的轮廓。
3)我们用缩放辅助收集了一个新的数据集。在此基础上,我们设计了一种校正方案,可以在现实世界中对虹膜坐标进行校正。实验结果表明,该方法的正确率达到97.6%,正确率达到98.5%

2 方法

本文针对部分遮挡情况,提出了一种虹膜分割方法,包括基于MTCNN的快速眼部检测、基于加权FCN和Hough变换的虹膜分割以及虹膜半径坐标校正。首先,我们将多任务级联卷积网络应用于眼睛检测,该网络具有轻巧、快速的特点。然后,我们提出加权FCN和Hough变换来分割虹膜,即使虹膜部分闭塞。最后,我们校正了真实世界的虹膜坐标。图1是我们网络的流程图。我们现在描述我们的网络结构,并详细解释我们方法的各个方面。
整个网络流程图

2.1 基于MTCNN的快速人眼检测

在这一部分中,我们应用多任务级联卷积网络(MTCNN)进行人脸检测和眼睛检测。MTCNN由三个阶段组成。首先利用提议网络(P-Net) 获取候选人脸窗口及其边界框回归向量,然后将结果输入到 Refine网络(R-Net) 来剔除一些非人脸窗口,最后利用O-Net输出眼睛部分。图2显示了不同阶段的网络结构。
快速检测网络架构
在P-Net、R-Net和O-Net中,我们都使用3 × 3滤波器进行特征提取。这是因为人脸检测是一项具有挑战性的二元分类任务,因此我们需要的过滤器数量可以减少。采用3 × 3滤波器既能减少计算量,实现快速计算,又能增加网络深度,实现更好的检测性能。
每个检测器输出人脸分类、边界盒回归和人脸标志定位。我们将使用这三个任务来训练我们的网络。
人脸分类是一个二元训练过程。这部分我们使用的损失函数是交叉熵损失函数:
人脸交叉熵损失函数
其中i表示第i个样本,Pi表示网络判断人脸的概率,yi表示真实标签。
边界框回归是一个四维向量,分别表示左、上、高和宽的偏移量。这部分我们使用的损失函数是欧几里得损失:
在这里插入图片描述
其中⌢yi框表示预测的边界框,yi框表示目标的边界框坐标。
面部标志定位类似于边界盒回归的任务,因此我们也应用了欧几里得损失:
在这里插入图片描述
其中⌢yi landmark表示预测的面部标志坐标,yi landmark 表示地面真实坐标。yi landmark, ⌢yilandmark是一个十维向量。我们通过提取左眼和右眼的坐标来得到输出。

2.2 基于加权FCN和Hough变换的虹膜分割

在本节中,我们首先使用加权FCN对虹膜进行分割,然后通过Hough变换得到虹膜边界。加权FCN对MTCNN输出的眼睛图像进行卷积提取,然后使用反卷积恢复图像大小。最后,我们使用一个损失函数来为训练分配权重。加权FCN的网络结构如图3所示
FCN结构
我们输入调整为224 × 224的眼睛图像,并使用下采样方法计算多个比例尺的特征图。为了得到第一个大小为112 × 112 × 64的特征图,我们使用多个3 × 3 × 3和3 × 3 × 64的卷积核对输入图像进行卷积,同时使用2步对整个图像进行配对。每个2 × 2小面积的图片最大池,我们使用Tanh作为每个卷积层后面的激活函数,使整个网络更加非线性。Tanh的计算公式如下:
在这里插入图片描述
之后,我们调整卷积核的通道数,用同样的方法对上述特征图进行处理,依次计算出56 × 56 × 256的特征图,28 × 28 × 512的特征图,7 × 7 × 512的特征图。与卷积神经网络不同的是,我们丢弃了后面的分类部分,将全连接层改为卷积层,并以7 × 7 × 512的卷积核处理最终的特征图。这样可以灵活地改变输出图片的大小,有利于后续的网络处理。
在得到7 × 7 × 2特征图后,我们使用双线性插值方法在特征图像素的基础上,相邻像素之间插入新的元素。双线性插值方法的计算公式如下:
公式
其中f(x,y)是想要的插值值,Qij是(xi,yi)出的已知值。是上抽样的一种形式,通过上抽样,我们可以得到14 × 14 × 512的特征图。值得注意的是,我们还使用跳跃连接来融合下层和上层的特征。特征图逐像素地添加到现有的特征图中。同样的处理方法出现在下一层特征图中,即反卷积得到的28 × 28 × 256特征图。最后,网络输出一个带有两个通道的掩码图。掩模图与输入图片大小相同,每个像素将被分类为虹膜或背景。
对于网络的分割部分,我们提出了一个可以为每个点分配不同的权重并计算加权损失的权重掩码。我们认为虹膜暴露的部分更重要,越靠近中心越重要。网络依靠中心部分返回正确的圆心,目标的精度会更高。所以我们给虹膜的不同部分赋予不同的权重。如图4所示,
在这里插入图片描述
虹膜边缘靠近中心的水平距离d1大于虹膜边缘靠近底部的水平距离d2,因此d1所在的虹膜像素应该被赋予更高的权重。具体权重分配如下:
权重分配
其中d是到虹膜边缘的水平距离,d-是最大水平距离。那么我们的分类部分的损失函数定义为:
在这里插入图片描述
其中u表示正确的分类目标。
在获得虹膜的分割图像后,我们通过Hough变换进行圆检测。根据点与线的对偶性,将直角坐标空间的表达式转化为参数空间的汇聚点。这样,直角空间搜索曲线就转化为在参数空间中检测到的峰值。圆的方程为:
在这里插入图片描述
参数空间曲线方程为:
在这里插入图片描述
参数空间(a,b, r)定义如下:
在这里插入图片描述
其中在这里插入图片描述
当p(xi,yi, a,b, r) = 0时,表示圆经过以(a,b)为圆心、半径为r的点(xi,yi)。当计算完所有点后,J的值最大时,这个圆就是Hough变换找到的圆。

2.3现实世界中虹膜半径的坐标校正

输入一张RGB图片后,我们可以通过正向通道得到虹膜中心坐标和半径,也就是像素的半径。由于我们的数据集有校准工具,我们可以计算出真实的虹膜半径,以满足更多的医疗需求。数据集中的眼镜尺寸是固定的。眼镜两侧的白色圆圈为标定点,中心距离为128.5mm,如下图5所示:
在这里插入图片描述
假设检测到的中心坐标为(x1,y1), (x2,y2),则两个中心之间的像素距离为rl= [(x1−x2)2 + (y1−y2)2]1/2。假设rh为像素半径,真实半径rr的换算公式如下:
在这里插入图片描述

3 实验

4 结论

本文针对部分遮挡情况,提出了一种虹膜分割方法,包括基于MTCNN的快速眼部检测、基于加权FCN和Hough变换的虹膜分割以及虹膜半径坐标校正。首先,我们将多任务级联卷积网络应用于眼睛检测,该网络具有轻巧、快速的特点。然后,我们提出加权FCN和Hough变换来分割虹膜,即使虹膜部分闭塞。最后,我们设计了一种校正方案来校正真实世界中的虹膜半径。实验表明,我们已经达到了最先进的检测精度。我们的实验结果表明,我们的准确率为97.6%,精密度为98.5%,优于最先进的方法。此外,与其他方法相比,通过Hough变换得到的虹膜边界对遮挡具有更强的鲁棒性。然而,由于我们在网络中使用了许多池化层,一些细节会在降采样过程中丢失。因此,分割得到的最佳虹膜边界的误差会增大。在未来,我们将改进网络结构,将多尺度图像融合成不同的特征图,以减少特征损失。

总结反思

1.数据集为面部图像,图片质量要高
2.固定眼睛有利于眼球定位
3.Hough拟合圆不够精确
4.校正有利于真实虹膜半径-医疗意义?
5.本文只对虹膜边界分割,缺失瞳孔分割,设计的权重策略以距离为主

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44230176/article/details/129845540

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签