# DataMaker **Repository Path**: m1014395102/data-maker ## Basic Information - **Project Name**: DataMaker - **Description**: 字符数据集制作工具 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-08-31 - **Last Updated**: 2022-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DataMaker ## 介绍 字符数据集制作工具 ### 使用说明 ### 一、制作数据集 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/232743_471a3379_7953539.jpeg "clip_image002.jpg") ​ 图1.1 单字符制作页面 #### 1.1进入单字符制作标签页 如果路径为空将无法使用下方按钮 #### 1.2创建工程 工程名称输入自定义文件夹名称,通过右方按钮选择工程所在父目录路径,点击创建按钮会提示创建成功 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/232804_0c47aa5a_7953539.png "clip_image003.png") ​ 图1.2 创建工程 创建成功后关闭当前窗口,返回上级窗口 #### 1.3单字符制作 首先点击“打开文件”,选择待制作原始图片,此时会在界面上显示 点击“画框”,此时鼠标可在图片上截取感兴趣区域 点击“裁剪”,会在左下角显示截取后区域的黑白二值图,在上方文字框输入标签名称,下方选择二值化阈值,阈值调整至仅包含字符不包含背景即可,每调整一次点击一次“裁剪”观察效果 点击“保存”,将裁剪得到的二值图保存至文件夹./data/chartemplate, 注意: 1.标签区分大小写,以ascii码为标准保存至模板文件夹chartemplate。除此之外增加了特殊字符空格,对应保存到“None”文件夹,可为后续生成数据集时增加干扰,增强数据。 2.标签不能为多字符,例如“abc”,“123”等,不能是中文字符,目前只支持ascii码对应十进制数33-126的字符(空格是自定义类型) 3.保存后的字符模板为png格式的透明图,如果以其它方式(画图)得到的其它格式的图片(jpg,bmp)将不会去背景仅保留字符像素点。 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/232831_53bed015_7953539.jpeg "clip_image005.jpg") ​ 图1.3 字符制作 至此,单字符制作完毕 #### 1.4数据生成 进入数据生成标签页,设置所需参数 点击“选择背景图”,可以在上下控件中同时显示背景图 左下角对类别标签的增删改后需点击“保存”至txt,也可直接点击“导入”导入已存储了类别的txt文件 右下角“图片名称”自定义设置生成文件名,防止生成的数据重名 点击“生成”,会自动创建result文件夹,生成数据 注意: 1.本软件未提供背景图制作工具,可用“画图”、“photoshop”等软件自行获取背景图 2.在选择背景图后可在上方图片中鼠标左键点击获取当前像素坐标点,以设置生成数据时初始坐标点 3.如果设置字符数量超出背景图范围,会默认按图片的最大上限制作 4.chartemplate文件夹下的图片都会进行生成,请不要添加多余文件。切记:把想要的字符模板放在该文件夹下 5.第一步中获取的None文件夹也可进行数据生成,例如“-”或者空格等其它字符,只要没有放在对应ascii码命名的文件夹下都可加入数据生成,生成时会对这些图片不进行标注,不影响训练和识别结果。 6.类别文件除新建时以外尽量不进行插入和删除操作,如果有新的类别加入在尾部添加即可,否则易造成标签错乱 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/232900_247e14e4_7953539.jpeg "clip_image007.jpg") ​ 图1.4 数据生成 ### 二、训练 返回主界面,点击训练按钮,进入训练界面 #### 1.1参数设置 首先制作yaml文件 包含以下四个属性: train和val:设置数据集文件夹位置,只需设置图片的文件夹即可,程序内会自动寻找 nc:类别数量 names:类别列表 注意:每个属性的冒号后面有空格,nc和names要与生成的数据标签严格对应,此处易出错 images文件夹同一级的labels文件夹(labels文件名不可修改,images文件名可修改) 数据集文件夹分布如下: ![img](file:///C:\Users\MJW\AppData\Local\Temp\msohtmlclip1\01\clip_image008.png) ​ 图2.1 文件夹分布 Images文件夹下需要图片和标签,而labels只需要标签即可 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/233037_36d7723b_7953539.png "clip_image009.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/233004_4e67783d_7953539.png "clip_image010.png") ​ 图2.2 images文件夹(左)和labels文件夹(右)文件分布 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/233048_b4f9a728_7953539.jpeg "clip_image012.jpg") ​ 图2.3 yaml文件内容 如果需要从头训练,则不需要选择“权重路径”,上方按钮选择“从头训练”,反之选择“继续训练”,选择权重文件.pt “训练工程名称”:设置保存训练结果文件夹名,便于区分不同类型权重。 Epoch数:训练数量,设置100到200即可,需观察训练曲线 Batch大小:越大越好,根据GPU性能决定,通常设置为4,若报错out of memory需减小 图片尺寸:固定640即可 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/233059_851a2339_7953539.png "clip_image013.png") ​ 图2.4 训练参数设置 训练结束时软件阻塞,无法进行其它操作,可在控制台观察训练进度或者在runs文件夹下查找最新的训练结果,result.png即为训练结果,曲线越平缓训练效果越好,如果已经很平缓可直接关闭界面,提前终止。 训练结果保存在runs下的自命名“训练工程名称”对应的文件夹的weights文件夹内,只需使用last.pt即可 注意: 1.主要是包含了数据类别和数据位置的yaml文件编写易出错,再次强调需要严格按照yaml规范编写 2.即使继续训练也应该把epoch数设置在50以上,训练太少会导致检测的分数太低 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/233113_bfea04b3_7953539.png "clip_image014.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/233125_8a248538_7953539.png "clip_image015.png") ​ 图2.5 训练结果文件夹以及训练结果 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0831/233137_defab359_7953539.jpeg "clip_image017.jpg") ​ 图2.6 训练过程