杜 鴻,張 敏
(成都信息工程大學 通信工程學院,四川 成都 610225)
隨著人工智能技術的發(fā)展,機器學習技術在智能化圖像處理領域獲得越來越普遍的應用,企業(yè)發(fā)展和技術升級迫切需要大量具備機器學習工程能力的人才,另一方面,學生解決復雜工程問題能力還是工程教育認證標準[1]中的首要因素。由于機器學習算法涉及抽象的數(shù)學過程,而傳統(tǒng)教學方式主要通過公式推導來講解其工作原理,本科生普遍反映不易理解,更難將其與工程應用銜接起來。
在教育部-英特爾產學合作專業(yè)綜合改革項目的“數(shù)字圖像處理與通信”課程建設中,我們給本科生機器學習目標的定位為:理解機器學習算法的分類依據(jù)和訓練過程,突出強調運用成熟應用程序編程接口(Application Programming Interface,API)解決現(xiàn)實工程問題。針對這一目標,本文使用開放機器視覺庫OpenCV中的機器學習API和Windows MFC界面框架,設計并開發(fā)了一個教學演示和實驗系統(tǒng)。系統(tǒng)實現(xiàn)了支持向量機(Support Vector Machine,SVM)、貝葉斯(Bayes)和人工神經網絡(Artificial Neural Network,ANN)等3種算法的訓練和識別流程,學生可通過點擊鼠標來創(chuàng)建數(shù)據(jù)樣本集,選擇機器學習算法進行訓練和識別,結果被直觀地顯示在界面上。系統(tǒng)算法程序封裝在線程結構體中,學生可方便地將算法程序導出到自己的機器學習軟件工程中去解決實際工程問題。
教學演示和實驗系統(tǒng)使用C++語言和OpenCV庫開發(fā),運行在Windows環(huán)境中,人機交互界面如圖1所示。系統(tǒng)體系結構和功能描述如下。
SVM[2]算法將訓練數(shù)據(jù)視為高維超平面中的數(shù)據(jù)集,基于結構風險最小化準則,通過學習獲得正負模式之間空白最大的判決函數(shù);Bayes[3]算法通過概率密度函數(shù)對數(shù)據(jù)進行分類;ANN[4]算法參照生物神經元模型通過網格化神經元結構體對數(shù)據(jù)進行訓練和分類。算法原理展示內嵌在本系統(tǒng)中,其中ANN原理如圖2所示。
圖1 人機交互界面
圖2 算法原理展示
機器學習算法需要使用經過標記的訓練樣本對算法進行訓練;系統(tǒng)使用字母a,b,c...作為樣本類標記,屏幕坐標(x, y)作為樣本參數(shù),操作者通過點擊鼠標就能生成一個適用于機器學習算法的訓練樣本集。圖1黑底圖像區(qū)域顯示了使用鼠標創(chuàng)建的一個訓練樣本集示例。
每個機器學習算法都有不同的工作模式或核函數(shù),可視化訓練結果有助于學生理解工作模式和核函數(shù)對算法性能的影響。圖3a是使用SVM算法的支持向量分類器(C_SVC),線性核函數(shù)(LINEAR)訓練后的可視化結果;圖3b是卡方函數(shù)(CHI2)訓練后的可視化結果。
圖3 SVM的可視化訓練結果
訓練完畢后,程序進入分類模式,在界面上點擊鼠標,等效于輸入新數(shù)據(jù),此時機器學習分類器將根據(jù)訓練結果對新數(shù)據(jù)進行分類,分類結果突出顯示在界面上。圖4a是使用3層后向傳播神經網絡訓練結果,圖4b中是點擊鼠標后的分類結果顯示,3個突出顯示的鼠標點分別被分類為[a],[b],[c],分類結果符合訓練樣本集的特征。
圖4 ANN的可視化訓練結果和分類結果
針對圖像處理領域機器學習這一抽象難懂的知識模塊,設計開發(fā)了一個直觀的演示和實驗系統(tǒng),學生可方便地創(chuàng)建自己的數(shù)據(jù)集,對其進行訓練和分類,并可調諧算法參數(shù)以揭示算法在不同參數(shù)下的表現(xiàn)。近幾年的教學實踐證明,該教學演示和實驗系統(tǒng)在提升學生對機器學習算法理解方面有較好效果,尤其是在銜接機器學習算法與工程應用方面有顯著作用。
[1]中國工程教育專業(yè)認證協(xié)會.通用標準[EB/OL].(2017-11-05)[2018-05-04].http://ceeaa.org.cn/main!newsList4Top.w?menuID=01010702.
[2]OpenCV.Introduction to Support Vector Machines[EB/OL].(2014-10-26)[2018-05-04].https://docs.opencv.org/3.0-beta/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html.
[3]PAWEL C.Na?ve Bayes classifier[EB/OL].(2014-06-06)[2018-05-04].http://www.cs.ucr.edu/~eamonn/CE/Bayesian%20 Classification%20withInsect_examples.pdf.
[4]OpenCV. Neural Networks[EB/OL].(2014-08-08)[2018-05-04].https://docs.opencv.org/2.4/modules/ml/doc/neural_networks.html.