硕士论文网第2020-11-23期,本期硕士论文写作指导老师为大家分享一篇
计算机论文文章《用于计算机视觉的领域特定语言的设计和实现》,供大家在写论文时进行参考。
本篇论文是一篇计算机硕士论文范文,计算机视觉软件或应用模型的开发通常会涵盖多个不同的领域。因此,如何全面、细致的设计和构建CV领域元模型就尤为关键。CV领域元模型的设计与构建的结果不仅对CV领域元模型的质量有着直接的影响,而且其又是CVDSL语法规则定义、代码生成器设计实现等后续工作的基础。如果构建的CV领域元模型存在任何漏洞,那么后续的工作就会在错误的基础上进行,这将使整个工具的设计变得毫无价值。
第1章 绪论
本章首先介绍了设计实现面向计算机视觉的领域特定语言的研究背景与意义,然后介绍了目前国内外对于计算机视觉和领域特定语言的研宄现状及发展趋势,并进行了总结,接着对本文的研宄内容进行了概括和介绍,最后梳理了本文整体的组织结构。
1.1 研宄背景及意义
视觉是人的感官之一,是人观察世界的重要方式之一,对于视觉的研宄人类一直都在进行。据统计,人类所获取的外界信息,有四分之三来自于眼睛,通过眼睛可以简单、直观的获取到信息,能极好地掌握真实的外界事物。在如今的信息化时代,外界所拥有的信息量异常巨大,若仅仅依赖人的肉眼来获取这些信息量是不太现实的。为了更高效且方便地利用外界的视觉图像信息,诸多学者投入了很多精力在计算机视觉领域,让计算机拥有可媲美人类的视觉能力,使其能够去理解、观察和学习外界的视觉信息是这些学者毕生的追求。纵览计算机视觉技术的发展历程,其基本理论的形成最早是在20世纪50年代后期,那段时期人类开始逐渐深入地去研宄二维图像,模式识别理论开始应用于实践当中;20世纪末,计算机视觉有了更系统性的理论,Marr教授等相关研究成员是主要代表人物,其对计算机视觉领域的研宄做出了突出贡献;21世纪初,计算机软件技术和硬件技术的崛起,使得计算机有能力去快速处理数据量极大的图形,计算机视觉相关技术得到了蓬勃发展,其逐渐转变为一门融合数字图像、人工智能等综合型门类学科。近些年来,计算机视觉更是得到了飞速发展,大量高效、实用的AI算子被设计了出来,传统CV算子库也得到了更新和完善,更多基于计算机视觉的软件和系统己被广泛使用。领域特定语言(Domain Specific Language, DSL)是一种表达性有限且仅针对某一个特定领域的计算机编程语言,它也是一种领域工程技术。与通用编程语言的差别在于其更加的抽象,语法更加的简单,仅提供该领域所需要的功能。在特定的领域范围内,相比于通用编程语言,领域特定语言对于某些开发者意图的描述会更加的清晰,更加的简洁,更加的系统,使得开发的过程更加的简便和轻松,从而可以提高开发效率。伴随着各种技术的变革和人们对于某些领域需求的变化,各类的领域特定语言层出不穷。以下是一些比较常见的领域特定语言:专用于数据库查询的SQL语言,专用于网页搭建的HTML语言,专用于排版的LaTex,专用于描述样式表的CSS,专用于领域特定语言开发的Xtend语言、ANTLR语言,专用于软件系统构造的MAKE语言、ANT语言等。近些年随着人工智能的快速发展,一些面向机器学习、深度学习的领域特定语言也相继面世,例如OptiML、〇660〇31等。在工业生产和科研工作中,有时需使用大量计算机视觉算子,例如OpenCV算子、Halccm算子以及其它商业算子,同时也在越来越多的使用基于机器学习和深度学习的入算子。这些算子间的组合调用较为困难,难以集成。例如在完成某商品包装的缺陷检测时,比较好的方式是先做A滤波再做亚像素的边缘提取,A滤波算子只有OpenCV提供,而亚像素的边缘提取只有某商业算子库提供,所以需要跨算子库调用两种算子。虽然大部分算子库均提供C++接口,用C++可以完成这些任务,但编码过于繁琐,而且一些计算机视觉开发人员并非计算机背景出身,因此他们更愿意使用一种更抽象、简单的语言。在CV应用模型的开发过程中,领域专家与编码人员之间的沟通往往并不是特别顺利,极大的影响着开发的进度。因此,面向计算机视觉的领域特定语言是极具研究价值和商业价值的。本论文旨在设计实现一种DSL,其基本思想是为现有的常用计算机视觉算子库和AI算子提供简单、一致的语法,从而整合使用这些算子,以提供统一的开发平台。这样一种DSL减少了编码时间和编码量,能让领域工作者将更多的时间和精力放在算法设计上。本论文采用模型驱动开发的方式进行DSL的设计与实现,这极大增强了DSL的可扩展性。任何具有开发经验的使用者都可通过添加或者修改领域元模型和相关语法规则、代码映射规则等来实现对DSL功能的扩展。
1.2 研宄现状及发展趋势
数十年来,人类一致都在研宄一个倍感兴趣的课题:让机器拥有与人类相媲美的视觉能力。计算机视觉领域的研究目的就在于寻找仿效人类视觉系统的方法,从而使得机器能够自动完成需要视觉能力的工作。然而,相比较于其他形式的二进制信息,机器理解和解释图像的过程要更加复杂,因为其需要处理和分析更大量的多维数据。由此可见开发拥有视觉能力的人工智能系统的难度是巨大的。但是,伴随着Deep Learning和Neural Network技术的蓬勃发展,人们看到了计算机视觉未来的曙光,让机器拥有像人类一样的视觉系统似乎并不是一件遥不可及的事情了。事实上,计算机视觉系统相比较于人类的视觉系统,其从图像中识别模式的能力更加强大。例如,在医疗卫生方向,医护人员的模式识别能力远不及计算机视觉技术。目前己有一种人工智能,其阅读CT扫描图像的速度要比放射科医生快得多,且更加准确,这将极大提升检测神经系统疾病的效率和准确率。随着人工智能技术和计算机视觉技术在各行各业的普遍应用,人们对其的期待值也越来越高,计算机视觉领域的未来也充满了挑战和希望。如今的计算机视觉技术,其核心动力来自于深度学习算法。深度学习算法中会使用卷积神经网络(CNN)来获取图像的特征,并进行分析,从而很好的理解图像。这些神经网络的训练,需要数以千计甚至数以万计的图像作为样本,这样算法才可以分解图像中的内容,提取需要的特征,从而有助于算法理解图像中包含的所有内容。这些神经网络对于图像的扫描是逐像素的,从而识别出图像的模式并加以记忆。如果是监督学习,神经网络还可记忆每个图像的理想输出,或者通过图像特征和轮廓扫描对图像分割的组件进行分类。当计算机视觉系统读取更多的图像时,这些数据都可作为参考数据并被存储。训练迭代的次数越多,计算机视觉系统就能提供更加准确的输出。如今计算机视觉技术的常用领域主要包括以下这些:图像匹配。计算机视觉技术最被大众所熟知的应用就是图像匹配了。很多社交媒体平台,例如Instagram、Facebook等,都使用深度学习算法来识别平台用户所发布的一些图片,从而进一步实现图片搜索的功能。随着这些算法日益成熟,其不仅可以对各种动物、植物及无生命体进行准确的区分,还可以依据某些特征(例如眼睛、脸部等)识别出不同的个体。图像字幕技术也是图片匹配的一个典型应用场景,其可以为需要从图像中获取文字信息的领域提供支持。脸部识别和生物特征识别。脸部识别技术常用于个人身份的识别,类似于个人的身份密码,其可以确保人们的财产或其它信息的安全。生物特征扫描系统(例如虹膜识别、指纹识别等)也常常用于确定个人身份信息,在安全领域的使用较为广泛。该技术的一个典型应用场景就是智能手机中的人脸识别功能。在银行或者其他商业的安全系统中,脸部识别技术的使用率非常高,常使用这项技术来验证人的身份,方便且准确。深度学习算法还可以从一个人的指纹中识别出每个个体特有的模式,指纹识别技术可以应用于很多高安全的领域,如核电站、研宄所等。人类的视网膜、虹膜也可以作为人特有身份证明,计算机视觉技术可以识别出不同人的视网膜、虹膜中的细微差距,从而对不同个体进行准确的标识和区分。这些基于生物个体本身所特有的特征的安全系统将极大提高人们的财产和有效信息的安全性。无人驾驶。无人驾驶汽车必须具备视觉能力,从而识别出路上的各种标识、红绿灯、行人及其它任何可能存在安全隐患的障碍物。这种车辆首先得配备传感器、雷达、摄像头等设备,从而获取周围的环境信息,然后依据计算机视觉系统和其它人工智能系统,去识别环境中的各种事物,确定自己的安全方位,从而做出安全的决策。计算机视觉技术可以帮助车辆识别路标,遵守交通规则,从而提高无人驾驶车辆的安全性。同时计算机视觉系统还可以对车辆应该选择哪条道路做出决策,例如当在马路上遇到突发事故或者遇到救护车需要避让时,计算机视觉系统都可以帮助车辆做出正确且及时的决策。
第2章 问题说明及相关工作
本章首先介绍了设计实现CVDSL所需了解的一些预备知识及相关问题说明,然后介绍了两种现有的面向计算机视觉的领域特定语言,阐明了其特点及优缺点,最后给出了本章的内容总结。
2.1 相关知识概述
本节将对设计实现面向计算机视觉的领域特定语言过程中所涉及到的知识进行一个简要的介绍。本小节将对计算机视觉基本处理流程和两个计算机视觉算子库(〇PenCV和Halcon)进行一个简要的介绍。对于任何一个计算 机视觉的应用模型而言,其完成相应任务的基本流程如图2.1所示,主要分为以下六步:准备input data,也就是图像。对图片进行预处理:一般包括变化图片的色域(如RGB、BGR、HSV等),图片去噪,图片大小的归一化处理等等。依据目标确定需要完成的任务,依据具体任务内容设计或选择相应的算法。根据要处理的目标,提取相应特征,并依据需求对所提取的特征进行选依据提取的特征和图像数据,来完成新图片的某种属性预测,例如图片匹配或识别等。最后输出预测结果。由此可知,一个计算机视觉的应用模型在完成相应任务时,是一步一步顺序完成的,这是计算机视觉应用模型的一个特点。在使用某种编程语言(如C++)去实现一个计算机视觉的应用模型时,具体代码中往往主要包括对某些算子库的引用、基础语法语句(如循环语句、分支语句、赋值语句等)以及对算子库中具体算子的调用。了解计算机视觉基本处理流程对于如何去构建CV领域元模型和CVDSL语法规则是十分重要的。目前在工业界和学术界,OpenCV和Halcon是两个被使用最频繁的计算机视觉算子库,因为它们所提供的算子功能较为完备,能满足大部分开发者的需求。并且这两个算子库均提供C++接口,而C++目前是计算机视觉领域最主要的开发语言。本文最后生成的目标语言是C++语言,在构建CV领域元模型和定义CVDSL语法规则时,也主要是对OpenCV和Halcon中600个常用算子进行建模和调用语法的定义。近年来,OpenCV在人脸识别、人脸检测、人脸追踪、目标检测、特定目标追踪、入侵检测等领域大显身手。而这些仅仅是其在计算机视觉领域很小的一部分应用。如今OpenCV开源库的开发和维护,受到了全世界各大科研机构及各大公司研究人员的鼎力支持。相信在未来的发展中,OpenCV的功能将会愈发强大。
2.2 问题说明
本节将对CVDSL所要解决的问题及设计实现CVDSL过程中需要面临的问题进行一个详细的说明。目前,在工业界和科研工作中,人们对计算机视觉技术的依赖越来越大,对计算机视觉应用模型的要求也越来越高。如今在计算机视觉应用模型的开发过程中,人们面临的问题也越来越多。现有的面向计算机视觉的领域特定语言大多是商业化的,不仅存在昂贵的费用问题,并且对于一些要求较高的场景,其底层的算子库己不能满足开发需求。本文设计实现CVDSL,主要是为了解决在计算机视觉应用模型开发过程中面临的以下问题:在任何项目的开发过程中,领域专家和编码人员之间的沟通问题,往往决定着项目完成的效率和效果。在工业界和科研工作中,C++—直是计算机视觉应用模型开发的主要语言。大部分领域专家擅长于算法的设计,对于C++编码问题可能并不擅长。因此从算法到具体编码实现的过程中,编码人员与领域专家的沟通就显得尤为重要。在CV领域范围内,相比于通用编程语言,CVDSL对于某些开发者意图的描述会更加的清晰,更加的简洁,更加的系统,使得开发的过程更加的简便和轻松,从而可以提高开发效率。CVDSL语法简单抽象,具有计算机视觉应用模型编码经验的程序员可快速上手,即使无编码经验但具有CV领域知识的使用者也可较快熟悉CVDSL的使用。因此这将极大改善领域专家和编码人员之间的沟通问题。在使用C++语言进行计算机视觉应用模型的开发时,尤其是当需要调用多个不同的计算机视觉算子库时,语法复杂性问题会大大增加编码的难度,降低开发人员的工作效率。CVDSL基于计算机视觉领域的特点,定义了简单抽象的语法,同时对于一些经常捆绑使用的算子进行了合并。开发人员可以使用CVDSL设计实现想要的计算机视觉应用模型,代码生成器会自动将CVDSL代码转换成对应的C++代码,且在转换过程中,会自动补全部分代码,如变量声明、函数库的调用等,这一过程对开发人员是完全透明的。当使用C++语言调用多个计算机视觉算子库进行计算机视觉应用模型的开发时,需要面对不同算子库的算子调用语法不一致的问题,这就需要开发人员去了解每一个算子库中的算子语法调用格式,所需要的算子库越多,语法调用格式就越多,编码难度也就越大。CVDSL在进行算子建模和语法规则定义时,统一了底层不同算子库中的算子调用语法。开发人员不必再去考虑不同算子库中算子调用语法不一致的问题,代码生成器会依据定义的转换规则,将不同算子库的算子转换成对应的C++调用格式,这一过程对开发人员是完全透明的。当使用C++语言调用多个计算机视觉算子库进行计算机视觉应用模型的开发时,需要面对不同算子库中定义的数据类型不一致的问题。例如,OpenCV中的图像类型用Mat表示,Halcon中的图像类型用HImage表示,且OpenCV中图像存储方式是BGR,Halcon中图像存储方式是RGB,因此在使用C++进行编码时需要进行数据类型的转换。不仅仅是图像类型,对于一些其它数据类型,不同算子库中的定义也不相同。CVDSL在进行数据类型建模和语法规则定义时,统一了底层算子库中的数据类型。开发人员使用CVDSL进行开发时,很多情况下,无需定义数据类型和声明变量,由代码生成器依据开发人员调用的算子,自动生成相应的变量声明,数据类型也会依据算子所属的算子库进行判别,这一过程对开发人员是完全透明的。同时CVDSL还定义了数据类型转换的算子,开发人员也可以显式的进行类型转换。当使用C++语言调用多个计算机视觉算子库进行计算机视觉应用模型的开发时,如何选择性能更优的算子也是一个棘手的问题。性能更优的算子会让计算机视觉应用模型具有更加强大的功能。当多个算子库中某些算子功能类似时,开发人员需要进行对比测试才能决定选择使用某个算子,费时费力。CVDSL底层算子库中的算子取自OpenCV和Halcon算子库,在构建CV领域元模型前,己有多位CV领域工作者对这些算子进行了性能筛选(以算子的功能和性能作为筛选指标,即对于每个算子库中特有的算子均直接选用,而对于功能相同的算子,则依据其性能择优选择,如果两个算子功能相似,且性能比较各有优劣,则在建模时定义为不同的算子),因此算子的名称在构建元模型时就己经确定。在定义语法规则时,对所有算子是按照统一的语法格式进行语法定义的,所以对于使用者来说这些算子相当于来自同一个算子库(CVDSL算子库)。
第3章 CV领域元模型的构建及CVDSL语法规则定义
3.1 CV领域元模型的构建
3.2 CVDSL语法规则定义
3.3 本章小结
第4章 CVDSL语法检查器及代码生成器的设计与实现
4.1 CVDSL语法检査器的设计与实现
4.2 CVDSL代码生成器的设计与实现
4.3 本章小结
第5章 CVDSL的相关实验及评估
5.1 功能性测试
5.2 相关实验.
5.3 基于FQAD对CVDSL的评估
5.4 CVDSL与其它面向CV的DSL的对比
5.5 本章小结
第6章 总结
本章主要是对全文的内容进行了一个全面性的总结。首先对本文的工作进行了概述,然后介绍了本文的贡献和创新之处,最后对本文存在的不足之处进行了探讨,并给出了进一步工作的规划。近些年来,计算机视觉得到了飞速发展,大量高效、实用的CV算子被设计了出来,传统CV算子库也得到了更新和完善,更多基于计算机视觉的软件和系统已被广泛使用。随着人们对CV应用模型更高的性能需求,单个计算机视觉算子库已无法满足开发需求,多算子库的混合编程己逐渐成为一种较为有效的开发方式。目前在工业界和科研工作中,C++仍是构建CV应用模型的主要语言之一,C++的语法较为复杂,尤其当涉及到多算子库混合编程时,还需要面临不同算子库的调用语法不一致、数据类型不统一等问题。因此,如何整合常用算子库、提供一个统一的CV应用模型开发平台成为了一个极具挑战性和富有研宄价值的问题。因此,本文在OpenCV算子库和Halcon算子库的基础上,构建了面向计算机视觉的领域特定语言一一CVDSL。本文主要工作总结如下:本文对计算机视觉、领域特定语言的背景,国内外的研宄现状,及设计实现面向计算机视觉的领域特定语言的意义做了详细介绍,并对开发过程中所用到的相关知识框架做了简单的介绍,对CVDSL所要解决的问题及开发过程中需要面临的问题也进行了详细说明。相信这些内容可以帮助读者更好的理解CVDSL具体设计实现部分的知识。CV领域元模型是设计实现CVDSL的基础。在多名领域工作者的帮助下,本文分析了CV领域应用模型的特点,提取了CV领域的元元模型,并依据元对象机制,由这些元元模型构建了CV领域元模型。CV领域元模型包括了对基础语法的建模和对算子的建模,本文对建模方法、建模工具及建模结果进行了详细介绍。在CV领域元模型映射的基础上,本文定义了CVDSL的语法规则。语法规则的定义分为三大部分:1)基础语法规则定义;如循环语句、分支语句等基础控制语句语法的定义。2)算子调用语法规则定义;本文规定了算子语法的通用格式,对每一个算子都进行了语法定义,即每一个算子都有特定的关键词。3)新数据类型定义。CVDSL的开发基于Xtend语言,其内置的数据类型有限,无法满足计算机视觉应用模型的开发需求,因此需要依据需求自定义新的数据类型。本文基于模型驱动开发,构建了CV领域元模型,在元模型的基础上定义了CVDSL语法规则,设计实现了CVDSL语法检査器和代码生成器,取得了一定的成果。但依然存在许多可以进行改进和扩展的工作:因为工作量和工作时间的原因,本文所设计实现的CVDSL语言,底层的算子库中仅包含600个常用CV算子(其中400个取自OpenCV算子库,200个取自Halcon算子库)。这些算子能满足一些基本的CV应用模型的开发需求,对于更髙性能要求的CV应用模型,底层算子库中的算子就稍显不足了。随着计算机视觉技术的发展,出现的性能更优的CV算子也越来越多(仅Halcon算子库目前已有近2000个CV算子),因此为满足更多人的开发需求,对CVDSL的算子库进行扩充是十分重要的。目前,CVDSL的语法检査器仅支持规定的语法检査项进行检查。未来,当CVDSL支持的算子更多,功能更加强大时,现有的语法检査器将会无法满足开发人员的需求。因此扩充CVDSL语法检查器的语法检查项也是十分重要和富有研宄价值的。目前CVDSL的代码调试完全依赖于C++编译器,只能由代码生成器将CVDSL代码转换成C++代码,再使用C++编译器编译、运行生成的C++代码。因此设计实现DSL级的调试框架是十分关键的,因为这将更近一步加强CVDSL的易用性,提高使用者的工作效率。目前对于DSL级调试框架的研发已有完整思路,其核心思想是记录DSL与生成的GPL间的映射关系,将DSL的调试信息映射到GPL调试器上,并将调试结果再从GPL调试器映射回DSL调试框架上,即底层仍使用C++调试器,上层开发新的调试界面,中间层进行调试信息和调试指令的映射。由于工作量和工作时间原因,这部分工作尚未完成,未来这将是进一步工作的重点。
该论文为收费论文,请扫描二维码添加客服人员购买全文。
以上论文内容是由
硕士论文网为您提供的关于《用于计算机视觉的领域特定语言的设计和实现》的内容,如需查看更多硕士毕业论文范文,查找硕士论文、博士论文、研究生论文参考资料,欢迎访问硕士论文网计算机论文栏目。