基于YOLOv8的通用的滑动验证码滑块缺口检测模型
本文介绍了基于YOLOv8训练滑块验证码缺口检测模型的通用步骤
·
滑块缺口验证码
滑动验证码滑块缺口的位置识别是破解滑块验证码的关键,这里我们尝试使用YOLOV8训练目标检测模型,识别出滑块图片的缺口
验证码示例
模型通过大批量生成随机数据后进行深度网络训练,本身并非针对任何一家验证码厂商而制作,模型使用效果完全靠玄学,可能可以识别,可能不能识别,仅做学习交流使用,如有侵权,请联系本人删除
滑块验证码征集:如果有其他种类的滑块验证码,在评论区留言哦😄
训练步骤
- 采集滑块图片,保留滑块图和缺口背景图
- 打标签,我目前使用labelme打标签
- 标签文件转换
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
"""
- 训练模型
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为训练图片宽高
- 模型效果测试
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” 表示障碍缺口(干扰识别的假缺口)
第一种
原图
预测效果
第二种
原图
预测效果
第三种
原图
预测效果
第四种
原图
识别效果
小结
目前来看三种验证码都能很好的识别,如果有新的验证码种类,可以在评论区留言,之后我会加入到模型训练中
训练结果
已开源,相关链接
详见如下:

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