前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CV学习笔记(十九):数据集拼接生成

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

原创
作者头像
云时之间
修改2020-05-12 14:17:05
6520
修改2020-05-12 14:17:05
举报
文章被收录于专栏:云时之间

上一次使用了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的比例进行划分

运行,数据生成完毕

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档