facenet专题1:windows下使用train_sotfmax.py训练人脸识别模型

2023-11-04

1.facenet github地址:https://github.com/davidsandberg/facenet,下载该project。

git clone https://github.com/davidsandberg/facenet

2.下载CASIA-WebFace数据集,官方下载地址 http://www.cbsr.ia.ac.cn/english/CASIA-WebFace-Database.html,如果不方便可以去我的微云下载  https://share.weiyun.com/5pSMgRO-g

下载完成后可以得到一个大约4.1G的 CASIA-WebFace.zip文件,在facenet/src文件夹下新建一个data文件夹,解压到data文件夹下得到CASIA-WebFace文件夹,里面有很多文件夹:

每一个代表一个人,文件夹中对应这个人的所有人脸图片,使用MTCNN对原始图像进行人脸检测和对齐,进入facenet文件夹下,执行

python src/align/align_dataset_mtcnn.py ./src/data/CASIA-WebFace/ ./src/data/CASIA_Web_Face_mtcnnpy_182/ --image_size 182 --margin 44

执行一段时间,可以得到data文件夹下CASIA_Web_Face_mtcnnpy_182文件夹下面按相同格式保存着对齐的人脸图像。所有图像都是182*182像素,后面我们会在训练时进行随机裁剪成160*160,起到数据增强的作用。同样,将LFW数据库进行对齐,在data文件夹下生成160*160像素人脸库lfw_mtcnnpy_160,因为后续训练中使用lfw做evaluate,所以必须放在指定文件夹,与后于输入参数相对应,这里我们把它放在./data/lfw_mtcnnpy_160/文件夹下面。

使用train_sotfmax训练人脸识别模型,其执行脚本代码如下:

python train_softmax.py \
--logs_base_dir ./logs/facenet/ \ #把训练日志保存到./logs/facenet/,运行时,会在./logs/facenet/文件夹下新建一个以当前时间命名的目录。
--models_base_dir ./models/facenet/ \ #运行时同样新建一个以当前时间命名的目录,保存训练好的模型。
--data_dir ./data/CASIA_Web_Face_mtcnnpy_182 \ #训练数据的位置。
--image_size 160 \#输入网络的图片尺寸是160*160像素。
--model_def models.inception_resnet_v1 \ #比较关键的参数,指定训练的CNN结构为inception_resnet_v1,项目支持的所有CNN结构在src/models目录下。 
--lfw_dir ./data/lfw_mtcnnpy_160 \ #指定LFW数据集的位置。
--optimizer ADAM \#指定使用的优化的方法。
--learning_rate -1 \#学习率,这里指定为负数,将被忽略,后面的learning_rate_schedule_classifier_casia.txt参数规划学习率。
--max_nrof_epochs 80 \ #最多跑180个epoch
--keep_probability 0.8 \ #dropout被保持的概率。
--random_crop \ #数据增强时会进行随机裁剪。
--random_flip \ #数据增强时会进行随机翻转。
--learning_rate_schedule_file data/learning_rate_schedule_classifier_casia.txt \
#该文件内容如下:
# Learning rate schedule
#Maps an epcoh number to a learning rate
#0:0.1
#65:0.01
#77:0.001
#1000:0.0001
--weight_decay 5e-5 \#所有变量的正则化系数。
--center_loss_factor 1e-2 \ #中心损失和softmax损失的平衡参数。
--center_loss_alfa 0.9 \#中心损失的内部参数

windows下在facenet/src文件夹下创建train.bat脚本,这里需要区别一下,windows脚本的换行要使用符号^,脚本内容如下:

python train_softmax.py ^
--logs_base_dir ./logs/facenet/ ^
--models_base_dir ./models/facenet/ ^
--data_dir ./data/CASIA_Web_Face_mtcnnpy_182 ^
--image_size 160 ^
--model_def models.inception_resnet_v1 ^
--lfw_dir ./data/lfw_mtcnnpy_160/ ^
--optimizer ADAM ^
--learning_rate -1 ^
--max_nrof_epochs 80 ^
--keep_probability 0.8 ^
--random_crop ^
--random_flip ^
--learning_rate_schedule_file data/learning_rate_schedule_classifier_casia.txt ^
--weight_decay 5e-5 ^
--center_loss_factor 1e-2 ^
--center_loss_alfa 0.9

