作者:云时之间
来源:知乎
链接:https://zhuanlan.zhihu.com/p/138733491
编辑:王萌

在上一次我们进行完银行卡卡号定位后,有一个问题在于我们没办法获得很多的银行卡图片来进行训练,比较常规的方法是我们来使用银行卡图片的背景,来生成含有银行卡卡号的数据集来让机器进行训练。在这里我用的是GitHub上的一个开源项目,github.com/Sanster/text,功能很全面,这篇文章将说说如何使用这个开源项目。

署好项目后,直接运行main.py就可以生成默认的参数。

这里默认的参数,在config->default.yaml中可以修改,比如字体的颜色,随机生成的文字,背景,文字的亮暗,以及给图片加噪声,功能很强大,各种数据都很容易伪造。

因为是伪造银行卡,我选择了一些银行卡的背景信息,尽量保证图片中干扰少,但是现在银行卡五花八门,这样的也得考虑到。


现在在银行卡中因为分为储蓄卡和信用卡,储蓄卡大多用的是Barcodesoft 的 Farrington 7B,是图下这种感觉,也有部分银行采用的是黑体和隶书。

而信用卡还有一种压单交易的方式,就是利用信用卡正面突起的信息在压敏单据上压出信息,字体需要突出有锐利,一些银行会采用楷体,不过还是会有很多银行仍使用Farrington 7B。

知道前提这些消息后,我们现在需要对项目的一些参数进行修改,来产生我们所需要的图片

1:进入text_renderer\data\bg,选取你想要的背景(这里我选择的是银行卡背景)

2:进入text_renderer\data\corpus,这里边是你要产生的内容,因为银行卡号都是数字(储蓄卡19位,信用卡16位),删除原来的文件,新建一个这样类型的txt

3:进入parse_args.py,修改一些参数,在parse_args()函数里,我们可以调节产生的图片数量(默认20),产生数字的长度(默认10),因为后续要喂到CRNN中,我这里的尺寸为280*32,需要修改:

这里的chars_file改成eng.txt,因为数字在英文字符中

这里的fonts_list改为eng.txt,是英文字体列表,我们要把刚才上文中所说的字体放到相应的文件夹下

现在修改完了,运行main.py即可:


生成的图片如上所示,但是打开tmp_lable.txt来看:

第一列是文件名,第二列是我们图片的内容,我们模型所需要的数据集格式为:第一列文件名.格式,第二列图片内容。在这里,我们修改下main.py:

这样,我们就得到了符合格式的数据集:

多改改参数,样本多样化一些,训练即可

©著作权归作者所有:来自51CTO博客作者mb5fca0b6a49e47的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. CV学习笔记(二十):数据集拼接生成
  2. CV学习笔记(二十七):Python Base64 格式图片上传
  3. js 急速入门之六(classList,dataset对象,选项卡,一键换肤,图片懒加载,
  4. 无须代码,一键生成微信好友图片墙!
  5. android图片位于文字上方
  6. Android(安卓)自定义字体,字替换为图片
  7. Android(安卓)使用RxJava保存图片到本地、并刷新本地图库
  8. Android实现简单的上一张、下一张图片切换显示
  9. github上Android常用第三方库

随机推荐

  1. Android 4+ WIFI 直连
  2. adb - api -android
  3. Android中的Adapter
  4. Android Build: Tips and Tricks
  5. Pair 了解一下
  6. android 自定义progressbar进度条颜色
  7. Android中通过Intent调用其他应用的方法
  8. Android数据传递相关内容概述
  9. 详解Android广播机制
  10. A20平台增加camera