lumina37 / rotate-captcha-crack

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

在torchvision-0.12.0+cu113版本下没有torchvision.models.RegNet_Y_1_6GF_Weights #9

Closed jindameias closed 1 year ago

jindameias commented 1 year ago

在RotationNet类下的这句weights = models.RegNet_Y_1_6GF_Weights.DEFAULT if train else None在torchvision-0.12.0+cu113下找不到,查看源码发现没有对应的RegNet_Y_1_6GF_Weights类,请问你是用的什么版本的torchvision。 python版本是3.8.8

jindameias commented 1 year ago

torch版本是torch-1.11.0+cu113

lumina37 commented 1 year ago

torchvision 0.13好像是引入了一个breaking change 参考0.12->0.13 如果你一定要用0.12训练的话可以尝试把

https://github.com/Starry-OvO/rotate-captcha-crack/blob/a7109255af6492f9b387f17b2d09c2b62a1ce628/rotate_captcha_crack/model.py#L20-L21

改成

self.backbone = models.regnet_y_1_6gf(pretrained=train)

改完之后新版本也是可以用的,但会抛出DeprecationWarning

jindameias commented 1 year ago

感谢回答,我已经升级成torch版本是torch-1.12+cu113,torchvision-0.13+cu113了并且运行正常了,但使用了3000张百度的图片做60个epoch训练,在测试集中效果比较好,角度偏差显示在3°左右,但重新去网站上复制新的几张图下来识别效果却比较差。 我使用的是百度带有阴影的图片,并非如你readme中所示是百度清晰的图片,是否这个网络泛用性其实并不好?

lumina37 commented 1 year ago

鬼影就是一种专门针对CNN的对抗策略了,不好解决。我最近还要准备复试,然后把RotNet用torch复现一下看看效果,最后再来处理这个鬼影的问题

jindameias commented 1 year ago

确实是这样,不过我使用RotNet在google街景的基础上二次训练会达到80%的正确率,期待你能用torch复现后再测试测试。 非常感谢你的及时回复

lumina37 commented 1 year ago

你是用的 https://github.com/d4nst/RotNet 吗?我感觉他给的代码和论文有出入啊,他代码里用的旋转角是360个类,但论文里描述的是用4~8个类效果最好

而且是从第一次commit开始就用360分类了,而不是从4分类或者8分类改过来的 https://github.com/d4nst/RotNet/blob/14c129f9e4c10b3de1b03c8c47f5b359bdb084ed/utils.py#L180-L191

lumina37 commented 1 year ago

而且论文第六页还提到

In our preliminary experiments we found that we get significant improvement when during training we train the network by feeding it all four rotated copies of an image simultaneously instead of each time randomly sampling a single rotation transformation.

意思是在一个batch里同时提供四个旋转方向的图像可以得到更优的结果。但看他仓库的实现就只是随机抽个角度去转,也没有为同一张图片提供多角度的copy

jindameias commented 1 year ago

你是用的 https://github.com/d4nst/RotNet 吗?我感觉他给的代码和论文有出入啊,他代码里用的旋转角是360个类,但论文里描述的是用4~8个类效果最好

而且是从第一次commit开始就用360分类了,而不是从4分类或者8分类改过来的 https://github.com/d4nst/RotNet/blob/14c129f9e4c10b3de1b03c8c47f5b359bdb084ed/utils.py#L180-L191

是的,他的代码和论文不太一样,但是代码可用。 用他的网络仍然会有点问题,之前我只测试了训练集,之后重新拿100张图片测试后也会低一些

lumina37 commented 1 year ago

他的网络有什么问题,我看看能不能改

jindameias commented 1 year ago

不知道,应该也是网络泛化程度不够或者是训练集只有3000张的原因

lumina37 commented 1 year ago

我猜测他的4分类是针对图像内容分类,360分类是针对旋转角分类。我今天用4分类和8分类跑出来效果很差,360分类就比较正常了(和之前一样)

lumina37 commented 1 year ago

emmm,好像论文对应的开源仓库并不是那个RotNet,而是这个 https://github.com/gidariss/FeatureLearningRotNet 难怪对不上

jindameias commented 1 year ago

emmm,好像论文对应的开源仓库并不是那个RotNet,而是这个 https://github.com/gidariss/FeatureLearningRotNet 难怪对不上

这个我没研究过,但是如果还是相似的网络我感觉对于阴影图片效果仍然不好