通过anaconda进入facenet/src文件夹,直接执行脚本 train.bat开始训练,屏幕会打印类似如下的消息:

Epoch[0][1/1000]表示第0个Epoch以及当前Epoch第几个训练batch,我使用的是RTX2080的显卡,大概30分钟能够训练一个epoch。

通过windows指令cmd,进入facenet/src文件夹,输入

tensorboard  --logdir ./logs/facenet/20200412-014210/

其中最后一个20200412-014210文件夹是训练开始后根据日期新建的。

浏览器打开http://localhost:6006/,可以监控训练的情况:

 

大概花费15个小时完成了80epoch的训练。下一篇我们将对源代码进行解析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

facenet专题1:windows下使用train_sotfmax.py训练人脸识别模型 的相关文章

  • 论文学习:Occlusion Robust Face Recognition Based on Mask Learning

    论文地址 Occlusion Robust Face Recognition Based on Mask Learning with Pairwise Differential Siamese Network 综述 深度卷积网络作为人脸识别
  • 人脸识别项目介绍

    项目介绍 人脸识别 从Python或命令行中识别和操作面部 世界上最简单的人脸识别库 使用dlib的最新人脸识别功能构建 建立在深度学习之上 该模型的精度为99 38 Wild 基准中的标记面孔 这也提供了一个简单的face recogni
  • 基于LBPH算法进行人脸识别的毕设项目(一)

    摘要 在完成本科毕业设计时期 选题使关于人脸识别的一个题目 主要内容是通过海康威视的网络摄像头让视频数据在上传到笔记本电脑端进行实时的人脸检测与识别 识别出人脸则显示信息 应用场景为针对斑马线行人闯红灯的行为 通过对下位机实时视频数据的处理
  • 【深度长文】人脸识别:人脑认知与计算机算法(五部曲)

    来源 本文经作者 Owl of Minerva 授权转载 链接 https zhuanlan zhihu com HicRhodushicsalta 1 初期预测和介绍 现阶段 人脸识别是人工智能领域最炙手可热的话题之一 Google和Fa
  • 使用Python,OpenCV,本地二进制模式(LBP)进行人脸识别

    使用Python OpenCV与本地二进制模式 LBP 进行人脸识别 1 效果图 2 原理及步骤 2 1 原理 2 2 步骤 3 源码 参考 在深度学习和暹罗网络之前 面部识别算法依赖于特征提取和机器学习 这篇博客将介绍如何使用本地二进制模
  • 人脸识别学习总结

    对人脸识别算法进行了一定程度的学习 从最开始的特征脸到如今的CNN人脸检测 有了较为全面的了解 重点掌握了基于PCA的特征脸检测 LDA线性判别分析 Fisher线性判别 以及基于级联器的Haar特征 LBP特征的人脸检测算法 人脸检测的学
  • 基于opencv-python的人脸识别和鸟图识别

    目录 图像识别 人脸识别 鸟图识别 一 人脸识别 即使是地铁挤压的人脸 也是有尊严的 值得被检测 经过 OpenCV 的努力 成功检测 左图是正常被识别的人脸 中图由于挤地铁人脸已不可识别 右图OpenCV单应性变换后 拯救了被miss的人
  • 实现计算机视觉——人脸检测

    概述 计算视觉是人工智能的一部分 旨在设计能够像人类视觉一样进行观察的智能算法 在本文中 我们将介绍三个主要范围 人脸检测 物体检测 面部识别 对象跟踪 在第一篇文章中 我们将重点介绍计算机视觉 以及基于 Python OpenCV 库的人
  • 探究Facebook相似性搜索工具 faiss的原理

    探究Facebook相似性搜索工具的原理 它是一个能使开发者快速搜索相似多媒体文件的算法库 而该领域一直是传统的搜索引擎的短板 借助Faiss Facebook 在十亿级数据集上创建的最邻近搜索 nearest neighbor searc
  • Pyhton,OpenCV对象检测之——Haar级联人脸及眼睛检测

    Pyhton OpenCV对象检测之 Haar级联人脸及眼睛检测 1 效果图 2 原理 2 1 Haar人脸检测原理 2 2 Haar级联预训练的模型 3 源码 3 1 图像面部及眼睛检测 3 2 视频帧面部及眼睛检测 参考 这篇博客将介绍
  • 基于人脸的常见表情识别(3)——模型搭建、训练与测试

    基于人脸的常见表情识别 3 模型搭建 训练与测试 模型搭建与训练 1 数据接口准备 2 模型定义 3 模型训练 模型测试 本 Task 是 基于人脸的常见表情识别 训练营的第 3 课 如果你未学习前面的课程 请从 Task1 开始学习 本
  • 计算机视觉之人脸识别(Yale数据集)--HOG和ResNet两种方法实现

    1 问题描述 在给定Yale数据集上完成以下工作 在给定的人脸库中 通过算法完成人脸识别 算法需要做到能判断出测试的人脸是否属于给定的数据集 如果属于 需要判断出测试的人脸属于数据集中的哪一位 否则 需要声明测试的人脸不属于数据集 这是一个
  • High-Fidelity Pose and Expression Normalization for Face Recognition in the Wild

    CVPR 2015 Matlab code http www cbsr ia ac cn users xiangyuzhu projects HPEN main htm 中科院关于 人脸图像预处理 姿态和表情的归一化 算法的整体流程图如下所
  • 基于深度学习的人脸识别综述

    本文转载自 https xraft github io 2018 03 21 FaceRecognition 作者 Caleb Ge 葛政 如有侵权请告知删除 下文中的 我 均为原文作者 另附有查找的其他参考链接 论文介绍方面链接 1 ht
  • Qt+百度AI实现人脸识别之人脸检测

    文章目录 简单需求 Demo运行结果 百度AI人脸识别接入 为什么使用百度AI接口 接入步骤 如何获取Access Token Qt软件开发 人脸检测Qt编程步骤 知识点 网络编程 get put post请求方式的区别简述 POST 提交
  • 人脸识别正则化系列之normface

    今天介绍一下NormFace L2 Hypersphere Embedding for Face Verification Motivation 希望利用正则化解决两个问题 1 人脸识别任务里面的loss有softmax contrasti
  • 深度学习——图像增强 小组代码

    TJU暑期的深度学习训练营 这是人脸识别运用图像增强后的一段代码 import os shutil unzip tjudataset zip base dir tjudataset read data train dir os path j
  • 人脸分割 人脸解析 源码推荐

    2021年 有预训练 resnet50 126m 测试代码 python face warping test py i 0 e rtnet50 decoder fcn n 11 d cuda 0 Command line arguments
  • 疯壳AI语音及人脸识别3-4AI人脸系统架构

    详情地址 https fengke club GeekMart views offline ai 购买链接 https fengke club GeekMart su fKw7Nb7oC jsp 视频地址 https fengke club
  • 机器学习系列(8):人脸识别基本原理及Python实现

    众所周知 人脸识别和人脸验证已经得到大量应用 那么它们之间有什么异同呢 又是如何实现的呢 这里是机器学习系列第八篇 带你揭开它们神秘的面纱 若图片挂了 可移步 https mp weixin qq com s biz MzU4NTY1NDM

