首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >YOLO 识别合同捺印签字

YOLO 识别合同捺印签字

作者头像
查克
发布2024-12-06 12:35:34
发布2024-12-06 12:35:34
1.1K0
举报
文章被收录于专栏:碲矿碲矿

有个业务场景,需要审核文件有没有签字按手印。

常规的 OCR 服务可以识别印章,但通常判断不了有没有签字和指纹。客户使用的 OCR 服务就没有这项功能,这时候就需要自己动手了。

不过现在 CV 已经相当成熟了,很多的预训练模型,不需要自己从头开始。

注:CV 工程师可不是你以为的 Ctrl+C Ctrl+V 的工程师

作为分享,咱们直接使用 ultralytics 来实现(注意查看 LICENSE)。

使用 UltralyticsYOLO v10 从头微调一个项目,需要遵循以下几个步骤:

  • 准备数据集
  • 配置训练环境
  • 开始训练模型
  • 模型评估
  • 推理

步骤 1:准备数据集

1.1 收集数据

首先,收集包含捺印签字的文档图像。确保数据集多样化,包括不同的捺印签字样式、大小、颜色、背景、光照条件等,以提高模型的泛化能力。

1.2 标注数据

使用标注工具(如 Label Studio)为捺印签字进行标注。YOLO 使用的是 YOLO 格式 的标注文件,即每个图像对应一个 .txt 文件,其中包含了目标的类别和边界框信息。

Label Studio 的安装使用也很方便,直接看官方文档就可以了。需要注意的是,第一次使用需要注册一下。

1.3 组织数据

将图像和标注文件组织成以下目录结构:

代码语言:javascript
复制
datasets/
├── sign_dataset/
│   ├── images/
│   │   ├── train/
│   │   │   ├── img1.jpg
│   │   │   ├── img2.jpg
│   │   ├── val/
│   │   │   ├── img3.jpg
│   ├── labels/
│   │   ├── train/
│   │   │   ├── img1.txt
│   │   │   ├── img2.txt
│   │   ├── val/
│   │   │   ├── img3.txt

步骤 2:配置 YOLO 项目

2.1 安装 Ultralytics 库

在 Python 环境中安装 Ultralytics 库:

代码语言:javascript
复制
pip install ultralytics

2.2 创建自定义配置文件

在 YOLO 项目中,可以使用 .yaml 文件来配置训练。新建一个配置文件 sign.yaml,内容如下:

代码语言:javascript
复制
train: ./datasets/sign_dataset/images/train  # 训练数据集路径
val: ./datasets/sign_dataset/images/val      # 验证数据集路径

nc: 1  # 类别数量,捺印签字只有一个类别
names: ['sign']  # 类别名称

步骤 3:训练模型

3.1 加载预训练模型(可选)

通常我们会加载一个预训练的 YOLOv10 模型,以加快收敛速度。如果需要从头训练,可以使用 --weights '' 来指定不加载预训练权重。

3.2 开始训练

使用 Ultralytics 提供的命令行接口进行训练:

代码语言:javascript
复制
from ultralytics import YOLO

# 初始化模型(可以从预训练模型开始)
model = YOLO('yolov10n.pt')  # 如果要从头训练,可以使用 YOLO()

# 开始训练
model.train(data='sign.yaml', epochs=100, batch=16, imgsz=640)
  • epochs=100:训练的轮数。
  • batch=16:批次大小,根据硬件性能调整。
  • imgsz=640:输入图像尺寸。

步骤 4:评估和推理

4.1 评估模型

训练完成后,使用验证集来评估模型的性能:

代码语言:javascript
复制
model.val()

这将输出模型在验证集上的平均精度(mAP)、召回率等指标。

4.2 使用模型进行推理

使用训练好的模型对新图像进行推理,识别文档中的捺印签字:

代码语言:javascript
复制
results = model.predict(source='path_to_document_image.jpg')

results 包含了预测的类别、边界框、置信度等信息。

4.3 保存和导出模型

训练完成后,可以将模型导出为 ONNX 或 TensorRT 格式,以便于部署:

代码语言:javascript
复制
model.export(format='onnx')  # 导出为 ONNX 格式

步骤 5:微调和优化

如果模型的性能不满足需求,可以考虑以下方法进行微调和优化:

  • 调整学习率:适当调整学习率以避免过拟合或欠拟合。
  • 增加数据集:收集更多的捺印签字图像进行训练,特别是那些模型识别困难的样本。
  • 使用数据增强:在训练过程中添加数据增强策略(如随机裁剪、旋转、翻转等)以提高模型的鲁棒性。

(这回不能说我又水一篇了吧……)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 步骤 1:准备数据集
    • 1.1 收集数据
    • 1.2 标注数据
    • 1.3 组织数据
  • 步骤 2:配置 YOLO 项目
    • 2.1 安装 Ultralytics 库
    • 2.2 创建自定义配置文件
  • 步骤 3:训练模型
    • 3.1 加载预训练模型(可选)
    • 3.2 开始训练
  • 步骤 4:评估和推理
    • 4.1 评估模型
    • 4.2 使用模型进行推理
    • 4.3 保存和导出模型
  • 步骤 5:微调和优化
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档