一个端到端验证码识别结构

以前模拟别人的代码写端到端的验证码识别程序,今天被人问及端到端OCR如何做,竟然想不起来细节了… 再好的记忆里也不如一个烂笔头, 把网络结构保留在这里备忘.

图示

这里写图片描述

代码

class CAPTCHANet(nn.Block):
    def __init__(self,outputNum,verbose = False, **kwargs):
        super(CAPTCHANet,self).__init__(**kwargs)
        self.verbose = verbose
        with self.name_scope():
            layers = []
            layers.append( nn.Conv2D(16, kernel_size = 3, strides = 1, padding = 1, activation='relu') )
            layers.append( nn.MaxPool2D(pool_size = 3, strides = 2) )
            layers.append( nn.Conv2D(32, kernel_size = 3, strides = 1, padding = 1, activation='relu') )
            #layers.append( nn.Conv2D(64, kernel_size = 3, strides = 1, padding = 1, activation='relu') ) 
            layers.append( nn.Dense(256,activation='relu') )

            self.netbody = nn.Sequential()
            for layer in layers:
                self.netbody.add(layer)
            self.netout = nn.Sequential()
            self.netout.add(nn.Dense(outputNum,activation='relu'))
            self.netout.add(nn.Dense(outputNum,activation='relu'))
            self.netout.add(nn.Dense(outputNum,activation='relu'))
            self.netout.add(nn.Dense(outputNum,activation='relu'))
        return
    def forward(self,X):
        bodyout = X
        for i,layer in enumerate(self.netbody):
            bodyout = layer(bodyout)
            if self.verbose:
                print 'bodylayer#',i+1,' shape:',bodyout.shape
        out = []
        for i,layer in enumerate(self.netout):
            tmp =  layer(bodyout) 
            if self.verbose:
                print 'outlayer#',i+1,' shape:',tmp.shape
            out.append(tmp)
        return out
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值