当前位置: 首页 > 科技观察

Excel疯子?用于计算机视觉的细胞:人脸检测、OCR都很容易

时间:2023-03-15 23:06:18 科技观察

什么是计算机视觉?太专业了,一步解雇?在普通人眼里,计算机视觉是只有软件开发者才能涉足的领域,需要很多专业的框架,普通人只能看。但是GitHub上的一个项目似乎颠覆了我们的认知。你知道Excel的基础知识吗?可以上网查公式吗?你有基本的数学理解吗?OK,如果你能做到以上几点,你也可以上手计算机视觉项目了。图1:将图像转换为由Excel单元格表示的灰度图像。可见,只要细胞的细粒度足够高,就可以存储足够多的图像信息。具体来说,在这个项目中,作者尝试在Excel中实现示例算法,以帮助我们学习计算机视觉的基础知识。为此,他使用了大量只有一行的Excel公式。作者说,在这个项目中,很容易使用Excel进行人脸检测和霍夫变换,而且不依赖任何脚本和第三方插件。下面是一些使用Excel的计算机视觉任务。首先,我们有一个样本图像。这是护照。如图所示,Excel的算法可以实现照片人像的检测(使用传统的人工算法)。同样,这张图片也可以用Excel进行转换,然后找到边缘和线条的特征。最后,Excel还可以进行OCR操作。首先,手动分割图片,找到相关的图片文字,然后进行OCR。本项目不要求你事先具备计算机视觉的背景知识,但需要你了解MicrosoftExcel的基本操作,能够阅读Excel文档或上网搜索你需要使用的公式的相关解释。对于后者,推荐使用Exceljet。此外,您还需要具备一些数学知识:如果您不了解加权平均值,可能很难继续下去。掌握偏微分是有帮助的,但不是必需的。项目中使用的大多数复杂数学概念都是特征值。Excel如何计算图像数据?乍一看,将Excel用于计算机视觉似乎有点神奇。但其实原理很简单:本教程利用了Excel强大的单元格计算能力,只需将图像的像素数据转换成单元格(如下图所示),然后进行计算即可。我们知道每个单元格都可以表示一个值,那么多个单元格可以表示成一个矩阵吗?对于示例文件的屏幕截图(示例图片的一部分),您可以看到Excel单元格代表图像的灰度。另一方面,我们可以很方便地使用Excel来计算单元格数据。那么积分是不是很像矩阵计算呢?这样就可以很容易地计算出不同图像位置所代表的特征。自然是方便完成下游计算机视觉的任务,无论是传统算法还是机器学习。但是如何将图像导入Excel?作者提供了一种方法:使用CSV。您可以通过多种方式将RGB图像转换为像素数据,例如使用程序:https://alvinalexander.com/blog/post/java/getting-rgb-values-for-each-pixel-in-image-using-java-bufferedi将图像的像素转换成CSV后,可以用Excel读取。项目指南项目所需的关键资料都可以在“下载”部分找到。这些资料都带有注释,通俗易懂,可以循序渐进地学习。软件要求这个项目是在Excel2016上创建的,应该也能在其他版本上打开(目前在Excel2007和ExcelforMac上测试过)。此外,虽然这些文件可以在LibreOffice(经测试为6.4.0.3(x64))上打开,但它们速度极慢且可能无法使用。它尚未在ApacheOpenOffice上进行测试。相关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中以这种方式显示彩色图像,你会怎么做?这组作者说,在三个基本颜色通道中,绿色通道对亮度的影响最大。理论上,图像将首先转换为灰度,即计算其亮度,为简洁起见,在教程中省略了这一点。彩色图片的表示见问题6。问题3:护照上有水印的人脸为什么检测不到?作者使用一种流行的人脸检测算法,仅使用三个Haar-like特征和两个步骤。该算法是根据蒙娜丽莎的图像手工制作的(示例)。在实践中,机器学习可以学习数以千计的此类特征来准确检测人脸。问题四:OCR例子中如何选择mask和orientation?对于文档OCR(与场景文本识别相对),文档通常在识别文档中的字符之前被拉直。因此,人物一般都是直立的。在示例中,作者使用单个神经元来识别大写字母“E”。神经网络利用多层神经元来识别所有感兴趣的字符。然后神经网络输出出现在输入中的字符。需要注意的是,组合神经元在识别每个字符的过程中会共享一些神经元。问题5:OCR方法在不同字体上的效果如何?例如,作者使用单个卷积神经元来识别大写字母“E”。真实系统通常使用神经网络(不仅仅是单个神经元)并且在不同的字体和语言中表现良好。它是如何实现的?作者使用单个神经元同时扫描图像和识别字母。通常,扫描不同长度的文本需要通过不同的方法分别完成。一旦文本的每个字符被隔离,字符就会重新缩放到固定大小,然后使用神经网络来识别字母。手写识别比较困难。当笔划数据是时间的函数时(例如识别触摸屏上的书写输入),可获得最佳结果。此外,即使示例中单个神经元的权重是手工制作的,它们实际上并不是使用训练算法学习的。在实际训练中,单个神经元的效果也比demo展示的要好。问题六:作者是怎么想到用Excel做计算机视觉的?最初,作者正在向亚马逊内部员工教授计算机视觉教程,但他们并不熟悉这个主题。因此,作者通过展示图像本质上是二维数字数组来教授计算机视觉的基础知识,并希望使用Excel对其进行演示。作者花了大约7个小时创建了第一个功能齐全的版本,不包括人脸检测和文本识别。随后的版本得到了进一步的改进。从那时起,作者创建了以下在Excel中显示图像的视频作品或教程(带链接):Excel电子表格中的图像(包括颜色):https://www.youtube.com/watch?v=UBX2QQHlQ_IExcel光线追踪:https://www.youtube.com/watch?v=m28jJ7CMp8A&feature=emb_logoExcel3D引擎:https://www.youtube.com/watch?v=bFOL9kantXAExcel3D图形:https://www.gamasutra.com/view/feature/131968/microsoft_excel_revolutionary_3d_.php问题7:是否有针对计算机视觉的交互式开发环境?由于Matlab内置或工具箱中有许多计算机视觉函数,因此常用于计算机视觉任务。其中,“imshow”函数可以直接将数组数据以图像的形式显示出来。此外,基于Python和Notebooks的工具也很受欢迎。项目作者项目作者有两个,AlokGovil和合作者VenkataramananSubramanian,他们都是亚马逊的总工程师。其中,AlokGovil是一名全栈技术架构师,分别拥有德里科技大学和南加州大学的学士和硕士学位。毕业后先后在飞利浦美国研究院、高通等公司工作,现为亚马逊总工程师。阿洛克戈维尔。合作者VenkataramananSubramanian拥有印度马德拉斯大学的学士学位,以及班加罗尔国际信息技术学院的兼职硕士学位。毕业后先后供职于HexawareTechnologies和OracleCorporation,2011年加入Amazon任总工程师至今。