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