电子信息工程专业“人工智能+”能力的培养
2021-05-20林贵敏邱立达唐晓腾
林贵敏,邱立达,林 南,唐晓腾
(闽江学院物理与电子信息工程学院,福建 福州 350108)
0 引言
为高等教育培养的人才能适应新经济发展的需求,2017年教育部会同60多所高校共商“新工科”建设[1],明确提出“新工科”建设的目标和任务,为推动我国高等工程教育的改革创新提供一个全新的视角。新工科相较于传统工科,“新”是取向,但又不能脱离“工科”[2]。因而,新工科不单单是指适应新经济和新产业的新型工程学科体系,同时强调新的工程教育理念,突出工科人才培养的前沿性。这也使得新工科专业的学科交叉融合更为明显[3]。一些老牌工科高校早早就将新工科人才培养理念融入到本科人才培养方案中,而对于工科基础较为薄弱的一般高等学校,或因存在培养目标定位不准确、缺乏特色,或因课程体系较为陈旧,缺乏先进的工程技术人才培养理念等问题,培养出来的学生与行业需求缺少有机耦合,造成学生毕业后难以适应行业的发展,而企业进校招聘时又面临难以找到合适人才的窘境。
新工科建设“天大行动”中指出,要注重“大数据、云计算、物联网、人工智能、虚拟现实、基因工程、核技术等新技术和智能制造、集成电路、空天海洋、生物医药、新材料等11类新产业对卓越工程科技人才的需求状况及变化趋势”[4]。其中,近年来人工智能技术的快速发展,使得智能化正在成为相关技术和产业发展的重要方向,国家已从战略层面对人工智能提出了规划和要求,如出台《新一代人工智能发展规划》《高等学校人工智能创新行动计划》《促进新一代人工智能产业发展三年行动计划(2018-2020年)》等重要文件。人工智能已进入与产业深度融合发展新阶段[5],如人工智能与智能制造、自动驾驶、语音识别、图像处理、医疗卫生、金融、教育等领域相结合,正推动新工科人才培养向智能化、自动化和类人化等目标转变。
随着人工智能产业的发展,需要大批具备相关知识和实践能力的专业人才,如何将信息技术人才的培养与行业发展智能化的需求相耦合。在高等工程技术人才培养中,根据学校自身特点,找准与人工智能相结合的切入点,向新工科科学体系转型,引入先进的工程技术人才培养理念,培养符合行业需求的卓越人才是一个值得探讨的课题。近年来,以深度学习为代表的人工智能技术获得了令人瞩目的发展,本文将以某高校电子信息工程专业学生为培养对象,研究电子专业创新人才培养模式,探索电子专业大学生创新学习和活动,突出专业特色,培养符合行业需求“人工智能+”人才。
人脸检测与识别技术在公共安全、身份认证等领域有着广泛的应用。基于深度学习技术实现的人脸检测,已达到非常高的性能。下面通过一个基于卷积神经网络的人脸检测案例,分析在案例中涉及的知识体系,然后推演在人才培养计划中,如何在不过多增加学生学习负担的情况下,让他们掌握人工智能技术的基本知识体系,为以后的就业发展打下良好的知识基础。
1 案例分析
人脸检测,顾名思义就是判断输入的图像或视频中是否存在人脸,若存在则标出人脸所在的位置。因为人脸在图像中可能有正脸、侧脸、抬头、低头、微笑、大笑等各种姿态,人脸在图像中的大小、位置也常常是不同的,甚至还有遮挡等各种因素干扰,所以要有效检测出无约束条件下的人脸,还是有一定的挑战。人脸检测的方法已有很多,本文要分析的案例只涉及较为容易的正脸检测,且采用的是滑动窗口的检测方式。为了充分利用图像中元素在二维空间中的关联信息,卷积神经网络(convolutional neural networks,CNNs)是提取图像特征信息的一种有效方法。基于CNN提取人脸特征常用的经典模型有VGGNet[6]、ResNet[7]、DesNet[8]等。利用CNN进行人脸检测的流程如图 1所示,其中CNN模型可看做是一个非线性的映射函数f(x|W),W代表CNN模型的可调参数,x表示CNN接收的输入数据。经过映射后,CNN输出两个数值,分别代表x属于人脸和非人脸的置信度。图1中上半部分是对CNN模型的训练,下半部分是运用训练之后的CNN模型进行人脸检测。
图1 基于CNN的人脸检测Fig.1 Face detection based on CNN
1.1 训练数据集的制作
利用机器学习的方法完成特定领域的任务,都离不开收集、整理用于训练模型所需的特定领域的数据集。本案例是要完成机器视觉领域的人脸检测任务,需要收集含有人脸和不含人脸的大量图像,并对含有人脸的图像标定出人脸在图像中的位置,而无人脸的图像可不用标定。整理训练数据时,可先搜索是否有已公开的数据集。可用于训练人脸检测模型的数据集,已公开的有FDDB[9],CASIA-WebFace,Wider Face[10]等。收集完数据集后,通常还需要进行一些预处理工作,才能用于训练模型。本案例需进行的预处理工作主要是,在含有人脸的图像中,根据已标注的人脸位置从图中截取包含人脸的部分图像,并经过适当的缩放后放入训练集中,确保训练集中的图像都有固定的空间大小。这些人脸图像称为正样本。另外还需要随机截取不含人脸的图像,或者只包含小部分人脸的图像,这些图像同样要进行适当的缩放,使其与人脸图像保持同样的大小。这些非人脸图像称为负样本。制作负样本时,也可从含有人脸的图像中取随机截取部分子图,但要注意检查截取的子图中,是否含有人脸。若含有人脸,要注意截取的人脸部分,与标注的人脸区域重叠部分(Intersection over Union,IoU)尽量不超过30%,即IoU<0.3.
1.2 CNN模型的设计
一个CNN模型,通常由若干个卷积层、池化层构成,而一个卷积层中又经常包含有卷积运算、归一化运算和非线性激活函数等。在设计一个用于解决特定领域问题的CNN模型时,如果自行设计一个全新的模型,需要经过大量的训练和测试才能验证模型的可行性。此过程既费时又费力,而且设计出来的模型可能还不能满足应用场景的要求。因此对于没有太多设计经验的开发者,可以考虑借助一些比较经典的网络模块(如Inception模块[11],残差模块[7],以及密连接模块[8]等),也可以直接从一些已经被成功应用的CNN模型中做一些微调。比如采用经典的VGGNet[6]作为人脸检测模型的主模块,但因VGGNet原本是用于对含有1 000个类别的ImageNet图像进行分类,而人脸检测只需判断图像中是否含有人脸,属于二值分类,因此需对VGGNet做一些修改才能适用。此外,为了下一步模型的训练,还需定义一个目标函数。对于二值分类的模型,常采用交叉熵作为目标函数,具体形式如下:
其中,f(xi)表示输入数据xi时CNN模型的输出,yi表示与数据xi配对的标签,N表示训练中样本的总数。
1.3 模型的训练
不论是自行设计的CNN模型,还是从经典模型中做适当的修改,都需要经过一定程度的重新训练,才可能在特定领域问题上取得良好的效果。例如将VGGNet修改成二值分类后,还需用含有人脸和非人脸的数据集进行重新训练或微调训练,才能有效检测人脸。模型的训练,就是寻找目标函数的极小值。在模型的训练过程中,除了准备好的数据集和已设计的模型完,要使得训练过程收敛,一方面要注意模型中可调参数的初始化,另一方要注意求解目标函数的优化方法。CNN的训练方式采用的是BP算法(即反向传播算法),训练时采用的优化策略一般选择批量梯度下降法,或一些改进的梯度下降法。另外,要注意优化策略中学习率(learning rate, lr)大小的设置。lr值太大,训练过程会出现目标函数的值时大时小,往往难以收敛;而lr值太小也不行,目标函数收敛速度很慢,会大大延长训练的过程。在同样的训练数据集的基础上,为了使CNN模型有更好的检测效果,还可以采用一些数据扩增(data augmentation)策略,如对训练时输入的图像进行一定角度的旋转、位置变动等。
1.4 模型的使用
经过训练后的CNN模型,可用于人脸检测。但在实际应用中,还有一些问题需要处理。在准备训练数据时,图像都是被预先缩放到某一尺度的,即人脸的大小基本是一致的,且人脸都是在图像的正中位置。但在实际应用时,输入的图像中人脸大小不一,人脸在图像中的位置也是随机的。如何让CNN模型能有效检测出这些人脸呢?通常的做法是对输入的图像做多尺度的缩放,生成图像金字塔,然后再将这些图像送入CNN模型进行多尺度检测。不同的尺度下,CNN模型都会输出一个置信度矩阵,表示在图像中的某个位置存在人脸的概率。然后根据置信度矩阵进行反变换,即根据CNN模型的输入与输出的关系,计算出置信度矩阵中的一个位置对应原图像的大小。在进行反变换时,通常需要设置一个阈值,只有置信度超过设定的阈值,才认为原图上对应的位置存在人脸。经过反变换之后,原图中可能存在多个有重叠的人脸检测窗口。此时需再做进一步的处理,以优化检测效果。这一步骤通常采用的方法为非极大值抑制方法(non maximum suppression,NMS)。从输入图像,到输出置信度矩阵,并进行反变换,再经过NMS处理后,就可较为准确地标注人脸位置。检测流程如图 1的下半部所示。
2 课程设置
根据上述案例涉及的环节,分析其中所需了解、掌握的知识点,以及需要开设的课程。首先,从事人工智能的开发应用离不开相关编程语言的学习,Python语言是一门面向对象的编程语言,提供大量有关机器学习的算法和功能库,方便开发者快速掌握机器学习算法的使用。此外,深度学习的一些开源平台如Tensorflow、Pytorch、Paddlepaddle等也都有提供Python开发接口。基于这种情况,建议在学生的课程体系中,开设一门《Python程序设计基础》,让学生掌握Python语言的基本语法规则,以及熟悉Python中提供的机器学习库的使用。此外,还需学习《数据结构与算法》,掌握常用的数据结构类型,以及一些基本算法,为下一步进行机器学习的应用开发打好编程基础和算法基础。
在上述案例中输入的数据是二维的人脸图像,对于二维的数据可以拉平为一维的数据进行处理,但拉平处理后会丢失数据在原来二维空间上的位置关联信息。但不管是对转为一维的数据进行运算,还是直接在二维的数据上进行运算,都需要进行大量的矩阵运算。要理解这些矩阵运算,要求学生掌握相关的《线性代数》知识。模型设计时,需要考虑处理的数据维度。人脸检测采用的是二维卷积模型。如果将输入的图像先拉平为一维的数据,则CNN模型需要做适当的调整。在学习CNN模型时,学生要掌握一维、二维,甚至三维的卷积运算,以及理解交叉熵、信息熵等概念,这需要有《信号处理》和《数字信号与系统》课程的支撑。
在理解“模型的训练”这一环节时,学生至少需要掌握BP算法和梯度下降算法。而这两个算法都与高维矩阵的相乘、求导有关,因此要求学生掌握好《微积分》中的相关知识。在“模型的使用”环节,需要对输入的图像进行多尺度处理,模型输出的结果是一个置信度矩阵,还需进行反向坐标变换,以及NMS处理。因此要求学生有一定的《数字图像处理》基础,能够对图像进行一些基本变换。另外,要理解置信度的相关概念,学生需学习《概率论与数理统计》课程。为了让学生早点对机器学习有个宏观的理解,在低年级时需要开设《人工智能导论》或《机器学习概论》这两门课程。
学习相关的基础知识之后,还需要有个强化阶段,让学生知道如何将学习的知识应用起来。因此,在高年级开设capstone或相关的课程设计至关重要。另外,在上述案例中只涉及到深度学习中常用于图像处理的一种CNN(卷积网络模型),在实际的应用开发中,还会根据实际需求,使用RNN(循环神经网络)、Attention(注意机制)、Transformer、GCN(图卷积网络)等模型。为使学生能够了解到人工智能的一些前沿技术以增加对人工智能的兴趣,可以通过“第二课堂”举办一些有关机器学习的讲座或让学生参与一些大学生创新创业项目。例如让学生参与“基于GPS的交通流大数据出行路线推荐系统设计”“基于深度信任网络的人体步态分析与研究”“基于深度稀疏滤波网络的目标跟踪识别系统设计”等。
3 结语
通过案例和课程设置的分析,发现要让学生建立起具备“人工智能技术”的基本知识体系并不难,而且涉及的课程大部分在培养方案中已有开设,需要额外增加或调整的课程只有《Python程序设计基础》和《人工智能导论》或《机器学习概论》。电子信息工程专业的培养方案中,通常都要求学生掌握一门面向对象的程序设计语言。因此,只需要将原有的编程语言改成Python就可以解决学生的编程语言问题。要让学生对人工智能产生一定的认知,需在低年级时就开设几次“人工智能”或“机器学习”相关的《导论》课,引起学生的兴趣,并在后续的课程中做适当的引导,到高年级阶段开设Capstone或课程设计,以及引导学生参加大学生创新创业项目,通过实践性比较强的课程和应用型项目的强化锻炼,夯实理论知识体系和加强学生动手编程实践能力,就能建立较完备的“人工智能”知识体系结构,并使学生具备一定的应用开发能力。
智能化时代已经来临,人工智能技术不仅仅是计算机专业或人工智能专业的学生才需要学习的,其他专业的学生也都应该了解、学习人工智能相关技术。对于信息工程专业的学生,掌握了人工智能技术的相关知识之后,不仅可以从事与机器视觉、自然语言处理处理等领域相关的工作,同样也可以从事智能制造、集成电路的智能化设计等工作。为适应新产业、新经济的发展,如何在信息工程专业融入“人工智能+”知识体系,促进传统专业向新工科专业转化,培养出能适应社会发展需求的工程科技人才,需要不断地进行教学模型的探索,为高校“新工科”专业建设提供有益的经验。