[Python] 让AI来解决数独和数独谜题




这应该是本站最好的人工智能资料库

本文由 EasyAI 原创,首发于 CSDN

⌚️ 欢迎点赞 收藏 ⭐留言 如有错误敬请指正!

未来很长,值得我们全力奔赴更美好的生活✋




介绍

一个周末,我和我女儿在一起玩数独游戏。 不管花多少时间, 都没多少空白 (无法解决) 问题。

因此,我想创建一个AI,它可以自动解决数独和无论如何都无法解决的数独问题

使用 Python 制作了从数独图像自动派生答案的 AI (人工智能), 因此做成文章。 作为概述,我们使用 PyTorch 创建的 CNN 进行图像识别,并在获得字符后执行深度优先搜索 (DFS)。

源代码




最终效果

下面, 从数独的照片中可以瞬间得出答案。


[Python] 让AI来解决数独和数独谜题_第1张图片




算法

就目前情况而言

  1. AI 字符识别
  2. 根据获得的字符应用深度优先搜索 (DFS)

它已成为一个两阶段的算法。


[Python] 让AI来解决数独和数独谜题_第2张图片


[Python] 让AI来解决数独和数独谜题_第3张图片

OCR 没有被采用,因为我们想在未来解决手写字符的问题。




改进

在当前的求解方法,深度优先搜索(DFS)中,计算复杂度为O( n ∼ 3 n^\sim3 n3)

感知速度没有什么特别的问题,但是如果使用线性规划,
听说可以用O( n ∼ 2 n^\sim2 n2)来计算,所以打算不时更新一下




困难点

困难点大致分为 3 点, 所以分别介绍一下。

创建您自己的数据集

在数字数据集中搜索时, 只捕获了 MNIST 数据集。 因此,使用 MNIST 数据集进行学习和推论的结果是,字符识别的精度与目标 100% 相去甚远,约为 70%。

[Python] 让AI来解决数独和数独谜题_第4张图片

我们认为,由于实际推断的数字图像不是手写的数字字符,因此有必要自己创建数据集。
用于实际推理的图像示例

[Python] 让AI来解决数独和数独谜题_第5张图片

因此,我们收集了 10 个不同的数字图像,从 0 到 9,每个图像包含 0 到 9 个数字字符。 使用您自己的数据集进行学习和推理的结果是,精度为 90%,目标为 100%。
精度的显著提高是数据集的一个主要问题!

由于数据量小, 使用跟踪转换来变形用于学习的图像。

识别空白和 1

第二个困难是意外的空白和 1 的识别。 因为正确回答率不是100%,所以比较推论结果和正确答案时,推测应该为空的方块为1。

究竟为什么?经过思考,得出了四边黑线可能做错了的结论。 原因是,由于CNN的特点,黑线可能被识别为1。

为了验证真实性,提高准确率,我们在程序中实现了数据增强,在正方形的四个边上随机画黑线。

结果,我们能够将准确率提高到 98%!

也就是说,四边的黑线做错了什么的假设是正确的!

达到 100% 的准确度

100% 的数字识别率对于正确解决数独问题至关重要。
因此ImageNet,我们使用了预训练的权重并设计了一个学习率。顺便说一句,本文ResNet18使用 .

使用的学习率有以下大纲↓

[Python] 让AI来解决数独和数独谜题_第6张图片
之所以选择这样的学习率(WarmUp)是为了有效利用预训练的特征。
因此,初始学习率设置为接近 0 的值。

结果,我们能够达到 100% 的准确率!




总结

这一次,我写了一篇关于可以解决我创建的数独的 AI 的文章。有些任务很难解决,但我很欣慰,我设法成型了!

你可能感兴趣的:(人工智能,python,人工智能,开发语言)