数据集处理完整过程
1. 拿到数据
处理数据的第一步自然是拿到数据(原始数据)
2. 数据分类
处理原始数据的第一步就是数据分类,我将其分成身份证正面、身份证背面、手持身份证等五个类别,以方便网络训练。因为因为每一次的网络训练都只训练一个部分(类别),在训练网络时不可能直接就让网络识别多种类别的身份证。
当然图片质量参差不齐,下图中其中关于Dim-的文件夹就是存放模糊但跟训练主题相关的图片;Rubbish存放的是完全没有用处的图片。但是,处理数据时不能将看起来对这一次网络训练没用的数据丢掉,尽管这一次没有用,但可能以后会用的上。每一个数据的及其珍贵,我们要尽量实现数据的最大化利用。
3. 标记数据
我们的最后目的是用YOLO-V3网络进行训练(著名且基础的目标检测算法)。网络当然不用我们自己写,用的是Github上的源码。Github源码
在训练网络时,我们需要把源码要检测的物体标记出来,这样网络才能知道你想要去识别什么。此时,我们选择labelImg2作为我们的标注工具。在网上一般都是使用labelImg1进行标注,而两者最大的区别是第二代支持旋转框的使用(最后生成xml的格式不同),而旋转框的使用也确保了我们能对倾斜的图片作更好的标注。虽然最后为了网络需要还要用python将旋转框的xml文件转化为原始框的xml,但是这也是最大化利用数据嘛,说不定以后要用到呢。
这里附上Github上下载labelImg2的教程。LabelImg2
4. 使用数据
处理完数据之后的工作自然是运用。本次数据处理之后,我按照Yolo-V3网络输入的需求,将标记之后的xml进行修改,删减,归一化,最后输入到网络之中产生结果。
数据处理结束