使用深度学习的方法进行人脸解锁(下)

简介: 使用深度学习的方法进行人脸解锁

640.png


显然,我与Matt或Leo不太相似,但是它们有一些共同点!

我们可以更加深入,在嵌入向量中运行PCA并将图像投影到二维平面中

frommatplotlib.offsetboximportOffsetImage, AnnotationBboxdefpca(x: torch.Tensor, k: int=2) ->torch.Tensor:
"""From http://agnesmustar.com/2017/11/01/principal-component-analysis-pca-implemented-pytorch/"""#preprocessthedataX_mean=torch.mean(x, 0)
x=x-X_mean.expand_as(x)
#svdU, S, V=torch.svd(torch.t(x))
returntorch.mm(x, U[:, :k])
points=pca(embs, k=2)
plt.rcParams["figure.figsize"] = (12,12)
fig, ax=plt.figure(), plt.subplot(111)
plt.scatter(points[:,0], points[:,1])
fori, pinenumerate(points):
x, y=p[0], p[1]
img=un_normalize(ds[i][0])
img_np=img.permute(1, 2, 0).numpy().squeeze()
ab=AnnotationBbox(OffsetImage(img_np, zoom=0.6), (x, y), frameon=False)
ax.add_artist(ab)
plt.plot()

640.png

我们将512维压缩为2,所以我们丢失了很多数据。

好的,我们有一种方法来找到脸,看看它们是否彼此相似,现在我们可以创建我们的脸解锁算法。

我的想法是取n张允许的人的图像,在嵌入空间中找到中心,选择一个阈值,看d看中心和新图像之间的余弦相似度是小于还是大于它。

fromdataclassesimportdataclass, fieldfromtypingimportList, CallablefromPILimportImage@dataclassclassFaceUnlock:
images: List[Image.Image] =field(default_factory=list)
th: float=0.8transform: Callable=MTCNN(image_size=160, margin=18)
embedder: torch.nn.Module=InceptionResnetV1(pretrained='vggface2').eval()
center: torch.Tensor=Nonedef__post_init__(self):
faces=torch.stack(list(map(self.transform, self.images)))
embds=self.embedder(faces)
self.center=embds.sum(0) /embds.shape[0]
def__call__(self, x: Image.Image) ->bool:
face=self.transform(x)
emb=self.embedder(face.unsqueeze(0))
similarity=torch.cosine_similarity(emb.view(1, -1), self.center.view(1, -1))
is_me=similarity>self.threturnis_me, similarity#loadpicturesofmyselfme=data_root/'faces'/'me'images=list(map(Image.open, me.glob('*')))
#initializefaceunlockwithmyimagesface_unlock=FaceUnlock(images)
fromipywidgetsimportinteract, interactive, fixed, interact_manualdefunlock_with_filepath(path):
img=Image.open(path)
is_me, similarity=face_unlock(img)
print(f"{'🔓' if is_me else '🔒'} similarity={similarity.item():.3f}")
fig=plt.figure()
plt.imshow(img)
plt.plot()
test_root=data_root/'faces_test'interact(unlock_with_filepath, path=list(test_root.glob('*')))

640.png

640.png

相似度得分比以前的图像高,所以我猜是真的!

让我们尝试自己的新自拍

640.png

总结

我们已经看到了一种仅使用2D数据(图像)创建人脸解锁算法的有吸引力的方法。它依靠神经网络对相似面孔彼此靠近的高维向量空间中的裁剪面孔进行编码。但是,我不知道该模型是如何训练的,并且可能很容易弄糊涂(即使在我的实验中该算法效果很好)。

如果在没有数据扩充的情况下训练模型怎么办?然后,可能只是翻转同一个人可能会破坏潜在的表示。

更加健壮的训练例程将是无监督的(类似于BYOL),它严重依赖于数据增强。

最后,你可以在这里找到所有的代码

https://github.com/FrancescoSaverioZuppichini/Face-Unlock

感谢您的阅读。

