目录
获取训练所需的图片
训练模型
总结与提高
源码下载
如果要过掉点选验证码,首先就要获取目标点选内容的坐标位置,我们可以训练一个yolov5模型来实现这一功能。在本节,我们拿凯格行为验证码来进行演示,验证码图片如下所示。
获取训练所需的图片
编写程序,获取一定数量的图片用作训练集和验证集。笔者这里截取了200张图片用作训练集,20张图片用作验证集。代码如下所示:
# crawl.py
"""获取点选验证码背景,用于yolov5训练"""
from playwright.sync_api import sync_playwright
import os
class Spider:
def __init__(self):
self.url = "https://www.kgcaptcha.com/demo/content?t=4"
self.page = None
def start(self):
with sync_playwright() as p:
self.init_page(p)
if not os.path.exists("./images"):
os.mkdir("./images")
for i in range(0, 200):
self.get_bg_img(i)
self.refresh_captcha()
def init_page(self, p):
"""初始化浏览器,获取page对象"""
browser = p.chromium.launch(headless=False)
self.page = browser.new_page()
self.page.goto(self.url)
def get_bg_img(self, index):
"""截取滑动验证码背景图片"""
print(f"正在获取第{index+1}张滑动验证码背景图片")
self.page.wait_for_timeout(1000)
# 获取验证码截图
self.page.locator("#KgDisplay").screenshot(path=f"./images/{index}.png")
def refresh_captcha(self):
"""刷新验证码"""
print("刷新验证码")
# 找到刷新按钮并点击
# 按钮若点击失败,则刷新网页
try:
self.page.locator("//div[@class='line2']/a").click(timeout=1000)
except:
self.page.reload()
self.page.wait_for_timeout(1000)
if __name__ == "__main__":
spider = Spider()
spider.start()
该程序使用playwright打开了凯格行为验证码的网页,然后截取了验证码图片,获取图片之后就点击刷新按钮,再刷新之后再次截取,一直循环直到获取到足够数量的图片。
训练模型
1. 使用labelimg对各个图片进行标注,笔者把标签名称都设置成了“text”。
2. 整理数据,新建一个datasets文件夹,然后再在datasets文件夹中新建images和labels文件夹并将图片和标注结果放在对应文件夹中。 训练集有200张,验证集有20张。
├─images # 图片
│ ├─train # 训练集图片
│ └─val # 验证集图片
└─labels # 标签(txt)
├─train # 训练集标签
└─val # 验证集标签
3. 在yolov5/data路径下新建train.yaml文件,输入以下内容。
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: C:/Users/louis/Desktop/ClickCaptcha/dataset # dataset root dir
train: images/train # train images (relative to 'path') 118287 images
val: images/val # val images (relative to 'path') 5000 images
test:
# Classes
names:
0: text
4. 下载训练权重文件,在本教程中我们使用yolov5s.pt。
5. 使用以下命令训练数据(先cd到yolov5文件夹下),训练结果还是可以的。
python train.py --weights yolov5s.pt --batch-size=5 --epochs 200 --data=./data/train.yaml
验证集识别结果:
总结与提高
用yolov5识别目标点选内容的准确率很高,不过我们其实还可以再增加一些训练图片以此提高准确度。现在已经有了点选内容的位置,我们最后的任务就是让程序按照正确的顺序点击,我们将在下一节中探讨这个问题。
源码下载
笔者把训练图片以及yolov5的源码和模型也已经放入,使用项目前先安装yolov5/requirements.txt中的库。文章来源:https://www.toymoban.com/news/detail-428320.html
链接:https://pan.baidu.com/s/1a_jvd6_28qzxTWe81wVkbg
提取码:vplw文章来源地址https://www.toymoban.com/news/detail-428320.html
到了这里,关于用yolov5识别点选验证码中的目标内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!