随机推荐

  • C#:转换成中文数字

    代码
  • excel熵值法计算权重_如何用熵值法确定指标权重?

    记得点击蓝字关注我们哦 首先 要运用熵值法当然要理解它 搞懂它 熵值法是一种理论的数学方法 从计算机科学角度上看 属于一种算法 一 熵值法原理 熵的概念源于热力学 是对系统状态不确定性的一种度量 在信息论中 信息是系统有序程度的一种度量 而
  • [第一章 web入门]SQL注入-1

    拿到题目是一篇日记 是GET型请求方式 我们可以直接在url栏中注入数据 判断注入类型 页面有回显所以不是整型注入 id 1 and 1 2 id 1 页面无回显 判断为字符型注入 闭合符应该就是单引号 id 1 order by 4 无回
  • 深度学习之注意力机制(Attention Mechanism)和Seq2Seq

    这篇文章整理有关注意力机制 Attention Mechanism 的知识 主要涉及以下几点内容 1 注意力机制是为了解决什么问题而提出来的 2 软性注意力机制的数学原理 3 软性注意力机制 Encoder Decoder框架与Seq2Se
  • 电商购物网站(登陆注册购物车详情页等)(仿jd)

    电商购物网站 仿jd 源码链接 https gitee com ZRXXUAN shopping https github com ZRXXUAN shopping 介绍 仿照jd写的电商购物网站 可以实现基本功能 登录 注册与数据库交互
  • 排序算法c语言描述---双向冒泡排序

    排序算法系列学习 主要描述冒泡排序 选择排序 直接插入排序 希尔排序 堆排序 归并排序 快速排序等排序进行分析 文章规划 一 通过自己对排序算法本身的理解 对每个方法写个小测试程序 具体思路分析不展开描述 二 通过 大话数据结构 一书的截图
  • Linux shell与expect配合完成自动打包资源并scp到另一台Linux电脑的例子

    有时我们想使用shell脚本做一些自动操作 例如ssh或scp时自动输入密码 可以使用expect工具来实现 需求 使用shell与expect混合编程 将一个文件从机器A Ubuntu16 04 中的目录mydata打包为mydata t
  • 嵌入式工程师老了怎么办_老刘工程师睡前故事5-EMC 辐射发射超标怎么办?

    老刘工程师睡前故事 EMC 辐射发射超标怎么办 今天的工程师睡前故事讲讲汽车EMC测试中辐射发射超标了怎么办 首先来聊聊辐射发射的基本知识 辐射发射英文简称RE 检测的是产品对外的辐射干扰 国际标准参考CISPR25 国标参考GBT1865
  • outlook出现"定位链接浏览器"错误的解决办法

    打开我的电脑 单击 工具 文件夹选项 文件类型 在列表中选中 无 URL 超文本传输通讯协议 单击 高级 按钮 把原来项目删除 点新建 操作名称 处输入 OPEN 用于执行操作的应用程序 处输入 C Program Files Intern
  • GIT撤销远程MERGE

    GIT撤销远程MERGE 关于GIT撤销 网上有很多教程 基本都提到RESET或者REVERT 等我们自己按照教程搞的发现搞不了 我也跟大家有同样的困惑 这里把这个问题详细的说明一下 方法一 通过RESET撤销 我用的工具是Tortoise
  • 毕业设计-基于 MATLAB的红外图像预处理算法对比研究

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • codeforces - 920B(贪心)

    B Tea Queue time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output
  • 在没有自己的服务器的情况下,搭建自己的网站-开发自己的小程序接口

    目标 场景一 在没有自己的服务器的情况下 搭建自己的网站 并通过微信小程序给自己的网站引流 场景二 在没有自己的服务器的情况下 开发自己的小程序 后端接口使用第三方网站的某些功能完成小程序前后端数据交互能力 实现 场景一 使用gitee的g
  • 分贝dB的换算

    1dB 0 115Np 公式 公式 d B 10 l g
  • adworld.xctf-web-新手练习区刷题

    1 View Source 根据题目 就能猜到 此处是查看页面源码 在查看的过程中发现右键不能使用了 那就用F12吧 2 Robots 这题是考察Robots协议 访问的时候页面是一片空白 直接输入robots txt 在地址栏输入robo
  • 微信小程序滚动Tab选项卡:左右可滑动切换

    最终效果如上 问题 1 tab标题总共8个 所以一屏无法全部显示 2 tab内容区左右滑动切换时 tab标题随即做标记 active 3 当active的标题不在当前屏显示时 要使其能显示到当前屏中 一 wxml结构 tab标题因一排八个
  • Redis学习笔记(持续更新中...)

    学习课程 尚硅谷Redis6 目录 NoSQL简介 NoSQL概述 NoSQL的特点 适用场景 NoSQL不适用场景 几种常见的NoSQL数据库 Memcache Redis MongoDB Redis Redis的底层 Redis的五大数
  • 获取扫描枪数据并存入TXT文档的C#程序代码

    我可以提供一段 C 语言代码 用于获取扫描枪数据并存入TXT文档 include
  • 数仓分层、设计、建模、架构

    一 数仓分层误区 数仓层内部的划分不是为了分层而分层 分层是为了解决 ETL 任务及工作流的组织 数据的流向 读写权限的控制 不同需求的满足等各类问题 业界较为通行的做法将整个数仓层又划分成了 DWD DWT DWS DIM DM等很多层
  • facenet专题1:windows下使用train_sotfmax.py训练人脸识别模型

    1 facenet github地址 https github com davidsandberg facenet 下载该project git clone https github com davidsandberg facenet 2