張重 李東紅 李梅 劉爽
計算機視覺是一門仿生科學(xué),使機器具有人眼的部分特性。隨著計算機技術(shù)的日新月異和大量數(shù)據(jù)的獲取成為可能,深度學(xué)習(xí)已滲入到機器學(xué)習(xí)中,以深度學(xué)習(xí)為核心的計算機視覺課程的建立也成為不可避免的趨勢。
目前,計算機視覺課程在很多高校的教學(xué)中仍然存在一系列問題,本文主要從教學(xué)內(nèi)容方面來探討計算機視覺課程的改革,以期使學(xué)生更好地學(xué)習(xí)和掌握有關(guān)深度學(xué)習(xí)的計算機視覺知識和技術(shù),使學(xué)生能夠及時接觸和學(xué)習(xí)新知識,這就要求教師本著與時俱進和終身學(xué)習(xí)的思想,及時了解計算機視覺領(lǐng)域的發(fā)展前沿并詳細地傳授給學(xué)生,培養(yǎng)有思想、有實踐能力的新時代學(xué)生。
《計算機視覺》的授課內(nèi)容安排
計算機視覺的傳統(tǒng)教學(xué)脫離科學(xué)發(fā)展實際情況,紙上談兵。為此,我們將從這方面對計算機視覺教學(xué)提出改革,使學(xué)生在學(xué)習(xí)本課程后,能夠較全面地了解和掌握深度學(xué)習(xí)和計算機視覺的相關(guān)知識,并且能夠自己動手實現(xiàn)MatConvNet框架里的基本算法。
學(xué)習(xí)計算機視覺這門課程要求學(xué)生有較深厚的數(shù)學(xué)功底,因此,在講授專業(yè)知識之前,先講授概率論和線性代數(shù)的相關(guān)知識。對于計算機視覺專業(yè)知識的介紹,我們選擇周志華編纂的《機器學(xué)習(xí)》這本書作為教材。這本書涵蓋計算機視覺各個方面的基礎(chǔ)知識,包括基本概念、經(jīng)典的機器學(xué)習(xí)方法和進階知識,可以使學(xué)生很容易地入門。
對于深度學(xué)習(xí)的介紹,我們以美國物理學(xué)家Michael Nielsen編纂的《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》作為入門教材,本教材全文都以識別數(shù)字作為例子,并結(jié)合Python語言編程的實例,來介紹神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的基本知識。
本著以原理和具體實例為導(dǎo)向的原則,列舉基于深度學(xué)習(xí)的計算機視覺在實際應(yīng)用中的實例,如人臉識別、圖像處理、行人檢測等。
接著以基于深度學(xué)習(xí)的圖像識別為例,介紹卷積神經(jīng)網(wǎng)絡(luò)的理論知識,以及結(jié)合現(xiàn)今經(jīng)典的深度學(xué)習(xí)框架,講解其在圖像識別的應(yīng)用。卷積神經(jīng)網(wǎng)絡(luò)的最基本組成部分是卷積層,各個卷積神經(jīng)網(wǎng)絡(luò)的主要區(qū)別在于卷積層的數(shù)量和連接方式。
此外,出于各種考慮,還會添加數(shù)量不等的池化層等結(jié)構(gòu)。卷積神經(jīng)網(wǎng)絡(luò)類似于人類的神經(jīng)元,學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)其實質(zhì)是學(xué)習(xí)數(shù)以萬計的參數(shù)?,F(xiàn)今經(jīng)典的深度學(xué)習(xí)框架主要包括:MatConvNet、谷歌的TensorFlow、亞馬遜的MXNet,以及Facebook的PyTorch和Caffe2。
鑒于TensorFlow、MXNet、PyTorch和Caffe2需要在GPU服務(wù)器的Linux系統(tǒng)下運行,而MatConvNet在Windows系統(tǒng)下就能安裝并運行,并且MatCovNet易于使用和安裝。實現(xiàn)是完全獨立的,只需要MATLAB和兼容的C++編譯器,還有考慮到很多高??赡茉诮虒W(xué)中沒有配置GPU服務(wù)器,我們在教學(xué)中以講解MatConvNet為例,使學(xué)生能夠熟練掌握MatConvNet框架的基本知識,并能使用自己的圖像數(shù)據(jù)庫對該框架進行微調(diào)(fine-tuning),得到圖像識別結(jié)果。
深度學(xué)習(xí)實踐教學(xué)
接下來重點介紹MatConvNet框架。MatConvNet是一種MATLAB工具箱,專門用于卷積神經(jīng)網(wǎng)絡(luò)中。相比于其他高級編程語言,MATLAB簡單易學(xué)。在教學(xué)中,這使得學(xué)生較快掌握該框架成為可能。我們先講解如何安裝MatConvNet(下載網(wǎng)址:http://www.vlfeat.org/matconvnet/)。安裝步驟為:先安裝matlab2015b和Visual Studio 2013;再設(shè)置MatConvNet子文件夾的Matlab路徑;在Matlab的命令窗口輸入指令:mex–setup,并選擇C++編譯器;再在Matlab的命令窗口輸入指令:vl_compilenn,進行搭建相關(guān)文件;最后運行vl_setupnn.m文件,運行結(jié)束后就可以使用該框架了。
為了檢驗MatConvNet框架能否正常使用,我們可以打開examples文件夾中的其中一個例子,比如mnist,如果能成功運行,則表示已經(jīng)成功安裝MaConvNet框架。在教學(xué)中,重點講解cnn_train.m和cnn_train_dag.m這兩個訓(xùn)練函數(shù),最后布置學(xué)習(xí)任務(wù),讓學(xué)生基于MatConvNet框架的其中一個例子進行代碼調(diào)試,以提高實踐能力。
結(jié)語
經(jīng)過上述內(nèi)容的講解,學(xué)生可以掌握經(jīng)典計算機視覺算法,掌握深度學(xué)習(xí)相關(guān)知識。學(xué)習(xí)深度學(xué)習(xí)框架可以讓學(xué)生理論聯(lián)系實踐,根據(jù)自己試驗情況改變網(wǎng)絡(luò)結(jié)構(gòu)。經(jīng)過教改,增加學(xué)生對前沿科學(xué)的興趣,養(yǎng)成獨立思考、勤于動手的習(xí)慣。
基金項目:“基于研究型教學(xué)的數(shù)字圖像處理教學(xué)改革探討”(項目編號:JGYB01217042);天津師范大學(xué)青年科研拔尖人才培育計劃(項目編號:135202RC1703)