作者 | 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/
数据集略有变化
代码语言:javascript复制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个图像像素,从而生成单个像素而不会影响特征。
代码语言:javascript复制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)
深度增加(像素减少)
代码语言:javascript复制# 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。