第1章 项目入门阶段一
1.1 最初的思考
人工智能学院和专业建设需要系统化的理论和实战体系。随着《人工智能导论》《人工智能基础》等书籍的出现,人工智能已经形成了较完整的理论研究体系。目前还缺少一本人工智能实战进阶导引类图书,能帮助学生理解人工智能实战进阶的通用法则,并为其项目实战提供系统化指导。
视觉是智能的基石。因此笔者选择人工智能领域当前最具挑战性的世界难题——遮挡人脸识别,通过对这一难题的分级探索和尝试,解释人工智能实战进阶法则,将其探索和尝试过程植入现有的计算机视觉体系,从而形成系统而完整的、理论与实战并存的章节架构,并借助深度学习、宽度学习引入具有通用性的算法思想,进一步拓展人工智能实战进阶法则的普遍适用性。视频图像的采集是人工智能“看世界”的第一步。遮挡人脸识别项目的实施,需要先架构一个视频监控界面,以便进行人脸采集和识别。因此,本章将从视频图像智能采集入手,完成项目入门阶段的准备工作。
视频图像采集是图像处理的重要技术模块,如果无法将外界的模拟信号转换成可处理的数字信号,图像处理将无法继续进行。而机器认知和计算机视觉与图像处理有很大的关联。计算机视觉能够为机器认知提供极大的帮助,其主要目的就是为机器提供人类的视觉,让其可以更好地服务于人类。从20世纪60年代起,英国和美国等率先推出了基于计算机视觉的图像处理系统;而国内对于视频图像处理的发展仍处于开始阶段,当时的清华大学已经有了初步的成果并推出了自己研究的图像采集与处理系统。自20世纪80年代开始,视频采集已经用卡片代替了此前的机箱式系统,仅需将该卡片插入计算机即可使用,同期国内科研院所也开发出自己的采集卡。从20世纪90年代开始,外设部件互连标准(Peripheral Component Interconnect,PCI)、数字信号处理器(Digital Signal Processing,DSP)和现场可编程门阵列(Field Programmable Gate Array,FPGA)陆续出现并逐渐占领市场,图像处理技术也获得了快速发展。
在这个大数据与互联网迅速发展的时代,信息技术及信息产业在生活中产生了深远的影响,已成为日常生活不可或缺的一部分,视频图像也成为获取信息的重要手段。随着计算机软硬件的迅猛发展,视频图像处理技术因其灵活性高、处理精度高、复现性好、应用面广等优点,已经广泛应用于气象、医疗、工业生产、遥感、军事、航天航空等领域。而且在上述领域的迅速发展,也带动了与其相关的输入/输出设备制造技术的发展,已经为人类创造了巨大的经济效益和社会效益。
目前,人工智能项目入门阶段常使用MATLAB和Python两种编程语言。其中MATLAB丰富强大的工具箱更适合人工智能初学者入门使用。MATLAB是由美国MathWorks公司推出的一款非线性数学计算软件,是一种集合了数学算法的开发、数据可视化、数据分析和非线性数值计算的高级科学技术数值计算的语言和交互式的环境。MATLAB适合现代数学和信息科技的应用,是非常好使用的数值计算软件,并且一直在不断改进,也得到了所有其他非线性的编程应用语言(包括C、C++、Java等)的支持,逐渐发展成为最强大的数值计算软件之一。MATLAB有助于为电子工程设计应用和人工智能科学技术研究提供完整的解决方案,它包含了非线性数值的分析、矩阵计算科学数据的可视化以及非线性数值计算动态系统的建模和数据仿真等许多强大的数值计算功能,实战优势明显。
1.编程环境
MATLAB由一整套的工具函数组成,极大地方便了用户在系统中的使用与调用。这些研究工具主要包括MATLAB桌面和常用命令窗口、历史和常用命令窗口、编辑器和文件调试器、路径设计文件搜索和其他用于帮助用户使用的在线浏览文件。自20世纪中期直到今天,MATLAB产品不断发展和升级,操作更加简单,大大方便了日常使用的用户,特别重要的是这个程序不需要经过任何编译就可以直接运行。若运行中遇到问题,则向用户报告系统的错误并对用户的错误进行分析。
2.简单易用
MATLAB软件是一个高级的分布式矩阵/阵列编程语言,它包含了控制语句、函数、数据构造、输入输出和面向对象编程等。在进行编程时用户甚至可以在一个命令窗口中直接输入控制语句和函数来同步执行命令,也就是用户可以先重新创建一个简单的文本再重新编写好一个较为冗杂的分布式应用程序(m文件)后再运行。同时新版本的编程语言MATLAB矩阵阵列语言也是基于C++语言的,所以在其语法和结构特征上与C++较为相似,但是比C++更为简洁,更加符合计算机工程人员对于数学表达式的正确书写和格式,利于非计算机和专业工程设计人员的使用,这就是MATLAB语言能够广泛深入科学技术研究、工程设计等各领域的重要原因。
3.强大处理
MATLAB系统包含了大量的数学计算工具和算法,其中还拥有科研和工程中经常使用的600多个数学运算与函数,极大地方便了科研所需的数学计算功能。在每一次的更新中,都会将这些算法更新到适用于科研和工程中数学计算的最新研究成果,而且这些都经过了优化和容错的处理。在一般的情况下,MATLAB的算法可以用来代替C或C++等一些底层的编程语言,在这些计算系统要求相同的代码情况下,MATLAB的简洁性会减少编程的工作量。
4.图形处理
MATLAB从最初的设计版本就已经具有方便的图形数据可视化功能,可以将向量和矩阵用图形的可视化方式清晰地表现出来,并且同样可以方便地进行图形的标注与打印。在高层次的可视化作图中,包括了二维和三维的可视化、图像的处理、动画和表达式的作图,并且可以方便地应用于低层次的科学计算和可视化工程的绘图。在MATLAB 2017a版本的图形处理中,拥有一些其他软件所没有的可视化功能,例如三维图形光照处理、色度处理和四维图形数据的可视化表现等。MATLAB同样表现出出色的图形处理可视化能力,如与图形对话等特殊的图形可视化功能要求,MATLAB也同样能快速找到相应的可视化功能和函数,方便用户的使用。同时,现在MATLAB在图形用户界面(Graphic User Interface,GUI)的设计上也有很大改善,一定程度满足了普通用户的可视化要求。
5.模块工具
MATLAB拥有许多专门用于图像处理领域的功能强大的软件模块集和工具箱,在实际使用时用户甚至可以很方便地选择自己需要的模块集和工具箱进行学习和使用,而不再需要自己编写代码,从而缩短了人工智能项目的开发周期。