签名验证包,用于使用writerindependent功能验证脱机签名。
versign的Python项目详细描述
VerSign:Python中的简单签名验证
versign
是一个小Python包,可用于执行脱机签名的验证。在
它假定没有任何机器学习工具或机器学习本身的先验知识,因此可以被ML专家和任何其他想要快速将此功能集成到他们的项目中的人使用。在
入门
要求
versign
依赖于sigver
项目下Hafemann提供的预先训练的模型。转到这个repository,并执行^{str1}$Installation下的步骤标题。在
安装
这个包需要python3。可使用pip进行安装:
pip install versign
建议安装在virtual environment内。在
下载经过培训的模型
在开始之前,您还需要完成一个步骤。versign
带有一些预先训练过的模型,这些模型赋予了它魔力。在
下载压缩模型here,并将其解压缩到项目根目录中的models/
目录中。您的项目目录应该如下所示:
组织数据集
假设在培训期间只有阳性样本(即真实签名)可用,而测试数据中可以同时存在真实签名和伪造签名。在
一般来说,数据集的结构如下所示。在
_ $PROJECT_ROOT
|__ models/
|__ data/
| |__ train/
| | |__ 001/
| | | |__ R01.png
| | | |__ R02.png
| | | |__ ...
| | |__ 002/
| | |__ ...
| |__ test/
| |__ 001/
| | |__ Q01.png
| | |__ Q02.png
| | |__ ...
| |__ 002/
| |__ ...
|__ ...
这里,Ref/
文件夹包含您的培训数据,每个子文件夹代表一个人。在Ref/
文件夹中的每个子文件夹中,只有该用户的真实签名的图像。在
类似地,{cd8>包含你的数据^文件夹。此文件夹中的子文件夹应与training文件夹中的子文件夹相同,但它们可以包含正负签名示例。在
用VerSign
import os
import joblib
import torch
from sigver.featurelearning.models import SigNet
from versign import VerSign
# Define paths to your data
data_path = 'data/'
train_path = data_path + 'train/' # path to reference signatures
test_path = data_path + 'test/' # path to questioned signatures
temp_path = data_path + 'temp/' # temp path where extracted features will be saved
if not os.path.exists(temp_path):
os.makedirs(temp_path)
# Load models
state_dict = torch.load('models/signet.pth')[0]
net = SigNet().eval()
net.load_state_dict(state_dict)
clf = joblib.load('models/versign_segment.pkl')
v = VerSign(input_size=(150, 220), extraction_model=net, segmentation_model=clf)
# Learn from genuine signatures
v.train_all(train_path, temp_path)
# Classify your test data
results = v.test_all(test_path, temp_path)
# Print out results
for y_test in results:
print(y_test)
# Cleanup temp files
shutil.rmtree(temp_path) # comment this line if you want to keep extracted features
关于一个更完整的例子和附加的特性,比如在知道基本真理的情况下测量测试的准确性,请参阅example.py。在
- 项目
标签: