V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
muchrooms
V2EX  ›  分享发现

试着识别了一波知乎那个奇怪的汉字验证码, 正确率高的惊人...

  •  2
     
  •   muchrooms · 2017-04-24 23:01:03 +08:00 · 11081 次点击
    这是一个创建于 2771 天前的主题,其中的信息可能已经有所发展或是发生改变。
    作为一个垃圾大学平时吃饱了撑得闲的没什么研究的研究生, 自学了一点概率论和机器学习

    偶然上知乎时发现这个验证码很骚气
    https://raw.githubusercontent.com/muchrooms/zheye/master/zhihu.png
    https://www.zhihu.com/captcha.gif?type=login&lang=cn

    就手贱识别了一下
    发现那个效果还不错..
    https://github.com/muchrooms/zheye 附在线测试地址

    快毕业要找工作了, 来讨个星星 _(:3 」∠)_
    学弱求轻拍, 小水管求不黑

    顺便听取一下各位前辈在学习方面有什么批评建议, 给小弟指条明路
    第 1 条附言  ·  2017-04-25 12:27:39 +08:00
    好多人都点了收藏呀 ╮( ̄▽ ̄)╭
    21 条回复    2018-03-01 11:36:42 +08:00
    trys1
        1
    trys1  
       2017-04-24 23:29:02 +08:00 via Android   ❤️ 1
    已加星,请付款
    zhihaofans
        2
    zhihaofans  
       2017-04-24 23:33:44 +08:00 via iPhone
    已 star ,明天试试
    davidzhanwork
        3
    davidzhanwork  
       2017-04-24 23:39:34 +08:00 via Android
    很不错~ 都是对的

    已 star
    muchrooms
        4
    muchrooms  
    OP
       2017-04-24 23:53:05 +08:00
    @trys1 好的王老板, 还是按一个一块五是吧
    Sunnyyoung
        5
    Sunnyyoung  
       2017-04-24 23:55:53 +08:00 via iPhone
    Cool
    muchrooms
        6
    muchrooms  
    OP
       2017-04-24 23:58:33 +08:00
    ypw
        7
    ypw  
       2017-04-25 00:10:10 +08:00 via iPhone
    你的模型还有很多可以改进的地方,比如卷积层可以加多一些,卷积核大小用 3x3 而不是 5x5 ,用多个卷积卷积池化结构逐步降维,去掉全连接层,只保留分类器, Dropout 只放在最后一个分类器前面等。你的模型由于降维不够,导致了很严重的过拟合,所以验证集只有 90%的准确率。

    我也写过一篇验证码识别的文章,可以识别数字和字母: https://zhuanlan.zhihu.com/p/26078299
    muchrooms
        8
    muchrooms  
    OP
       2017-04-25 00:50:24 +08:00
    @ypw 没有用 dropout 后来换了 batch norm, 以求加速. 卷积核大小的确导致了过拟合, 但我自己生成的图像和原图还不是完全一样, 其实最开始用 LeNet 实验的时候验证集都能到 99%, 但是用在真实的验证码上效果却有些糟糕.. 所以当初只是想更泛化一点.. 卷积层就无奈了, 笔记本性能渣, 真的不能太多层了, 我这个破 diaosiNet 这都训练了一晚上 2333

    谢谢你的建议, 我后续再改良一下 )
    yuanchao
        9
    yuanchao  
       2017-04-25 09:44:29 +08:00
    6666 已 star
    muchrooms
        10
    muchrooms  
    OP
       2017-04-25 11:32:56 +08:00
    @yuanchao 哈哈哈 谢谢
    Jackeriss
        11
    Jackeriss  
       2017-04-25 13:08:47 +08:00
    说句题外话, Github 建议上传个头像。
    ccw55
        12
    ccw55  
       2017-04-25 16:29:14 +08:00
    我也想入门一下机器学习,楼主能指导指导小弟吗
    muchrooms
        13
    muchrooms  
    OP
       2017-04-25 17:46:34 +08:00
    @Jackeriss ok 因为看着像小号吗...
    @ccw55 我也算个小学生, 水平有限能力一般, 一起努力学呗~
    J0022ZjV7055oN64
        14
    J0022ZjV7055oN64  
       2017-04-26 10:41:59 +08:00   ❤️ 1
    之前知乎的汉字 以及 字母文字验证码都有 bug
    https://www.youtube.com/embed/4V5f9n78l9Q
    muchrooms
        15
    muchrooms  
    OP
       2017-04-26 22:11:22 +08:00   ❤️ 1
    @yansyuei 666 啊
    xiaoxiaowm
        16
    xiaoxiaowm  
       2017-07-10 11:10:34 +08:00
    @muchrooms 你的两分类问题,程序刚开始学习的时候是不是基本是从识别率 50%,然后通过一个版本一个版本的学习慢慢成绩才上去的?我弄了一个识别验证码的,有 50 多个分类,学习的时候,正确率总是在百分之二左右,是不是要经过 N 多版本的学习才行?
    muchrooms
        17
    muchrooms  
    OP
       2017-07-10 11:41:02 +08:00
    @xiaoxiaowm 你好,开始准确率(accuracy)就是 50%。因为一开始参数会随机初始化,导致模型按照平均分布瞎猜,所以 n 分类的初始准确率是 1/n。每一次 epoch 会提高训练集的成绩,但不一定提高测试集准确率。

    50 多个分类不太容易吧,模型会复杂很多。多画个几图看看,有技巧
    xiaoxiaowm
        18
    xiaoxiaowm  
       2017-07-10 12:59:52 +08:00
    @muchrooms 我看到你的模型里有 zheyeV3.keras,zheyeV5.keras,这几个版本,是不是训练一次把模型保存下来,下次再 load 进来,再做训练,就是另一个版本了
    muchrooms
        19
    muchrooms  
    OP
       2017-07-10 14:40:14 +08:00
    @xiaoxiaowm 也可以, 但我没这么搞
    xiaoxiaowm
        20
    xiaoxiaowm  
       2018-03-01 10:47:10 +08:00
    @muchrooms 你好,原来向你请教过问题,后来自己弄那个验证码也没有研究出来,你方便加你 QQ 或者是微信交流一下吗?算是找你当老师了,付点费也行,我的 qq 是 642070630,微信是 15010226280
    xiaoxiaowm
        21
    xiaoxiaowm  
       2018-03-01 11:36:42 +08:00
    @xiaoxiaowm 不是多少钱,只是表示自己学习的诚心
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   918 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:21 · PVG 05:21 · LAX 13:21 · JFK 16:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.