SiameseNetwork实现面部识别(基于PyTorch)
参考
文章链接(这篇文章有些图已经挂了。。)
SiameseNetwork又叫孪生网络---详细的介绍可以看这篇文章
网络的基本架构如图
下面直接介绍:
1.数据集
数据集采用的是AT&T面部数据集,里面是一些以pgm后缀的图像文件,可以用Sublime Text打开
是P5格式的,宽度为92,高度为112
用python进行可视化可以参考下面的代码
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
import ospath="F:/Facial-Siamese/Siamese-Networks/data/faces/testing/s7/"
files=os.listdir(path)for i in files:im = Image.open(path+i)im.show()i=i[:len(i)-4]#print(i)im.save(path+i+".bmp")
可视化的同时,我给转换成了bmp文件,其实两种格式的文件都可以用来训练。
2.网络架构
采用CNN架构,每次卷积后进行了批量归一化(BatchNorm),然后dropout
class SiameseNetwork(nn.Module):def __init__(self):super(SiameseNetwork, self).__init__()self.cnn1 = nn.Sequential(nn.ReflectionPad2d(1),nn.Conv2d(1, 4, kernel_size=3),nn.ReLU(inplace=True),nn.BatchNorm2d(4),nn.ReflectionPad2d(1),nn.Conv2d(4, 8, kernel_size=3),nn.ReLU(inplace=True),nn.BatchNorm2d(8),nn.ReflectionPad2d(1),nn.Conv2d(8, 8, kernel_size=3),nn.ReLU(inplace=True),nn.BatchNorm2d(8),)self.fc1 = nn.Sequential(nn.Linear(8*100*100, 500),nn.ReLU(inplace=True),nn.Linear(500, 500),nn.ReLU(inplace=True),nn.Linear(500, 5))def forward_once(self, x):output = self.cnn1(x)output = output.view(output.size(0), -1)output = self.fc1(output)return outputdef forward(self, input1, input2):output1 = self.forward_once(input1)output2 = self.forward_once(input2)return output1, output2
3.对比损失
class ContrastiveLoss(torch.nn.Module):def __init__(self, margin=2.0):super(ContrastiveLoss, self).__init__()self.margin = margindef forward(self, output1, output2, label):euclidean_distance = F.pairwise_distance(output1, output2)loss_contrastive = torch.mean((1-label) * torch.pow(euclidean_distance, 2) +(label) * torch.pow(torch.clamp(self.margin - euclidean_distance, min=0.0), 2))
4.训练
batch=64
epoch=200
用.bmp类型的图片训练
5.测试
用10对图像进行测试
原作者给的代码有些错误,我改了一些地方,如有问题请多加指正。代码链接。
谷歌盘:权重链接
百度盘:权重链接
SiameseNetwork实现面部识别(基于PyTorch)相关推荐
- 基于pytorch量化感知训练(mnist分类)--浮点训练vs多bit后量化vs多bit量化感知训练效果对比
基于pytorch量化感知训练–浮点训练vs多bit后量化vs多bit量化感知训练效果对比 代码下载地址:下载地址 灰色线是量化训练,橙色线是后训练量化,可以看到,在 bit = 2.3 的时候,量化 ...
- 基于pytorch后量化(mnist分类)---浮点训练vs多bit后量化vs多bit量化感知训练效果对比
基于pytorch后量化(mnist分类)-浮点训练vs多bit后量化vs多bit量化感知训练效果对比 代码下载地址:下载地址 试了 bit 数为 1-8 的准确率,得到下面这张折线图: 发现,当 b ...
- 基于pytorch的模型稀疏训练与模型剪枝示例
基于pytorch的模型稀疏训练与模型剪枝示例 稀疏训练+模型剪枝代码下载地址:下载地址 CIFAR10-VGG16BN Baseline Trained with Sparsity (1e-4) P ...
- 艾伦人工智能研究院开源AllenNLP,基于PyTorch轻松构建NLP模型
艾伦人工智能研究院(AI2)开源AllenNLP,它是一个基于PyTorch的NLP研究库,利用深度学习来进行自然语言理解,通过处理低层次的细节.提供高质量的参考实现,能轻松快速地帮助研究员构建新的语 ...
- 基于PyTorch,如何构建一个简单的神经网络
本文为 PyTorch 官方教程中:如何构建神经网络.基于 PyTorch 专门构建神经网络的子模块 torch.nn 构建一个简单的神经网络. 完整教程运行 codelab→ https://ope ...
- 清华大学开源迁移学习算法库:基于PyTorch实现,支持轻松调用已有算法
机器之心报道 编辑:魔王 作者:清华大学大数据研究中心 近日,清华大学大数据研究中心机器学习研究部开源了一个高效.简洁的迁移学习算法库 Transfer-Learn,并发布了第一个子库--深度领域自适 ...
- YOLOv5 它来了!基于 PyTorch,体积比 YOLOv4 小 90%,速度却超 2 倍!
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI YOLOv4还没有退热,YOLOv5已经发布! 6月9日,Ultralytics公司开源了YOLOv5,离上一次YOLOv4发布不到50天 ...
- Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]
作者:吴茂贵,郁明敏,杨本法,李涛,张粤磊 著 出版社:机械工业出版社 品牌:机工出版 出版时间:2019-11-01 Python深度学习:基于PyTorch [Deep Learning with ...
- Kornia开源可微分计算机视觉库,基于Pytorch,GitHub 3000星
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 编辑丨机器之心 OpenCV 创始人 Gary Bradski 等人近期发表了一篇 Kornia 的综 ...
- 基于Pytorch和RDKit建立QSAR模型
尝试使用pytorch和RDKit构建QSAR模型 环境依赖 pip install pprint pip install argparse #安装rdkit conda install -c rdk ...
最新文章
- ​causal-learn:基于Python的因果发现算法平台
- quick-cocos2d-x教程12:实现文本和password输入界面
- 使用camera_calibration对xtion pro live深度相机进行参数标定,rosdep install camera_calibration报错Rosdep cannot find
- c++ 位运算_C语言之运算符
- 豆瓣 为什么不用php,豆瓣网友是不是都疯了?
- python生成.exe文件
- 第三篇:C++ 中的几种初始化
- npm:no such file /usr/local/lib/node_modules/vue-cli/node_modules/get-stream
- matlab shift 详解,MeanShift算法详解以及matlab源码
- 嵌入式--需要懂的网站
- 计算机科学 贺楠,计算机学部-黑龙江东方学院.DOC
- 快手 (kuaishou.net) 2.6 发布
- SAP能为纺织印染行业带来什么?
- 一文说清MySQL索引数据结构
- 【JavaEE】Day11-多线程
- Automated_bounty_Hunter全自动漏洞赏金猎人使用场景一
- vue跳转链接(新页签)
- 一首特别适合冥想的音乐
- python在excel中指定位置写入值
- service和systemctl
热门文章
- Linux音频软件:Alsa、OSS和Pulseaudio、ESD、
- serverlet 返回json
- 手绘白板动画视频制作工具VideoScribe 3.12.0 Windows和macOS最新英文专业版原生支持横屏竖屏方屏尺寸输出视频无水印支持720p和1080p高清输出自带5简1繁中文字体
- 【监控系统】Smokeping网络监控
- 基于STM32的TM1638的按键控制以及数码管和LED灯的动态扫描
- 利用正则表达式简单判断账号密码等
- OpenDDS踩坑(2)-DCPSInfoRepo ERROR add_domain_participant returned invalid id
- mysql_safe my.cnf 配置_mysql my.cnf配置文件详解
- 【新技能get】如何通过地址查看附件企业基本信息?
- 全网最详细的新手入门的Linux安装教程