滑块缺口验证码

在这里插入图片描述

滑动验证码滑块缺口的位置识别是破解滑块验证码的关键,这里我们尝试使用YOLOV8训练目标检测模型,识别出滑块图片的缺口

验证码示例

模型通过大批量生成随机数据后进行深度网络训练,本身并非针对任何一家验证码厂商而制作,模型使用效果完全靠玄学,可能可以识别,可能不能识别,仅做学习交流使用,如有侵权,请联系本人删除

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

滑块验证码征集:如果有其他种类的滑块验证码,在评论区留言哦😄

训练步骤

  1. 采集滑块图片,保留滑块图和缺口背景图
  2. 打标签,我目前使用labelme打标签
  3. 标签文件转换
    labelme标签文件为json格式, 可使用labelme2yolo转为yolo支持的txt格式
# 安装labelme2yolo
pip install labelme2yolo
# 转换格式,并分割数据集(train, test, val)
labelme2yolo --json_dir /path/to/labelme_json_dir/ --val_size 0.15 --test_size 0.15
# /path/to/labelme_json_dir/ 为标签文件夹
# --val_size 0.15  验证集占比15%
# --test_size 0.15 测试集占比15%
# 分割后的文件结构
"""
/path/to/labelme_json_dir/YOLODataset/labels/train/
/path/to/labelme_json_dir/YOLODataset/labels/test/
/path/to/labelme_json_dir/YOLODataset/labels/val/
/path/to/labelme_json_dir/YOLODataset/images/train/
/path/to/labelme_json_dir/YOLODataset/images/test/
/path/to/labelme_json_dir/YOLODataset/images/val/
/path/to/labelme_json_dir/YOLODataset/dataset.yaml
"""
  1. 训练模型
from ultralytics import YOLO

# yolov8s.pt是yolov8提供的目标检测预训练模型
model = YOLO("yolov8s.pt")

results = model.train(data="/path/to/labelme_json_dir/YOLODataset/dataset.yaml", epochs=100, imgsz=[380, 165])
# data为上一步labelme2yolo生成的dataset.yaml配置文件
# epochs为训练次数
# imgsz为训练图片宽高

  1. 模型效果测试
from ultralytics import YOLO

# Load a model
model = YOLO("<训练的模型>.pt")  

results = model(["test_img1.jpg", "test_img2.jpg"])  # return a list of Results objects

# Process results list
for i. result in enumerate(results):
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename=f"result{i}.jpg")  # save to disk

效果展示

部分厂商验证码会有多个缺口,以下 “t” 表示真实缺口,“f” 表示障碍缺口(干扰识别的假缺口)

第一种

原图
在这里插入图片描述
预测效果
在这里插入图片描述

第二种

原图
在这里插入图片描述

预测效果
在这里插入图片描述

第三种

原图
在这里插入图片描述
预测效果
在这里插入图片描述

第四种

原图
在这里插入图片描述

识别效果
在这里插入图片描述

小结

目前来看三种验证码都能很好的识别,如果有新的验证码种类,可以在评论区留言,之后我会加入到模型训练中

训练结果

已开源,相关链接

详见如下:

captcha-recognizer CSDN

captcha-recognizer pypi

captcha-recognizer github

captcha-recognizer gitee

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