張重 李東紅 李梅 劉爽
計算機視覺是一門仿生科學,使機器具有人眼的部分特性。隨著計算機技術的日新月異和大量數據的獲取成為可能,深度學習已滲入到機器學習中,以深度學習為核心的計算機視覺課程的建立也成為不可避免的趨勢。
目前,計算機視覺課程在很多高校的教學中仍然存在一系列問題,本文主要從教學內容方面來探討計算機視覺課程的改革,以期使學生更好地學習和掌握有關深度學習的計算機視覺知識和技術,使學生能夠及時接觸和學習新知識,這就要求教師本著與時俱進和終身學習的思想,及時了解計算機視覺領域的發展前沿并詳細地傳授給學生,培養有思想、有實踐能力的新時代學生。
《計算機視覺》的授課內容安排
計算機視覺的傳統教學脫離科學發展實際情況,紙上談兵。為此,我們將從這方面對計算機視覺教學提出改革,使學生在學習本課程后,能夠較全面地了解和掌握深度學習和計算機視覺的相關知識,并且能夠自己動手實現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)