专栏首页相约机器人耳朵生物识别技术 - 机器学习更进一步

耳朵生物识别技术 - 机器学习更进一步

作者 | Hitesh Valecha

来源 | Medium

编辑 | 代码医生团队

耳朵生物识别认证

像使用面部,虹膜和手指的其他生物识别一样,耳朵作为生物识别包含大量特定且独特的特征,允许人类识别。耳朵形态在10岁后略有变化,并且医学研究表明,耳朵形状的显着变化仅在8岁之前和70岁之后发生。它确实在大小上对称地生长,随着人的年龄逐渐向下膨胀,但这是一种可测量的效果。研究表明,耳朵只变化1.22毫米每年。而且与面部不同,耳朵的颜色分布几乎是均匀的。耳朵的位置几乎位于轮廓面的中间。即使没有远距离感知主体,也可以捕获耳朵数据。耳朵生物识别技术可以作为被动生物识别技术的一个很好的例子,并且不需要来自该主题的太多合作,这满足了环境中存在的认证系统的保密性的要求。

数码相机从不同角度拍摄环境中的对象的轮廓面部图像,从中对耳朵的截面进行分割,预处理。然后在不同的测试案例中分析特征向量,其包括在同一平面中旋转的面,不同的平面,不同的光条件等,将机器学习模型作为输入,其将被训练以识别人,环境。该过程虽然复杂,但将开发出一种系统,该系统将提供经认证的基于耳朵的生物识别系统。

受控环境

CAMERA A的目的是在不预期耳朵倾斜或旋转的情况下清晰地拍摄轮廓面。同时CAMERA B和CAMERA C用于捕获同一人的多个图像的更多轮廓照片以形成特征矩阵。

环境

从轮廓面分割耳朵

相机 - A.

图像(a)是从相机捕获的轮廓面。在图像(b)中,完成了地形标记。地形标记用于查找曲面和边缘。图像(c)是侵蚀和膨胀的差异,即在轮廓面上应用形态学操作以锐化特征。图(d)是(b)和(c)的简单点积。通过模糊(d)10次获得图像(e),以便可以应用连通分量分析。

在图像(f)中找到每个连通分量的复杂度并用不同颜色着色。由于发现最高复杂度区域是耳朵,因此将其分割并在图像(g)中转换成灰度级以便更快地计算。

相机 - B&C

数据集和预处理

数据集准备是迈向任何机器学习模型的第一步。在该系统中,使用深度神经网络来获得环境中主体的特征和特征。需要大型数据集作为神经网络的输入。每个受试者至少有500张图像可以正常训练网络,因为所有类都是耳机的图像,很容易与特征和特征混淆,每个主体的样本越多,就越容易找到不同的特征。数据集应涵盖各种各样的图像,例如具有不同光照条件,不同角度,高斯滤波器,模糊等的图像。

DNN架构

在训练CNN网络时也会覆盖小的遮挡物,如覆盖着头发或耳机或珠宝的耳朵。图像增强对于生成具有轻微变化的多个图像副本以增加数据集非常有用。例如可以使用keras的数据生成器。

https://keras.io/preprocessing/image/

数据集略有变化

DATADIR = "./dataset"
CATEGORIES = ["Subject1", "Subject2", "Subject3", "Subject4"]
 
for category in CATEGORIES:
    path = os.path.join(DATADIR, category)
    
    for img in os.listdir(path):
        img_array = cv2.imread(os.path.join(path, img), cv2.IMREAD_GRAYSCALE)
        break
    break
 
IMG_WIDTH = 60
IMG_HEIGHT = 100
new_array = cv2.resize(img_array, (IMG_WIDTH, IMG_HEIGHT))
 
training_data = []
 
def create_training_data():
    for category in CATEGORIES:
        path = os.path.join(DATADIR, category)
        class_num = CATEGORIES.index(category)
 
        for img in os.listdir(path):
            try:
                img_array = cv2.imread(os.path.join(path, img), cv2.IMREAD_GRAYSCALE)
                new_array = cv2.resize(img_array, (IMG_WIDTH, IMG_HEIGHT))
                training_data.append([new_array, class_num])
            except Exception as e:
                pass
 
create_training_data()
print(len(training_data))
 
random.shuffle(training_data)

卷积神经网络

当使用图像数据集(而不是.csv文件或数字数据)时,在数据预处理完成后使用CNN。预处理的数据被传递到神经网络的架构。由于耳朵的表面积小于面部,因此耳朵所需的计算时间较短。灰度图像由网络的输入层拍摄。

CNN架构

卷积

步幅卷积和最大池用于增加每个隐藏层的深度(特征)。

卷积滤镜可减少9个图像像素,从而生成单个像素而不会影响特征。

a = []      #feature set
b = []      #labels
 
for features, labels in training_data:
    a.append(features)
    b.append(labels)
 
a = np.array(a).reshape(-1, IMG_WIDTH, IMG_HEIGHT, 1)

深度增加(像素减少)

# Create the model
model = Sequential()
 
model.add(Conv2D(32, kernel_size=4, strides=1,activation='relu', input_shape=(IMG_WIDTH, IMG_HEIGHT, 1)))
model.add(Conv2D(32, kernel_size=4, strides=2,activation='relu'))
model.add(MaxPooling2D(pool_size=2))
model.add(Conv2D(64, kernel_size=4, strides=1,activation='relu'))
model.add(MaxPooling2D(pool_size=2))
# model.add(Conv2D(64, kernel_size=4, strides=2,activation='relu'))
# model.add(Dropout(0.5))
# model.add(Conv2D(64, kernel_size=4, strides=1,activation='relu'))
# model.add(Conv2D(64, kernel_size=4, strides=2,activation='relu'))
model.summary()
 
