2024AIWIN 手写体 OCR 识别竞赛总结(任务一)

文章讲述了如何改进CRNN模型,采用Swish和BatchNorm技术,以及利用StyleText进行数据增强,以提高模型性能。训练参数和测试流程也被详细说明。
摘要由CSDN通过智能技术生成

执行完就可以得到存储class的txt文件。打开char_std_5990.txt,看到有21个类。

image-20220118152118479

改进模型

===============================================================

crnn的卷积部分类似VGG,我对模型的改进主要有一下几个方面:

1、加入激活函数Swish。

2、加入BatchNorm。

3、加入SE注意力机制。

4、适当加深模型。

代码如下:

self.cnn = nn.Sequential(

nn.Conv2d(nc, 64, 3, 1, 1), Swish(), nn.BatchNorm2d(64),

nn.MaxPool2d(2, 2), # 64x16x50

nn.Conv2d(64, 128, 3, 1, 1), Swish(), nn.BatchNorm2d(128),

nn.MaxPool2d(2, 2), # 128x8x25

nn.Conv2d(128, 256, 3, 1, 1), nn.BatchNorm2d(256), Swish(), # 256x8x25

nn.Conv2d(256, 256, 3, 1, 1), nn.BatchNorm2d(256), Swish(), # 256x8x25

SELayer(256, 16),

nn.MaxPool2d((2, 2), (2, 1), (0, 1)), # 256x4x25

nn.Conv2d(256, 512, 3, 1, 1), nn.BatchNorm2d(512), Swish(), # 512x4x25

nn.Conv2d(512, 512, 1), nn.BatchNorm2d(512), Swish(),

nn.Conv2d(512, 512, 3, 1, 1), nn.BatchNorm2d(512), Swish(), # 512x4x25

SELayer(512, 16),

nn.MaxPool2d((2, 2), (2, 1), (0, 1)), # 512x2x25

nn.Conv2d(512, 512, 2, 1, 0), nn.BatchNorm2d(512), Swish()) # 512x1x25

SE和Swish

class SELayer(nn.Module):

def init(self, channel, reduction=16):

super(SELayer, self).init()

self.avg_pool = nn.AdaptiveAvgPool2d(1)

self.fc = nn.Sequential(

nn.Linear(channel, channel // reduction, bias=True),

nn.LeakyReLU(inplace=True),

nn.Linear(channel // reduction, channel, bias=True),

nn.Sigmoid()

)

def forward(self, x):

b, c, _, _ = x.size()

y = self.avg_pool(x).view(b, c)

y = self.fc(y).view(b, c, 1, 1)

return x * y.expand_as(x)

class Swish(nn.Module):

def forward(self, x):

return x * torch.sigmoid(x)

训练


打开train.py ,在训练之前,我们还要调节一下参数。

parser = argparse.ArgumentParser()

parser.add_argument(‘–trainlist’, default=‘train.txt’)

parser.add_argument(‘–vallist’, default=‘val.txt’)

parser.add_argument(‘–workers’, type=int, help=‘number of data loading workers’, default=0)

parser.add_argument(‘–batchSize’, type=int, default=4, help=‘input batch size’)

parser.add_argument(‘–imgH’, type=int, default=32, help=‘the height of the input image to network’)

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值