lumina37 / rotate-captcha-crack

CNN预测图片旋转角✨可用于破解旋转验证码
The Unlicense
310 stars 89 forks source link

咨询一下怎么指定一些特定的图片 #31

Open 838514984 opened 5 months ago

838514984 commented 5 months ago

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

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

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

我按照上面的要求,放了一些图片在文件夹里面,也在代码里面指定了路径,最后还是运行不起来,咨询下对图片的名称啊啥的有其他要求吗,谢谢大佬。

lumina37 commented 5 months ago

我这里没说清楚,如果要适配别的数据集,比如假设你的数据集里全是可用的jpg图片,那么把

https://github.com/Starry-OvO/rotate-captcha-crack/blob/f6df38d5748a71686c052ea299bec7d0593f5d3a/train_RotNetR.py#L30

改成

img_paths = list(dataset_root.glob('*.png'))

就行

总得来说,只要输入的img_paths是一个图片路径组成的序列就行

838514984 commented 4 months ago

我这里没说清楚,如果要适配别的数据集,比如假设你的数据集里全是可用的jpg图片,那么把

https://github.com/Starry-OvO/rotate-captcha-crack/blob/f6df38d5748a71686c052ea299bec7d0593f5d3a/train_RotNetR.py#L30

改成

img_paths = list(dataset_root.glob('*.png'))

就行

总得来说,只要输入的img_paths是一个图片路径组成的序列就行

大佬,我是jpg格式,img_paths = list(dataset_root.glob('.png')),这里应该改成img_paths = list(dataset_root.glob('.jpg'))吧~

但是还是报错呢,提示: File "C:\Users\admin\rotate-captcha-crack\train_RotNetR.py", line 35, in train_dataset = train_img_paths | path_to_tensor | Rotator() | DEFAULT_NORM | labelling | tuple TypeError: unsupported operand type(s) for |: 'list' and 'function'

能再帮忙看一下嘛,感谢

lumina37 commented 4 months ago

好久没有我自己都忘了怎么用的了,这个问题应该是我漏了用SequenceRoot包装导致不支持管道运算符

开头加一行

from rotate_captcha_crack.dataset.pipeline import SequenceRoot

然后把取图片的那一行改成

img_paths = SequenceRoot(list(dataset_root.glob('*.jpg')))

应该就可以了

838514984 commented 4 months ago

好久没有我自己都忘了怎么用的了,这个问题应该是我漏了用SequenceRoot包装导致不支持管道运算符

开头加一行

from rotate_captcha_crack.dataset.pipeline import SequenceRoot

然后把取图片的那一行改成

img_paths = SequenceRoot(list(dataset_root.glob('*.jpg')))

应该就可以了

大佬,好像droplast不能为true,true的时候报错,false的时候貌似可以跑起来,跑起来之后等他自己运行结束就可以了吗 报错信息

lumina37 commented 4 months ago

呃这个可能是因为你的图片数量不够用导致全都被drop掉了,改成false也不是不行,但数据量少的话效果可能不会太好

838514984 commented 4 months ago

呃这个可能是因为你的图片数量不够用导致全都被drop掉了,改成false也不是不行,但数据量少的话效果可能不会太好

效果确实不大好,想请教下大佬,现在验证码的图片是固定的十几张图片然后每次一张随机旋转度数拿来验证,问一下这种情况用什么方法比较好啊,用现有的模型正确率不是很高,有没有好的方法

lumina37 commented 4 months ago

暴力一点就脱库然后每转5°角计算一个dhash,输入图像算dhash后做向量搜索就可以了

838514984 commented 4 months ago

暴力一点就脱库然后每转5°角计算一个dhash,输入图像算dhash后做向量搜索就可以了

大佬不好意思,这个我有点不懂,我原本想是能不能把每个图片从0旋转到360像你说的每5度存一张,然后角度标记在文件名上,但是我看代码里面的数据集,标记好像没有跟角度相关的。 数据集处理应该是这里吧,请教一下应该怎么做呢,十分感谢。 1

lumina37 commented 4 months ago

我这个旋转的实现跟管道机制是强耦合的,可能不是太好用哦。如果是暴力枚举的话不如自己写