Skip to content

Latest commit

 

History

History
161 lines (100 loc) · 4.2 KB

README_zh-cn.md

File metadata and controls

161 lines (100 loc) · 4.2 KB

Rotate-Captcha-Crack

中文 | English

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

测试效果:

test_result

本仓库实现了三类模型:

名称 Backbone 跨域测试误差(越小越好) 参数量 MACs
RotNet ResNet50 53.4684° 24.246M 4.09G
RotNetR RegNet_Y_3_2GF 6.5922° 18.117M 3.18G

RotNetd4nst/RotNet的PyTorch实现。RotNetR仅在RotNet的基础上将backbone替换为RegNet_Y_3_2GF,并将分类数减少至128。其在COCO 2017 (Unlabeled) 数据集上训练128个epoch(耗时3.4小时)得到的平均预测误差为7.1818°

跨域测试使用COCO 2017 (Unlabeled) 数据集作为训练集,百度验证码作为测试集(感谢@xiangbei1997)。

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

体验已有模型

准备环境

  • 内存大小不少于16G的CUDA设备(如显存不足请酌减batch size)

  • 确保你的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>=0.5.3作为包管理工具。如果你已经安装了uv,请执行以下命令:

uv sync

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

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

或者,如果你喜欢直接使用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。

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

uv run test_captcha.py

打开./debug.jpg查看结果。

如果你没有安装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

相关文章

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