中文 | English
CNN预测图片旋转角度,可用于破解旋转验证码。
测试效果:
本仓库实现了三类模型:
名称 | Backbone | 跨域测试误差(越小越好) | 参数量 | MACs |
---|---|---|---|---|
RotNet | ResNet50 | 75.6512° | 24.246M | 4.09G |
RotNetR | yolo11n-cls | 15.1818° | 18.117M | 3.18G |
RotNet
为d4nst/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
- 安装额外依赖
使用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