ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

sudoku-solver数据集制备指南:如何构建1万张数字图像数据集并掌握3种数据增强技巧

sudoku-solver数据集制备指南:如何构建1万张数字图像数据集并掌握3种数据增强技巧 sudoku-solver数据集制备指南如何构建1万张数字图像数据集并掌握3种数据增强技巧【免费下载链接】sudoku-solverSmart solution to solve sudoku in VR项目地址: https://gitcode.com/gh_mirrors/su/sudoku-solversudoku-solver是一个能在 VR 中实时识别并求解数独的开源项目其核心是一个基于 CNN 的数字识别模型。本文将带你完整复现它的数据集制备流程从采集原始数独图片出发一步步构建出1 万张数字图像数据集并掌握项目中落地的3 种数据增强技巧。最终你将得到一个精度超过 99.5% 的my_model.h5数字分类模型。为什么数独求解器需要 1 万张数字图像数据集数独求解分为三步定位棋盘 → 识别数字 → 求解填色。其中识别数字这一步完全依赖一个卷积神经网络CNN而 CNN 的表现取决于喂给它的数字图像数据集。项目作者用真实拍摄的数独报纸照片作为原始素材每张图里包含大量印刷体数字为了让模型在真实场景倾斜、模糊、光照不均下依然稳定作者手工准备了约 1 万张数字图像并施加数据增强最终训练精度达到99.5% 以上。这就是我们要复现的目标数据集。数据集目录结构按数字分文件夹一个规范的图像分类数据集最重要的是目录即标签。sudoku-solver 的数据集采用每个数字一个文件夹的组织方式DataSet/Mine/ ├── 1/ # 数字 1 的所有图片 ├── 2/ ├── ... ├── 9/ ├── N/ # 特殊类别对应第 10 个标签 └── data.names # 逐行记录类别名供脚本读取几个关键约定图片规格所有数字图会被统一缩放为28×28 灰度图与经典 MNIST 对齐便于喂给 CNN。类别清单data.names文件逐行列出类别名脚本通过 read_file_classes() 读取保证标签与文件夹严格对应。文件重命名采集阶段可用 script_rename.py 将图片批量重命名为规整的001.jpg、002.jpg序列避免乱序。 目录即标签是图像分类数据集最省心也最不易出错的设计。文件夹名就是标签几乎零配置。一键生成训练数据CSV 与 Pickle 两条路线项目提供了两套数据准备脚本你可以根据训练方式任选其一。路线一生成 MNIST 风格 CSVdataset_preparation_pandas.py 会遍历所有数字文件夹把每张图读成灰度、缩放为 28×28 后展平成 784 维向量连同标签一起写入 CSVcreate_csv()→ 生成minst_train_test.csvlabel 784 个 pixel 列seperate_dataset()→ 按0.85 / 0.15比例把每个文件夹拆成_train/_test子目录create_csv_seperated()→ 生成分离后的minst_train.csv与minst_test.csv路线二生成快速加载的 Pickleclassification_preparation.py 中的create_pickle()会把所有图片读入内存、缩放、打乱顺序再打包成mnist_numeric.pickle。相比 CSVPickle 在训练时加载更快适合反复迭代实验。 两条路线最终都得到图像张量 标签差别只在存储格式。新手建议先用 CSV 路线直观理解熟练后切到 Pickle 提速。3 种数据增强技巧详解数据量不够、场景太单一数据增强Data Augmentation是一鱼多吃的经典手段。sudoku-solver 实际落地了3 种技巧全部围绕让模型见多识广真实拍摄的棋盘往往存在透视畸变和角度偏差这正是增强的用武之地技巧 1几何变换增强旋转、缩放、平移在 train_cnn_pandas.py 中通过 Keras 的ImageDataGenerator配置rotation_range20随机旋转 ±20°zoom_range[0.9, 1.2]随机缩放 0.9~1.2 倍width_shift_range0.2/height_shift_range0.07水平、垂直随机平移同时 imgaug 侧的iaa.Affine(scale(1, 1.1))也贡献了轻微缩放。几何变换能显著提升模型对倾斜、远近、位置偏移的鲁棒性。技巧 2椒盐噪声增强iaa.SaltAndPepper(0.05)会给图像叠加 5% 的椒盐噪声模拟拍照噪点、扫描瑕疵。这一步让模型学会带噪声的数字也是同一个数字对真实相机输入尤其有用。技巧 3训练时在线动态增强项目并没有把增强结果提前存盘而是用datagen.flow()fit_generator()在训练循环中实时生成增强样本见 train_cnn_pandas.py。好处是零额外存储1 万张原始图每轮训练都能变出成千上万张新图永不重复每个 epoch 的扰动都不同有效防止过拟合。✅ 小结几何变换 噪声扰动 在线动态生成三者叠加正是从 1 万张原始图放大出更强模型的关键。从图像到特征数字如何被切出来数据集的原料来自数独棋盘。项目的提取流水线如下预处理增强高频 → 霍夫变换找线 → 框出棋盘 → 切出单个数字切出的每个数字再统一缩放到 28×28就成为了数据集中的一个样本。预处理参数如自适应阈值block_size_grid、均值mean_sub_grid集中在 settings.py 中方便你按需微调。训练与保存模型my_model.h5数据就绪后train_cnn_pandas.py 会搭建一个轻量 CNN两组卷积块32 通道 → 64 通道 全连接层256 单元用RMSprop优化器训练并配合ReduceLROnPlateau自动衰减学习率。训练完成后模型保存为 model/my_model.h5即可被求解主程序直接加载使用。数据集制备清单Checklist步骤做什么对应文件1采集数独照片切出数字提取流水线2按数字分文件夹 写data.names目录结构3批量重命名图片script_rename.py4生成 CSV 或 Pickledataset_preparation_pandas.py / classification_preparation.py5配置 3 种数据增强train_cnn_pandas.py6训练并保存my_model.h5model/my_model.h5按照这份清单你也能从零搭建出一个精度 99.5% 的数独数字识别数据集与模型。【免费下载链接】sudoku-solverSmart solution to solve sudoku in VR项目地址: https://gitcode.com/gh_mirrors/su/sudoku-solver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表