使用pyTorch搭建自己的facenet

article/2025/8/27 21:47:13

很长时间没有发自己学习过程的博客了,这次发的是初次使用pyTorch搭建自己的facenet。

参考博主博客:https://blog.csdn.net/weixin_44791964/article/details/108220265
源代码地址:https://github.com/bubbliiiing/facenet-pytorch

本次使用的是Anaconda搭建的虚拟网络

一、项目运行环境:

pycharm
python:3.6.13
torch:1.2.0
torchvision:0.4.0
h5py:2.10.0
importlib-metadata:4.8.3
markdown:3.3.7
matplotlib:3.1.2
numpy:1.17.0
opencv-python:4.1.2.30
pillow:8.2.0
scipy:1.2.1

二、运行代码

因为Anaconda是之前下载好的,所以就跳过这个步骤
环境最主要的是torch的安装
在Anaconda Prompt(Anaconda1)界面输入:

conda create -n pytorch python=3.9.13

之后输入下面的指令查看自己安装的新环境

conda info --envs

之后切换环境,输入指令:

activate base
activate pytorch

输入pip list查看当前版本环境
之后输入pip install torch==1.2.0安装torch
输入pip install torchvision==0.4.0安装torchvision

进行facenet搭建代码的下载

在这里插入图片描述
下载对应所需要进行训练的数据
在这里插入图片描述

代码和相关数据按照如下数据进行解压
在这里插入图片描述

1、安装其他运行多需要的环境

当我们用pycharm打开下载的项目的时候,配置好Anaconda的解释器,之后按照pycharm提示的那样,在Anaconda Prompt(Anaconda1)界面进行相关环境的安装。

2、需要训练的数据

在这里插入图片描述

在这里插入图片描述

3、用代码自带的训练好的facenet_mobilenet.pth进行不同图片的预测

在这里插入图片描述

首先调两个人脸相同的图片,结果如下:

在这里插入图片描述

之后调用两个不同人脸的图片
在这里插入图片描述

在这里插入图片描述

可以看出相同人脸的欧氏距离比不同人脸的欧氏距离小得多

4、使用数据进行模型的训练

进行训练前的参数修改
首先是backbone的选择,要选择要采用什么主干提取网络(本次运行代码统一采用mobilenet提取网络)
需要注意的是修改了backbone之后还有修改model_path为对应的预训练权重
在这里插入图片描述

在确定参数后运行train.py文件,这是出现报错

RuntimeError: CUDA out of memory

这是因为显存不够,需要调整batch_size参数dataloader
刚开始修改参数的时候提醒我要修改成3的倍数,我看到之后相关教学猜测原因是:utils/dataloader.py文件,输入信息是3个一组提交(还没有深入了解,仅仅是猜测)
在这里插入图片描述

之后一直把batch_size修改为21,把一些还在运行的程序关闭以后,train.py文件才能成功的运行

在这里插入图片描述
等训练结束之后,训练好的facenet模型保存到了logs文件夹
在这里插入图片描述

5、开始使用我们的模型进行预测

首先修改facenet.py文件中的model_path参数和backbone
model_path填写我们训练好的模型路径(选择一个值较小的)
backbone还是保持mobilenet的提取神经网络

在这里插入图片描述

之后可以运行predict.py进行预测
首先输入两个相同人脸的图片进行预测
在这里插入图片描述

再输入两个不同人脸的图片进行预测
在这里插入图片描述
可以发现欧氏距离大得多

6、对我们训练出来的模型进行评估

依旧是先修改eval_LFW.py的model_path参数和backbone参数(方法同上)

在这里插入图片描述

运行eval_LFW.py文件
在这里插入图片描述
可以看出我们通过数据集训练出来的模型的精确值为98.117%左右

三、总结

因为之前只是单纯的下载了Anaconda,没有具体的使用过,所以本次通过pyTorch搭建facenet让自己熟悉了一些Anaconda构造环境的操作。
刚开始pytorch安装失败了一次,也知道了错安cpu版本的和gpu版本的怎么分别。
也了解到了facenet中的一些预测和进行欧式距离判断的流程。
但具体的神经网络的知识还不怎么了解,还需要慢慢学习。


http://chatgpt.dhexx.cn/article/sPpky5be.shtml

相关文章

人脸识别系列(十八):MobileFaceNets

原文链接:MobileFaceNets: Efficient CNNs for Accurate Real-time Face Verification on Mobile Devices MobileNet 可分离卷积(Depthwise separable conv): 可分离卷积可以减少参数量与计算量: 例如输入是100*100…

聪明的人脸识别2——Keras 利用Retinaface+Facenet搭建人脸识别平台

聪明的人脸识别2——Keras 利用RetinafaceFacenet搭建人脸识别平台 学习前言什么是Retinface和Facenet1、Retinface2、Facenet 整体实现代码实现流程一、数据库的初始化二、检测图片的处理1、人脸的截取与对齐2、利用Facenet对矫正后的人脸进行编码3、将实时图片中的人脸特征与…

人脸识别之facenet代码实现

上一篇博文介绍了facenet的原理,这篇讲解一下代码的实现,对于facenet的代码目前也有写好的部分。具体见链接facenet代码实现 。大家可以通过git直接下载代码,然后运行里面的validata_on_lfw.py。输入对应的lfw数据的路径就可以检测模型对lfw数…

聪明的人脸识别1——Keras 搭建自己的Facenet人脸识别平台

聪明的人脸识别1——Keras 搭建自己的Facenet人脸识别平台 学习前言什么是Facenet源码下载Facenet的实现思路一、预测部分1、主干网络介绍2、根据初步特征获得长度为128的特征向量3、l2标准化4、构建分类器(用于辅助Triplet Loss的收敛) 二、训练部分1、…

人脸识别系列(六):FaceNet

原文链接:FaceNet:A Unified Embedding for Face Recognition and Clustering 首先可以看一下最终的效果,数字表示两张图片经过Facenet提取的特征之间的欧式距离,可以直接表示两张图片的差异: 从图中可以看出,若取阈值…

人脸识别(Facenet)

人脸识别是目前应用非常广泛的一种生物识别技术,与其他生物识别技术(指纹识别,掌形识别,眼虹膜识别和声音识别)相比,人脸识别具有以下优势: 其他每种生物识别方法都需要一些人的配合动作&#x…

全网首发,Swin Transformer+FaceNet实现人脸识别

目录 一、 简介 二、Swin Transformer作为Backbone 1.Swin Transformer整体结构 2.PatchEmbed Patch Partition Linear Embedding 3.Swin Transformer Block (1)Window Partition (2)Shifted Window based Self-Attenti…

深度学习之facenet人脸识别网络介绍

1.前言 照例先来一段废话,不要跟我说什么物质决定意识,也不要告诉我意识超越物质。在我眼中,这个世界本就是一个战场。软弱的意志自然无法战胜物质,但是足够强大的意识也是能够做到的。在战争没有进行完之前,谁也不知道…

聪明的人脸识别4——Pytorch 利用Retinaface+Facenet搭建人脸识别平台

睿智的目标检测51——Pytorch 利用RetinafaceFacenet搭建人脸识别平台 学习前言什么是Retinface和Facenet1、Retinface2、Facenet 整体实现代码实现流程一、数据库的初始化二、检测图片的处理1、人脸的截取与对齐2、利用Facenet对矫正后的人脸进行编码3、将实时图片中的人脸特征…

Facenet 原理介绍

引子[编辑 | 编辑源代码] 这篇wiki主要介绍facenet人脸相似比较的基本原理,另外两篇wiki主要介绍基于tensorflow实现facenet的准确率测试及源码解读。经过在网上的一番搜索,找到了facenet实现人脸聚类的论文和论文解读,以及github上根据facen…

【 facenet-retinaface】快速复现 实现 facenet-retinaface-pytorch 人脸识别 windows上 使用cpu实现

目录 0 前言1 搭建环境与项目2 人脸预测与结果展示 0 前言 这一次要复现的是人脸识别中的 facenet-retinaface-pytorch 是在上一次博客的内容上更进一步 快速复现 实现 facenet-pytorch 人脸识别 windows上 使用cpu实现 人脸对比 参考了: Pytorch 利用Facenet和Re…

FaceNet

摘要: 尽管人脸识别领域最近取得了重大进展[10,14,15,17],但大规模有效地实施人脸验证和识别对当前方法提出了严峻挑战。在本文中,我们提出了一个称为 FaceNet 的系统,它直接学习从人脸图像到紧凑欧几里得空间的映射,其…

【facenet】快速复现 实现 facenet-pytorch 人脸识别 windows上 使用cpu实现 人脸对比

目录 0 前言1 搭建环境与项目2 人脸预测与结果展示 0 前言 这一次要复现的是人脸识别中的 facenet-pytorch 参考了: Pytorch 搭建自己的Facenet人脸识别网络(Bubbliiiing 深度学习 教程) https://gitee.com/xiaozhao123666/facenet-pytorch …

利用MTCNN和facenet实现人脸检测和人脸识别

利用MTCNN和facenet实现人脸检测和人脸识别 人脸检测和人脸识别技术算是目前人工智能方面应用最成熟的技术了。本博客将利用mtcnn和faceNet搭建一个实现人脸检测和人脸识别的系统。基本思路也很简单,先利用mtcnn的进行人脸检测,当然也可以使用其他的人脸…

facenet 总结一

Facenet是谷歌研发的人脸识别系统,该系统是基于百万级人脸数据训练的深度卷积神经网络,可以将人脸图像embedding(映射)成128维度的特征向量。以该向量为特征,采用knn或者svm等机器学习方法实现人脸识别。 CASIA-WebFac…

【人脸识别】FaceNet详解

论文题目:《FaceNet: A Unified Embedding for Face Recognition and Clustering》 论文地址:FaceNet 1、概述 FaceNet(A Unified Embedding for Face Recognition and Clustering)直接把输入图像变成欧式空间中的特征向量&#…

人脸识别系统FaceNet原理

1. 概述 近年来,随着深度学习在CV领域的广泛应用,人脸识别领域也得到了巨大的发展。在深度学习中,通过多层网络的连接,能够学习到图像的特征表示,那么两张人脸的图像,是不是可以通过深度学习判别其是否是相…

聪明的人脸识别3——Pytorch 搭建自己的Facenet人脸识别平台

聪明的人脸识别3——Pytorch 搭建自己的Facenet人脸识别平台 学习前言什么是Facenet源码下载Facenet的实现思路一、预测部分1、主干网络介绍2、根据初步特征获得长度为128的特征向量3、l2标准化4、构建分类器(用于辅助Triplet Loss的收敛) 二、训练部分1…

syscall()

1、syscall的定义 #include<unistd.h> #include<sys/syscall.h> / For SYS_xxx definitions /long syscall(long number, ...);syscall执行间接系统调用&#xff0c;使用该函数会执行一个系统调用&#xff0c;根据指定的参数 number 和所有系统调用的汇编语言接口…

linux systemctl命令详解

笔者在前文中概要的介绍了 systemd 的基本概念和主要特点。由于 systemd 相关的绝大多数任务都是通过 systemctl 命令管理的&#xff0c;所以本文将集中的介绍 systemctl 命令的用法。注意&#xff0c;本文以 ubuntu 16.04 进行介绍&#xff0c;文中所有的 demo 都在 ubuntu 16…