吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1034|回复: 15
收起左侧

[Web逆向] 算术验证码识别模型训练

[复制链接]
HaveAnOrange 发表于 2025-2-14 09:23
本帖最后由 HaveAnOrange 于 2025-2-17 18:18 编辑


主题

基于 YOLO 训练算术验证码识别模型

验证码示例

9c755df5955c3574d0a44f07b88d0c7e.jpg

环境准备

Python版本

Python>=3.8

环境安装

pip install ultralytics
pip install torch==2.3.1
pip install torchvision==0.18.1
pip install onnxruntime
pip install onnx
pip install labelme
pip install labelme2yolo

训练步骤

  1. 数据集收集
  2. 数据集标注
  3. 数据集格式转化
  4. 数据集训练
  5. 模型使用

数据集收集

编写爬虫采集验证码图片

数据集标注

每张图片标注 目标对象的位置和对象分类
本例分类为 0-9,+, -, x, =, ? 共15类

  1. 命令行启动标注工具labelme
labelme
  1. 选择数据集
    点击【打开目录】,选择待标注的图片文件夹(收集的数据集文件夹)
  2. 开启自动保存
    点击【文件】- 选中【自动保存】
  3. 标注单张图片的步骤如下
    gif上传不成功,这里把gif压缩成了zip文件上传

示例.zip (2.07 MB, 下载次数: 9)

5.重复步骤4,标注完所有的图片

数据集格式转化

将labelme的json格式标注转换为YOLO支持txt格式的标注

在命令行运行命令

labelme2yolo --json_dir <path/to/images_dir> --val_size 0.1 --test_size 0.1
  • 其中json_dir指定图片文件夹
  • yolo训练会将图片分为 train(训练集)、val(验证集)、test(测试集) 共3个数据集
  • val_size 指定val数据集占比 (0.1表示10%)
  • test_size 指定test数据集占比 (0.1表示10%)
  • 其余为train数据集占比

训练集(Train Set)是模型学习的主要数据来源
验证集(Validation Set)用于在训练过程中评估模型的性能
测试集(Test Set)用于在模型训练完成后进行最终的评估

输出文件结构如下

2025-02-13_135916.png

模型训练

训练

新建文件train.py

from ultralytics import YOLO

# yolo提供的预训练模型
model = YOLO("yolov8s.pt")

results = model.train(data="YOLODataset/dataset.yaml",
                      # 最大训练批次
                      epochs=200,
                      # 使用cpu训练
                      device='cpu',
                      batch=16,
                      # 图片尺寸,设置为32的倍数,根据实际图片集尺寸调整
                      imgsz=224,
                      name='<your task name>',
                      # 连续50个批次没有改善则停止训练
                      patience=50)

# 训练完成后导出为更通用的onnx格式
model.export(format="onnx", imgsz=[224, 224])

更多参数参考 https://docs.ultralytics.com/modes/train/#train-settings

运行train.py训练

python3 train.py

关于模型精度

训练过程中会自动生成run文件夹,同时终端会有如下图的输出
2025-02-13_144202.png

mAP50 与 mAP50-95 表示模型的精度

官方表示模型精度在0.8以上就可以说是一个不错的模型

训练完成之后,run/.../weights文件夹保存训练的模型

2025-02-13_141220.png

  • best.onnx: 训练中效果最好的Epoch对应的模型文件, onnx格式
  • best.pt: 训练中效果最好的Epoch保留的模型文件, pt格式
  • last.pt 训练中最后一个Epoch对应的模型文件,pt格式

模型使用

from ultralytics import YOLO

# Load a model
model = YOLO("<your model pt file>") 

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    result.show()  # display to screen

效果如下
2025-02-13_160918.png

2025-02-13_142009.png


免费评分

参与人数 6威望 +1 吾爱币 +26 热心值 +5 收起 理由
Arcticlyc + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Aircraftcomman5 + 1 + 1 我很赞同!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
涛之雨 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xingjing + 1 + 1 我很赞同!
Wh1t3zZnb + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| HaveAnOrange 发表于 2025-3-10 09:34
zhilev 发表于 2025-3-7 15:49
加油,结果准确度如何

一共标注了146张图片;
模型精度:
map50 0.995;
map50-95 0.80243;
使用测试集8张图片测试,能全部正确识别
Do_zh 发表于 2025-2-15 08:42
cbnhaier 发表于 2025-2-15 15:11
kenkenss 发表于 2025-2-16 15:08
带老花镜也看不见
 楼主| HaveAnOrange 发表于 2025-2-17 09:27
kenkenss 发表于 2025-2-16 15:08
带老花镜也看不见

抱歉,字体确实太小了,第一次发帖,markdown格式没有生效,我后面研究研究
 楼主| HaveAnOrange 发表于 2025-2-17 09:28
cbnhaier 发表于 2025-2-15 15:11
你让我又要安装python来玩这个软件了。

经常使用的话,建议使用conda管理python环境,体验比较好
 楼主| HaveAnOrange 发表于 2025-2-17 09:30
Do_zh 发表于 2025-2-15 08:42
事是这么回事。就是看起来费劲。

抱歉,第一次在这个平台发帖,格式没处理好,我后面优化下
 楼主| HaveAnOrange 发表于 2025-2-17 18:18
kenkenss 发表于 2025-2-16 15:08
带老花镜也看不见

老哥, Markdown格式调好了
kenkenss 发表于 2025-2-18 10:27
HaveAnOrange 发表于 2025-2-17 18:18
老哥, Markdown格式调好了

收到,谢谢楼主。
zhangsf123 发表于 2025-2-26 23:21
有点意思,继续努力。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-1 08:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表