Skip to content

Latest commit

 

History

History
163 lines (101 loc) · 4.41 KB

README_zh-cn.md

File metadata and controls

163 lines (101 loc) · 4.41 KB

Rotate-Captcha-Crack

中文 | English

CNN预测图片旋转角度,可用于破解旋转验证码。

测试效果:

test_result

本仓库实现了三类模型:

名称 Backbone 跨域测试误差(越小越好) 参数量 MACs
RotNet ResNet50 75.6512° 24.246M 4.09G
RotNetR yolo11n-cls 15.1818° 18.117M 3.18G

RotNetd4nst/RotNet的PyTorch实现。RotNetR仅在RotNet的基础上将backbone替换为yolo11s-cls,并将分类数减少至128。其在谷歌街景数据集上训练64个epoch(耗时3小时)得到的平均预测误差为15.1818°

跨域测试使用谷歌街景/Landscape-Dataset作为训练集,百度验证码作为测试集(感谢@xiangbei1997)。

演示用到的百度验证码图片来自RotateCaptchaBreak

体验已有模型

准备环境

  • 内存大小不少于8G的计算设备

  • 确保你的Python版本>=3.9,<3.13

  • 确保你的PyTorch版本>=2.0

  • 拉取代码

git clone https://github.com/lumina37/rotate-captcha-crack.git --depth 1
cd ./rotate-captcha-crack
  • 安装依赖

强烈推荐使用uv作为包管理工具。如果你已经安装了uv,请执行以下命令:

uv pip install .

由于uv的包依赖解析逻辑可能存在问题,因此不推荐使用uv sync命令安装依赖。

或者,如果你喜欢用conda:以下步骤会在项目文件夹下创建一个虚拟环境。你也可以使用具名环境。

conda create -p .conda
conda activate ./.conda
conda install matplotlib tqdm tomli
conda install pytorch torchvision pytorch-cuda=12.4 ultralytics -c pytorch -c nvidia -c conda-forge

或者,如果你喜欢直接使用pip

pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124
pip install .

下载预训练模型

下载Release中的压缩包并解压到./models文件夹下。

文件目录结构类似./models/RotNetR/230228_20_07_25_000/best.pth

本项目仍处于beta阶段,模型名称会频繁发生变更,因此出现任何FileNotFoundError请先尝试用git回退到对应的tag。

输入一个验证码图像并查看旋转效果

如果你的系统没有GUI,尝试把debug方法从显示图像改成保存图像。

uv run test_captcha.py

如果你没有安装uv的话,请使用:

python test_captcha.py

使用http服务端

  • 安装额外依赖

使用uv

uv pip install .[server]

或者使用conda

conda install aiohttp

或者使用pip

pip install .[server]
  • 运行服务端

使用uv

uv run server.py

如果你没有安装uv的话,请使用:

python server.py
  • 另开一命令行窗口发送图像

使用curl:

curl -X POST --data-binary @test.jpg http://127.0.0.1:4396

或使用Windows PowerShell:

irm -Uri http://127.0.0.1:4396 -Method Post -InFile test.jpg

训练新模型

准备数据集

  • 我这里直接扒的谷歌街景Landscape-Dataset,你也可以自己收集一些风景照并放到一个文件夹里,图像没有尺寸要求

  • train.py里配置dataset_root变量指向装有图片的文件夹

  • 不需要手动标注,dataset会在读取图片的同时自动完成矩形裁剪、缩放旋转等工作

训练

uv run train_RotNetR.py

在测试集上验证模型

uv run test_RotNetR.py

相关文章

吾爱破解 - 简单聊聊旋转验证码攻防