张重 李东红 李梅 刘爽
计算机视觉是一门仿生科学,使机器具有人眼的部分特性。随着计算机技术的日新月异和大量数据的获取成为可能,深度学习已渗入到机器学习中,以深度学习为核心的计算机视觉课程的建立也成为不可避免的趋势。
目前,计算机视觉课程在很多高校的教学中仍然存在一系列问题,本文主要从教学内容方面来探讨计算机视觉课程的改革,以期使学生更好地学习和掌握有关深度学习的计算机视觉知识和技术,使学生能够及时接触和学习新知识,这就要求教师本着与时俱进和终身学习的思想,及时了解计算机视觉领域的发展前沿并详细地传授给学生,培养有思想、有实践能力的新时代学生。
《计算机视觉》的授课内容安排
计算机视觉的传统教学脱离科学发展实际情况,纸上谈兵。为此,我们将从这方面对计算机视觉教学提出改革,使学生在学习本课程后,能够较全面地了解和掌握深度学习和计算机视觉的相关知识,并且能够自己动手实现MatConvNet框架里的基本算法。
学习计算机视觉这门课程要求学生有较深厚的数学功底,因此,在讲授专业知识之前,先讲授概率论和线性代数的相关知识。对于计算机视觉专业知识的介绍,我们选择周志华编纂的《机器学习》这本书作为教材。这本书涵盖计算机视觉各个方面的基础知识,包括基本概念、经典的机器学习方法和进阶知识,可以使学生很容易地入门。
对于深度学习的介绍,我们以美国物理学家Michael Nielsen编纂的《神经网络与深度学习》作为入门教材,本教材全文都以识别数字作为例子,并结合Python语言编程的实例,来介绍神经网络和深度学习的基本知识。
本着以原理和具体实例为导向的原则,列举基于深度学习的计算机视觉在实际应用中的实例,如人脸识别、图像处理、行人检测等。
接着以基于深度学习的图像识别为例,介绍卷积神经网络的理论知识,以及结合现今经典的深度学习框架,讲解其在图像识别的应用。卷积神经网络的最基本组成部分是卷积层,各个卷积神经网络的主要区别在于卷积层的数量和连接方式。
此外,出于各种考虑,还会添加数量不等的池化层等结构。卷积神经网络类似于人类的神经元,学习神经网络其实质是学习数以万计的参数。现今经典的深度学习框架主要包括:MatConvNet、谷歌的TensorFlow、亚马逊的MXNet,以及Facebook的PyTorch和Caffe2。
鉴于TensorFlow、MXNet、PyTorch和Caffe2需要在GPU服务器的Linux系统下运行,而MatConvNet在Windows系统下就能安装并运行,并且MatCovNet易于使用和安装。实现是完全独立的,只需要MATLAB和兼容的C++编译器,还有考虑到很多高校可能在教学中没有配置GPU服务器,我们在教学中以讲解MatConvNet为例,使学生能够熟练掌握MatConvNet框架的基本知识,并能使用自己的图像数据库对该框架进行微调(fine-tuning),得到图像识别结果。
深度学习实践教学
接下来重点介绍MatConvNet框架。MatConvNet是一种MATLAB工具箱,专门用于卷积神经网络中。相比于其他高级编程语言,MATLAB简单易学。在教学中,這使得学生较快掌握该框架成为可能。我们先讲解如何安装MatConvNet(下载网址:http://www.vlfeat.org/matconvnet/)。安装步骤为:先安装matlab2015b和Visual Studio 2013;再设置MatConvNet子文件夹的Matlab路径;在Matlab的命令窗口输入指令:mex–setup,并选择C++编译器;再在Matlab的命令窗口输入指令:vl_compilenn,进行搭建相关文件;最后运行vl_setupnn.m文件,运行结束后就可以使用该框架了。
为了检验MatConvNet框架能否正常使用,我们可以打开examples文件夹中的其中一个例子,比如mnist,如果能成功运行,则表示已经成功安装MaConvNet框架。在教学中,重点讲解cnn_train.m和cnn_train_dag.m这两个训练函数,最后布置学习任务,让学生基于MatConvNet框架的其中一个例子进行代码调试,以提高实践能力。
结语
经过上述内容的讲解,学生可以掌握经典计算机视觉算法,掌握深度学习相关知识。学习深度学习框架可以让学生理论联系实践,根据自己试验情况改变网络结构。经过教改,增加学生对前沿科学的兴趣,养成独立思考、勤于动手的习惯。
基金项目:“基于研究型教学的数字图像处理教学改革探讨”(项目编号:JGYB01217042);天津师范大学青年科研拔尖人才培育计划(项目编号:135202RC1703)