pytorch应用之———纸币识别(二)

参加TinyMind的深度学习纸币识别比赛,预赛在前一章介绍过戳这里。正赛是人民币冠字号编码识别,如下图,在给的测试集上把编码区识别出来,这是我通过yolov3做出来的结果。这里,我把自己的思路代码跟大家分享。


主要思路:自己做训练集,把每一种面值的纸币作为一类并把编码区作为ground truth框起来大概做了1000张标签,利用yolov3训练数据。由于考虑训练集背景单一简单,所以我用yolov3-tiny作网络框架。这样网络参数较小,而且训练效果较好。下面我分几个部分把主要内容跟大家介绍以下。

一.Labelimg标签

我用的是从https://github.com/tzutalin/labelImg中下载的,windows版本。
用起来很方便,里面有voc数据集的格式,也有yolo的格式,还设置了快捷键,裱起来还是很轻松的。

二.网络结构介绍
网络结构使用的是yolov3-tiny,暂时先用的这个试一下效果。yolov3-tiny是yolov3的简化结构,它跟yolov3主要差别在于没有resnet的残差,只有23层。这23层包括5次下采样,2次上采样,2个yolo层。每一yolo层有6个anchor,具体想了解可以参看cfg,这里不赘述。

其实yolov3的网络结构大家可以随意改变,darknet的深度,yolo层的个数,具体卷积的kernel,都可以根据具体的项目背景去做改变,loss还有负样本增强等都可以应用。不过所有的前提是必须理解整个代码,理解每一个函数的意义并会去修改使用它。后面我可能会想办法提升整个网络的MPA,如果有时间的话。

三.代码
其实,我知道大家最想了解的是代码如何编写的,我使用的是pytorch版本的yolov3,我前面的文章具体讲解过所有train和infer的具体过程,有兴趣的同学可以戳这里。想要具体代码的可以留言给我,如果人多的话,我就上传到github分享给大家。

四.结果
pytorch应用之———纸币识别(二)_第1张图片

你可能感兴趣的:(深度学习)