美文网首页
CV学习笔记(十九):数据集拼接生成

CV学习笔记(十九):数据集拼接生成

作者: 云时之间 | 来源:发表于2020-05-12 13:26 被阅读0次

    上一次使用了text_renderer尝试生成类似于银行卡的数据,但是实际下来效果并不好,我分析了一下原因:

    ①:text_renderer输出的背景和真实银行卡图片有很大的差异

    ②:大多数银行卡采用的是突出的字体,text_renderer很难去模拟

    分析出以上的问题后,现在的重点开始转换成如何去近似的模拟银行卡数据集,最好的方法就是使用真实的银行卡卡号片段来拼接成数据。

    一边说代码,一边捋顺思路:

    一:准备数据

    首先准备了大概50张的银行卡卡号片段的真实图片,尽量保证每张图片的长度为3-4位,为什么分为3-4位?分析了大多数的银行卡后,发现一个规律:

    信用卡卡号:0000 0000 0000 0000

    储蓄卡卡号:0000 0000 0000 0000 000

    我们用CTPN检测的时候,往往会一段一段的检测,然后拼接起来,这种效果理论上会更好准备的数据如下:

    图片的分辨率180*46

    现在分析代码:

    第一步:选择生成数量,读取图片

    这部分注释很清楚,不再赘述

    二:裁剪图片,拼接图片

    这部分是整个程序之中的关键,我绘制了一个图,结合图来说一下

    因为准备的数据集是3-4个字符一张图,DenseNet的输入长度为10时比较合适(具体为什么还没搞清楚),因此拼接的图片字符长度也是10个字符:读取图片

    这里用到cut_image函数对image3进行裁剪:

    裁剪前后对比:

    对图片进行拼接:

    拼接后效果:

    三:数据增强

    因为DenseNet的输入为280*32的图像,并且为减少计算,需要将图像转换为灰度图像

    转换为灰度图像后,这里需要使用ImageDataGenerator类,简单的说ImageDataGenerator是keras.processing.image模块里的图片生成器,每次喂进去一个batch_size的数据,然后对这个批次的数据进行样本增强,用来扩充样本数据集的大小,增强模型的泛化能力,更模拟真实情况,比如旋转,缩放,对比度转换等等。

    四:划分训练集和测试集

    我们将训练集和测试集按照8:2的比例进行划分

    运行,数据生成完毕

    相关文章

      网友评论

          本文标题:CV学习笔记(十九):数据集拼接生成

          本文链接:https://www.haomeiwen.com/subject/dqdbnhtx.html