在探索开发者如何将计算机视觉技术应用于各种问题的同时,也在开发自己的计算机视觉应用。其中一款名为Magic Sudoku的应用甚至赢得了Product Hunt年度增强现实应用奖。另一款应用,BoardBoss,可以完全免费在iPhone应用商店下载。
在这篇文章中,将详细介绍如何将原始图像转化为一个能够改善Boggle游戏玩法的移动应用。BoardBoss是一款改进了经典Boggle游戏的应用。Boggle是一款单词游戏,游戏中会呈现一个由字母组成的网格。玩家需要在一分钟内找出所有可能由相邻字母块组成的单词。一分钟后,根据单词的长度进行计分,得分最高的玩家获胜!
然而,Boggle游戏有一个关键问题:游戏结束后,如果还有玩家没有找到的单词,这些单词就永远不会被知道!这正是BoardBoss发挥作用的地方。BoardBoss是一款智能手机应用,它可以扫描棋盘的状态,识别所有可能的解决方案,并在用户的智能手机上通过增强现实技术叠加这些解决方案。
构建BoardBoss的过程涉及到构建一个计算机视觉模型,该模型能够成功识别任何方向的字母。然后,编写了一个应用程序,使用该模型的输出来寻找可能的单词,并将这些输出叠加在棋盘的状态上。这篇文章将重点介绍构建计算机视觉模型的过程:数据收集、标记、预处理、增强、模型训练和模型导出。
数据收集
Boggle棋盘通常是4x4的字母块,但也可以是5x5甚至6x6。此外,字母块可以是字母表中的任何字母,并且相对于相机位置的任何方向。一些Boggle的变体包括像通配符空间或阻挡器这样的字母块。总的来说,可能有超过30种不同的字母类别!
团队收集了355张图像,主要是来自4x4的单词游戏块。关键的是,由于正在构建一个可以在iPhone 7到iPhone 11上工作的iPhone应用,需要收集每种设备类型的图像,以考虑用户智能手机拍摄的照片质量的差异。此外,目标是在不同的条件下捕捉Boggle棋盘,改变桌面和照明条件。
收集的图像样本,故意包括一些模糊和各种角度的图像。
数据标记
接下来,需要标记359张图像。具体来说,需要标记每个棋盘上的单个单词块——这是一个有点繁琐的任务!更喜欢使用Roboflow Annotate。可以免费创建一个账户,并使用Roboflow Universe中的数据集来标记和注释计算机视觉项目的数据。
在标记过程中,确保标记了立方体的顶部,完全围绕字母进行标记,并尽力标记即使是模糊的示例。知道,用户不一定会让Boggle棋盘完全聚焦,甚至不一定在图像的中心,因此对训练数据反映这一点非常重要。
团队经常难以协调谁标记了什么,否有足够的数据来自希望支持的每种iPhone设备,以及否在标记过程中犯了拼写错误(剧透:确实犯了)。这些是在Roboflow中融入的一些经验:跨团队的无缝数据集管理,以及自动化的注释检查。
总的来说,向图像中添加了7,110个注释!
数据预处理和增强
一旦有了标记的数据,仍然需要将标记的图像转化为模型可以使用的东西。此外,寻求增加数据集中的故意变化,以考虑用户将遇到的不同条件。
因此,编写了一堆Python脚本来调整图像大小为正方形,处理EXIF数据和自动方向,对比图像,并尝试将灰度作为预处理步骤。还尝试了不同的增强技术来增加数据集的变化。比如随机旋转图像,随机裁剪图像,添加图像噪声等等。
勤奋地跟踪哪些数据集似乎能更好地最大化性能,以使用增强技术来产生表现最佳的应用程序。(这确实导致了一堆boggle_dataset_version_2_final_for_real类型的数据集!)
现在,任何人都可以一键尝试数十种预处理和增强技术在他们的版本化数据集上。预处理,增强,生成,瞧!
模型训练和导出
为了创建一个适合移动应用的模型,最初严重依赖于使用CreateML进行模型训练。CreateML是一个随Xcode默认附带的应用程序,用于在图形用户界面中训练适合iPhone的机器学习模型。用户可以轻松地导入他们的数据,进行训练,并得到一个.mlmodel文件,直接放入他们的应用程序中。
一个CreateML项目的例子。
除了——将标记的数据的注释格式(VOC XML)导入到CreateML的JSON格式并不是那么容易的事情。编写了一个脚本来将VOC XML转换为CreateML JSON。再次,这是一项认为分散了核心任务的任务:如果目标是构建一个改进Boggle的移动应用,为什么要花时间编写文件转换工具?这感觉就像一个将PDF转换为Word文档,而不是写作。
这又是融入Roboflow的一个功能:以任何格式(COCO JSON,TensorFlow CSV,YOLO .txt等)导入数据,并将其导出为CreateML JSON或其他任何格式。
在Roboflow中导出为CreateML的数据。
经过一个周末的运行,有了一个认为足够好的CreateML模型(94%的准确率)来发布初始应用程序。
启动BoardBoss
一旦有了工作模型,努力解释模型的输出,并在增强现实中叠加结果。是时候启动了!
在iPad上展示BoardBoss的工作原理。
在ProductHunt上分享了BoardBoss,获得了150个赞,并在接下来的几周内获得了几百次下载。
虽然没有看到BoardBoss像Magic Sudoku那样(在Reddit和Imgur的首页)流行起来,但确实收到了没有预料到的令人兴奋的反馈。例如,加拿大的一个班级将BoardBoss融入他们的小学教育,帮助学生建立词汇:BoardBoss在加拿大推动教育体验。(推文来源)
构建自己的BoardBoss
对计算机视觉在生活各个领域的无限潜力感到鼓舞——从棋盘游戏到动物园之旅,无所不包。
为了支持自己的好奇心和探索,已经在Roboflow Public上开源了构建自己的BoardBoss所需的所有标记数据。
Boggle棋盘目标检测数据集
# 概述已经捕获并注释了流行的棋盘游戏Boggle的照片。图像主要是来自4x4 Boggle的,大约有30张来自大Boggle(5x5)。- 357张图像- 7110个注释字母块这些图像发布给用来训练机器学习模型。# …
Roboflow
在这里采取的步骤可以很容易地用免费工具复制:收集数据,使用Roboflow进行标记,处理Roboflow中的计算机视觉数据,并在CreateML中进行训练。
还开发了一个使用新的Roboflow Mobile iOS SDK的iOS CashCounter应用程序。已经使其易于部署到iOS,并在Roboflow Github和iOS部署功能发布中概述了步骤。