签名验证包,用于使用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第三方库


热门话题
java错误:无法解析方法   如何用相同的父标记和子标记在Java中解析XML?   日期使用Java中的时区偏移将本地时间转换为UTC   java如何在多进程、多线程环境中读取文件   WebView中的java弹出式对话框不在当前显示范围内,但在chrome浏览器中运行良好   只有2个参数的java递归二进制搜索方法   无法在java中调用函数   java JavaMail在Tomcat服务器上运行时停止工作   反射通过java程序生成、编译和运行java类   java Android:如何使ListView即使在应用程序关闭后仍保持禁用状态   在JAVA中识别匿名类实例   java渲染一个由三角形组成的立方体,在旋转时会产生奇怪的角度   函数式编程如何基于比较连续的列表元素将Java流减少为布尔值   java如何替换列表中的多个项目?   java Android如何获取随机sqlite数据?   java我已经将useSSL设置为false,但仍然收到警告   java使用动态变量生成jlabel   apachespark:java。lang.NoClassDefFoundError v2TableWithV1回退