签名验证包,用于使用writerindependent功能验证脱机签名。

versign的Python项目详细描述


VerSign:Python中的简单签名验证

versign是一个小Python包,可用于执行脱机签名的验证。在

它假定没有任何机器学习工具或机器学习本身的先验知识,因此可以被ML专家和任何其他想要快速将此功能集成到他们的项目中的人使用。在

入门

要求

versign依赖于sigver项目下Hafemann提供的预先训练的模型。转到这个repository,并执行^{str1}$Installation下的步骤标题。在

安装

这个包需要python3。可使用pip进行安装:

pip install versign

建议安装在virtual environment内。在

下载经过培训的模型

在开始之前,您还需要完成一个步骤。versign带有一些预先训练过的模型,这些模型赋予了它魔力。在

下载压缩模型here,并将其解压缩到项目根目录中的models/目录中。您的项目目录应该如下所示:

^{pr2}$

组织数据集

假设在培训期间只有阳性样本(即真实签名)可用,而测试数据中可以同时存在真实签名和伪造签名。在

一般来说,数据集的结构如下所示。在

_ $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。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
具有泛型的对象的oop Java数组   爪哇丑陋的数字找到第1500名UVA在线评委   SpringJava。lang.IllegalStateException:自动连线批注至少需要一个参数   java为什么我的系统找不到我的属性文件?   java有没有办法让Maven同时构建1.5和1.6字节码JAR?   java通过Sailfin中的header进行操作   使用向量、距离和图形   如果提供的登录信息是错误的,为什么java控件不进入else部分和Toast?   java如何为电子商务安卓应用程序存储产品列表   java保存声音首选项Libgdx Android   java无法在测试单元中调用JpaRepository   java使用批处理更新Cassandra表中的选定列,而不将其他列值设为null   java如何在log4j2中的手动代码配置中向appender添加级别?   从ImageIO返回的java Null。读取(新的ByteArrayInputStream(bs));   java不确定如何防止此Arraylist处于可编辑状态   netbeans中的java更改清单(TrustedLibrary=true属性)   java无法使用RestTemplate和Spring数据REST发布具有关系的新实体