使用pyTorch搭建自己的facenet

文章介绍了如何利用Anaconda创建环境并安装pyTorch,然后详细阐述了搭建facenet的过程,包括环境配置、模型训练、预测以及模型性能评估。在训练过程中遇到的CUDA内存不足问题,通过调整batch_size得到解决。最终,训练出的模型在LFW数据集上的精度达到98.117%。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

参考博主博客:https://blog.youkuaiyun.com/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中的一些预测和进行欧式距离判断的流程。
但具体的神经网络的知识还不怎么了解,还需要慢慢学习。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值