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