目录
相关文章
|
机器学习/深度学习 并行计算 算法
深度学习中的自动化超参数优化方法探究
传统的深度学习模型优化通常依赖于人工调整超参数,这一过程繁琐且耗时。本文探讨了当前流行的自动化超参数优化方法,包括贝叶斯优化、遗传算法和进化策略等,分析它们在提高模型效率和性能方面的应用与挑战。
|
机器学习/深度学习 数据可视化 网络架构
增强深度学习模型的可解释性和泛化能力的方法研究
【8月更文第15天】在深度学习领域,模型的准确率和预测能力是衡量模型好坏的重要指标。然而,随着模型复杂度的增加,它们往往变得越来越难以理解,这限制了模型在某些关键领域的应用,例如医疗诊断、金融风险评估等。本文将探讨如何通过几种方法来增强深度学习模型的可解释性,同时保持或提高模型的泛化能力。
1643 2
|
机器学习/深度学习 调度 计算机视觉
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
本文探讨了多种学习率调度策略在神经网络训练中的应用,强调了选择合适学习率的重要性。文章介绍了阶梯式衰减、余弦退火、循环学习率等策略,并分析了它们在不同实验设置下的表现。研究表明,循环学习率和SGDR等策略在提高模型性能和加快训练速度方面表现出色,而REX调度则在不同预算条件下表现稳定。这些策略为深度学习实践者提供了实用的指导。
887 2
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
|
机器学习/深度学习 编解码 监控
算法金 | 深度学习图像增强方法总结
**图像增强技术概括** 图像增强聚焦于提升视觉效果和细节,广泛应用于医学、遥感等领域。空间域增强包括直方图均衡化(增强对比度)、对比度拉伸、灰度变换、平滑滤波(均值、中值)和锐化滤波(拉普拉斯、高通)。频率域增强利用傅里叶变换、小波变换,通过高频和低频滤波增强图像特征。现代方法涉及超分辨率重建、深度学习去噪(如CNN、Autoencoder)、图像修复(如GAN)和GANs驱动的多种图像处理任务。
1136 14
算法金 | 深度学习图像增强方法总结
|
机器学习/深度学习 监控 数据可视化
深度学习中实验、观察与思考的方法与技巧
在深度学习中,实验、观察与思考是理解和改进模型性能的关键环节。
462 5
|
机器学习/深度学习 存储 人工智能
深度学习中的模型压缩技术在人工智能领域,深度学习技术的迅猛发展带来了巨大的计算资源需求。为了解决这一问题,模型压缩技术应运而生。本文将介绍什么是模型压缩、常见的模型压缩方法以及其在实际应用中的意义。
随着深度学习技术的广泛应用,计算资源的需求也大幅增加。为减少资源消耗,提升模型效率,模型压缩技术成为研究热点。本文探讨了模型压缩的定义、主流方法和其重要性。通过量化、剪枝、知识蒸馏和轻量级架构等策略,模型得以在保持性能的同时减小体积,从而适用于资源受限的环境。这些技术不仅降低了计算成本,还推动了深度学习在移动设备和边缘计算等领域的应用,使AI技术更加普及和实用。总之,模型压缩在平衡模型性能与资源消耗之间发挥着关键作用,是未来AI发展的重要方向。
|
机器学习/深度学习
数百万晶体数据训练、解决晶体学相位问题,深度学习方法PhAI登Science
【9月更文挑战第5天】近期,《科学》杂志报道了一项名为PhAI的深度学习技术,在晶体学相位问题上取得重要突破。相位问题旨在确定晶体中分子或原子的位置与方向,对理解其物理化学特性至关重要。PhAI通过数百万晶体数据训练,能高效准确地解决这一难题,有望大幅提升研究效率,加速新材料和药物的设计。但其准确性及对未知结构处理能力仍面临挑战。论文详情参见:https://www.science.org/doi/10.1126/science.adn2777。
355 1
|
机器学习/深度学习 人机交互 计算机视觉
基于YOLOv8深度学习的人脸面部表情识别系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
基于YOLOv8深度学习的人脸面部表情识别系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
基于YOLOv8深度学习的人脸面部表情识别系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
|
机器学习/深度学习 算法 计算机视觉
基于深度学习网络的USB摄像头实时视频采集与人脸检测matlab仿真
**摘要 (Markdown格式):** ```markdown - 📹 使用USB摄像头(Tttttttttttttt666)实时视频检测,展示基于YOLOv2在MATLAB2022a的实施效果: ``` Tttttttttttttt1111111111------------5555555555 ``` - 📺 程序核心利用MATLAB视频采集配置及工具箱(Dddddddddddddd),实现图像采集与人脸定位。 - 🧠 YOLOv2算法概览:通过S×S网格预测边界框(B个/网格),含坐标、类别概率和置信度,高效检测人脸。
|
机器学习/深度学习 算法 vr&ar
深度学习之人脸关键点检测
人脸关键点检测的主要任务是识别并定位人脸图像中的特定关键点,例如眼睛的角点、眉毛的顶点、鼻子的底端、嘴角等。这些关键点不仅能提供面部结构的几何信息,还可以用于分析表情、识别个体,甚至检测面部姿势。
553 2

热门文章

最新文章