Excel狂魔?单元格做计算机视觉:人脸检测、OCR都不在话下

机器之心 道

参与:一鸣、张倩、杜伟

计算机视觉是什么?过于专业,一步劝退?在普通人看来,计算机视觉是软件开发者才能涉足的领域,需要用到很多专业的框架,普通人只能围观。但 GitHub 上的一个项目似乎颠覆了我们的认知。

Excel 基本操作会吧?上 搜索公式会吧?基本的数学理解能力有吧?OK,如果以上你都能做到,你也能上手计算机视觉项目了。

图 1:将一张图像转换为 Excel 单元格表示的灰度图像。可以看到,只要单元格细粒度足够高,就可以存储足够的图像信息。

以下是使用 Excel 进行的一些计算机视觉任务。首先,我们有一个示例图像。这是一个护照。如图所示,Excel 的算法可以实现对照片人像的检测(使用传统手工算法)。

同样,这幅图像也可以被 Excel 转换,然后找到边和线的特征。

最后,Excel 还可以进行 OCR 操作。首先对图像进行手工分割,找到相关的图像文本,然后进行 OCR 即可。

这个项目不要求你提前掌握计算机视觉背景知识,但需要了解 Microsoft Excel 基础操作,会阅读 Excel 文档或上 搜索需要用到的公式的相关解释。对于后者,推荐使用 Exceljet。

此外,你还需要具备一些数学理解能力:如果理解不了加权平均数,可能很难继续学下去。掌握偏微分很有帮助,但不是硬性要求。项目中用到的复杂数学概念大多数是特征值。

Excel 怎么计算图像数据?

使用 Excel 做计算机视觉,乍一听显得有点魔幻。但其实原理很简单:这个教程利用了 Excel 强大的单元格计算能力,只要将图像的像素数据转换为单元格(如下图所示),然后计算即可。我们知道每个单元格都可以表示一个值,那么很多个单元格是不是就可以表示成矩阵了?

对示例文件的截图(样本图片局部),可以看到 Excel 单元格表示了图像的灰度。

而另一方面,我们可以很方便地利用 Excel 计算单元格的数据。那么整合起来,是不是和矩阵计算很相似了?这样,不同图像位置表示的特征也就很容易被计算出来。自然也就方便完成下游计算机视觉的任务了,不管是传统算法也好,还是机器学习也好。

你可以用很多种方式转换 RGB 图像到像素点数据,如使用一个程序等:

https://alvinalexander.com/blog/post/java/getting-rgb-values-for-each-pixel-in-image-using-java-bufferedi

当图像的像素转换为 CSV 后,使用 Excel 读取即可。

项目指南

项目需要的关键材料都可以在「Downloads」部分找到。这些材料都带有注释,通俗易懂,可以按部就班,一步一步学。

软件要求

这个项目是在 Excel 2016 上创建的,在其他版本上应该也能打开(目前已经在 Excel 2007 和 Mac 的 Excel 上进行了测试)。

此外,虽然这些文件能在 LibreOffice 上打开(测试版本是 6.4.0.3 (x64)),但速度极慢,可以说没办法用。目前还没有在 Apache OpenOffice 上进行测试。

相关 Excel 公式选项

在打开项目中的 Excel 文件之前,请先把 Excel 的「公式」→「计算选项」调为「手动」,因为有些计算(尤其是霍夫变换)非常耗时。然后根据需要手动触发重算。

此外,不要勾选「保存工作簿前重新计算」,否则 Excel 将在每次保存文件时重新计算所有公式。

注意:这个项目做完后,记得把设置改回来。

熟悉 Excel 中 R1C1 公式引用样式的人或者喜欢冒险的人,应该尝试通过查看 Excel 选项来切换到 R1C1 引用样式。

参考下面的屏幕截图,勾选 R1C1 引用样式对应的复选框来启用这个选项。如此一来,我们可以把公式从「D5」类型的格式更改为「R[-1]C[2]」这样的相对样式,使其更接近编程语言并有助于理解。

教程目录和代码文件

下图所示为本项目的相关教程目录和项目文件,总共 50MB,大家可以前往 GitHub 下载。

这一项目分为五个部分:

1. 计算机视觉 Excel 基础

2. 边和线

3. 关键点和描述算子

4. 人脸检测

5. 文本识别(OCR)

这些项目都有相关说明和代码,非常详细。

常见问题和解答

问题 1:这些技术是否可被深度学习替代?

这些技术依然是相关的。尽管神经 络已经替代了所有复杂的计算机视觉问题,特别是那些传统技术没有解决的问题。但是在简单的计算上,传统方法更快,而且计算效率更高。另外,传统方法依然是边缘设备(智能手机、 络客户端)等的首选,虽然已有很多硬件加速的方法。

问题 2:为什么使用图像的绿通道,而不是红或蓝?如果想在 Excel 中用这种方式展示彩色图像要怎么做?

问题 3:护照中带有水印的人脸为什么没被检测到?

问题 4:在 OCR 示例中如何选择 mask 以及方向?

对于文档 OCR(与场景文本识别相反)来说,在识别文档中的字符之前,文档通常先被拉直。所以,字符一般为直立的。

问题 5:OCR 方法在不同字体上的效果如何?

手写识别更加困难。当笔画数据为时间函数(如在触摸屏上识别是写输入)时,能够实现最佳效果。此外,在示例中,即使单个神经元的权重是手工的,实际上也不使用训练算法来学习。在实际训练时,单个神经元的效果也比 demo 展示中的要好。

  • Excel 电子表格中的图像(包括颜色):https://www.youtube.com/watch?v=UBX2QQHlQ_I
  • Excel 光线跟踪:https://www.youtube.com/watch?v=m28jJ7CMp8A&feature=emb_logo
  • Excel 3D 引擎:https://www.youtube.com/watch?v=bFOL9kantXA
  • Excel 3D 图形:https://www.gamasutra.com/view/feature/131968/microsoft_excel_revolutionary_3d_.php
  • 问题 7:是否有计算机视觉的交互式开发者环境?

    由于 Matlab 具有内置或在工具箱中具有很多计算机视觉功能,所以它通常用于计算机视觉任务。其中,「imshow」功能可直接将阵列数据以图像的形式显示出来。此外,基于 Python 和 Notebooks 的工具也很流行。

    其中,Alok Govil 是一位全栈技术架构师,本科和硕士分别毕业于德里技术大学(Delhi Technological University)和美国南加利福尼亚大学。他毕业后曾先后就职于飞利浦美国研究院、高通等公司,现为亚马逊首席工程师。

    Alok Govil。

    参考链接:

    https://news.ycombinator.com/item?id=22357374
    https://github.com/amzn/computer-vision-basics-in-microsoft-excel

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2020年1月14日
    下一篇 2020年1月14日

    相关推荐