model.add(Flatten())
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(4, activation='softmax'))
model.summary()
 
# Compile the model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
 
# Train the model
model.fit(X_train, to_categorical(Y_train), batch_size=32, epochs=5)
# Evaluate the model
scores = model.evaluate(X_test, to_categorical(Y_test))
 
print('Loss: %.3f' % scores[0])
print('Accuracy: %.3f' % scores[1])
 
model.save('model_opt.h5')

在最终密集层中,基于主题被分类到网络的对应类别来进行特征分类(FC)。

训练和测试

图表显示了相同类别的重叠曲线和深度神经网络的不同类别的不同曲线的准确性。

图形

授权用户

未经授权的用户

限制

可能会出现不同类型的闭塞情况,如头发,耳机或耳朵受伤或被布覆盖。个人获得认证的机会会减少。由于用于特征提取的纯耳百分比较低,因此精度会受到影响。该系统旨在关注安全室,董事会会议,医学实验室等小型环境室。

未来范围

耳朵容纳人体最小的骨头。对于网络犯罪分子而言,复制将是非常困难的。此外它还可用于测量温度,血流量,心率和血糖水平。耳朵生物识别系统将在各个领域具有多种用途 - 认证,访问和出勤控制,旅行控制,金融和其他需要授权的交易,远程投票,自动化工作设备的使用,动作控制。例如,现在机场使用面部和虹膜生物测定学的组合来认证人,而单耳生物测定系统可用于以相同的准确度实现人的真实性。身体的每一个特征都会影响一个人的一般性格 - 面部,眼睛,手掌甚至手写。通过手写的人格分析用于检测人是否在撒谎等。同样,耳朵可用于人的人格分析。耳垂有许多可用于个性分析的功能 - 附耳垂,宽叶,窄耳,尖耳,圆叶,方耳,耳朵伸出等。

结论

耳朵生物识别系统最重要的优势是识别没有他们知识/意识的人。此功能将改变被动生物识别技术的动态,并可在生物识别领域带来完全的自动化。要点如下:

  • 大型数据集(每个主题500个样本),具有各种图像,可以正确地训练学习模型。
  • 预处理图像以减少计算时间。
  • 良好的网络架构(没有太多损失或辍学)。
  • 运行足够的纪元以有效地训练网络(建议使用GPU)。
  • 使用训练有素的模型精确预测人物。

Github源代码:

https://github.com/Hitesh-Valecha/Ear_Biometric_System

参考

  • Ping Yan和Kevin W. Bowyer,IEEE研究员,“使用3D耳形的生物识别”,IEEE模式分析和机器智能交易,VOL。29,不。2007年8月8日
  • IEEE学生会员John D. Bustard和IEEE副学会成员Mark S. Nixon,“从二维图像中获取无约束的耳朵识别”,IEEE系统,人与控制论交流 - A部分:系统与人类, VOL。40,不。2010年5月3日
  • Bir Bhanu和Hui Chen,智能系统研究中心。计算机人耳识别。加州:加州大学河滨分校[在线]。doi:10.1007 / 978-1-84800-129-9。
  • Eyad Haj Said,北卡罗来纳州农业技术州立大学,北卡罗来纳州Greensboro,Ayman Abaza和Hany Ammar,西弗吉尼亚大学计算机科学与电子工程系,西弗吉尼亚州摩根敦,“使用数学形态学的彩色面部图像中的耳朵分割”, IEEE 2008。

本文分享自微信公众号 - 相约机器人(xiangyuejiqiren),作者:代码医生

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在Keras和Tensorflow中使用深度卷积网络生成Meme(表情包)文本

    本文介绍如何构建深度转换网络实现端到端的文本生成。在这一过程中,包括有关数据清理,训练,模型设计和预测算法相关的内容。

    代码医生工作室
  • 数据争用教程:大学城数据集

    数据争用是将数据从原始形式转换为整洁形式以供分析的过程。数据争用是数据预处理中的一个重要步骤,包括数据导入,数据清理,数据结构化,字符串处理,HTML解析,处理...

    代码医生工作室
  • TensorFlow 2.0入门

    谷歌于2019年3月6日和7日在其年度TensorFlow开发者峰会上发布了最新版本的TensorFlow机器学习框架。这一新版本使用TensorFlow的方式...

    代码医生工作室
  • 【图文】腾讯云服务器搭建网站教程(宝塔面板+wordpress)

    建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:

    云上云
  • 小白建站教程-腾讯云建站

    一直想着有一天能够拥有自己的网站,以前只是知道网站需要服务器和域名,不知道怎么建站,自己瞎折腾这么久,多少也了解一下,现在把这个流程整理如下:

    云上云
  • 大数据和物联网的连接方式

    How-big-data-and-the-internet-of-things-are-connected-1068x656-1.jpg

    用户4122690
  • CKafka系列学习文章 - 创建一个CKafka实例(三)

    导语:前面我们介绍了消息队列也比较了各种消息队列,接下来创建一个CKafka来测试一下。

    发哥说消息队列
  • MapReduce的编程思想(1)

    MapReduce的编程思想(1) MapReduce的过程(2) 1. MapReduce采用分而治之的思想,将数据处理拆分为主要的Map(映射)与Reduc...

    王小雷
  • Docker系列教程28-实战:使用Docker Compose运行ELK

    https://docs.docker.com/compose/samples-for-compose/#samples-tailored-to-demo-co...

    用户1516716
  • 神经网络在算法交易上的应用系列——多元时间序列

    之前的文章已经介绍了几种预测时间序列的方法:如何规范化数据,以实值或二进制变量的形式进行预测,以及如何处理高噪声中的过拟合。在上一篇文章中,我们只用了经过一些转...

    量化投资与机器学习微信公众号

扫码关注云+社区

领取腾讯云代金券