張林 沈瑩


摘? 要:針對計算機視覺課程核心知識點分散、較難以掌握的問題,設計并實踐綜合性教學案例“環視系統構建及基于環視的語義信息提取”。以此案例為載體,講授相機模型、相機標定、幾何變換和深度學習等知識點,讓學生在實踐中學習、在學習中實踐。該案例的有效性已在同濟大學的教學實踐中得到充分驗證。
關鍵詞:計算機視覺;教學案例;實踐教學;環視系統;核心知識點
Abstract: To solve the problem that the knowledge points of computer vision are scattered and difficult to master, a comprehensive teaching case "construction of the surround-view system and semantic information extraction from the SVS" is designed and practiced. We take this teaching case as the carrier to teach knowledge points such as camera model, camera calibration, geometric transformation and deep learning. In this way, students can learn and practice simultaneously. The effectiveness of the proposed teaching case has been fully verified in the teaching practice of Tongji University.
Keywords: computer vision; teaching case; teaching by practice; surround-view system; core knowledge point
近年來,隨著全世界對人工智能技術重視程度的日益提升,我國也加大了對人工智能專業人才的培養投入,許多高校陸續設置了人工智能專業并開設了相關課程[1-2]。在大多數高校制定的人工智能課程群方案中,計算機視覺都被列為了核心課程。因此,研究計算機視覺課程的教學實踐共性規律、研究如何提升該課程的教學質量,具有重要的現實意義。
計算機視覺是最近30年發展起來的一門新興學科[3],是一門研究如何使機器感知和理解周圍世界的科學。更確切地說,該學科要解決的主要科學問題是如何利用計算機對傳感器(如圖像傳感器、深度信息傳感器、聲音傳感器等)采集的信號進行分析,從而實現對客觀世界的度量與理解。
近10年來,隨著人工智能領域技術,如深度學習技術的飛速發展,計算機視覺學科在很多問題上,如人臉識別、目標檢測與跟蹤、像素級分割、場景理解和三維重建等,也取得了突破性的進展,其應用范圍也變得日益廣闊。在此大背景下,全球各大高校陸續開設了計算機視覺課程。同濟大學軟件學院的計算機視覺課程開設于2010年秋季學期,是全國范圍內較早在本科階段開設此課程的院系[4]。在教學過程中,我們發現該課程具有如下教學難點:1)該課程的理論性和實踐性都很強,學生較難掌握;2)核心知識點較為分散,難以組織在統一的邏輯框架之下;3)該學科目前仍處于快速發展階段,如何把當前該領域最新的思想和方法融入到教學環節中也是任課教師要面臨的巨大挑戰。為了有效解決這些問題,我們設計了面向計算機視覺課程的綜合性教學實踐案例“環視系統構建與基于環視的語義信息提取”,其有效性已在教學實踐中得到了檢驗。
一? 案例概述
此案例為面向計算機視覺課程的綜合性實踐教學案例,覆蓋的理論教學內容主要包括相機模型與內參標定、環視系統標定及語義目標檢測三部分內容,最終目標是讓學生綜合運用所學知識完成車載環視系統的構建及基于環視圖的語義信息提取任務。
(一)? 教學目標
本案例面向軟件工程、計算機科學與技術等計算機相關學科本科專業的高年級學生,要求學生有一定的編程經驗,熟悉C++、Python等語言,并熟練掌握高等數學、線性代數等相關內容。在該案例教學過程中,學生需要分組完成環視系統構建與基于環視的語義信息提取系統的設計與實現。
在具體的教學過程中,該案例可分為相機模型與標定、環視系統標定及環視語義目標檢測與分類3個階段。
第一階段:講授相機模型、非線性最小二乘法、相機內參標定,讓學生使用相機拍攝標定板圖像并完成相機的內參標定。
第二階段:講授幾何變換、幾何變換群、線性最小二乘法和單應性估計等知識點,讓學生在標定場用實驗車獲取數據,編寫程序實現對環視系統相機外參的標定。
第三階段:講授機器學習基礎、深度卷積神經網絡、視覺目標檢測與分類等知識點,帶領學生實地采集典型道路環境下的環視圖像樣本,并完成圖像標注與網絡訓練,最終驗證目標檢測與分類模型的性能。
(二)? 案例材料準備
學生需掌握線性代數基礎、數字圖像處理的知識,具備基本的編程能力。此外,根據課程講授進度和案例執行情況,需有針對性地提前閱讀相關文獻及資料[3-4]。在進行授課前,本案例需要準備如下實驗器材。
1)車載廣角魚眼相機(視場在185°以上)4個(如圖1(a)所示)。
2)實驗平臺車1臺(如圖1(b)所示)。
3)棋盤格平面標定板1塊(如圖1(c)所示)。
4)棋盤格平面標定場或標定布1塊(如圖1(d)所示)。
二? 案例教學要點
本案例主要介紹計算機視覺知識在具體項目中的運用情況,借此從理論與實踐兩方面讓學生掌握相關知識和技能。課程依照項目過程,主要分為相機模型與內參標定、環視系統標定及環視語義信息提取3個階段。在具體授課過程中,授課教師應當注重數學理論與工程問題解決方案的相互結合,依照由淺入深,由一般到特殊的思路,從最基本的基礎理論出發,逐步過渡到真實案例中使用的具體技術。同時,每個階段都要安排相應的實驗討論環節,讓學生通過實踐真正理解和掌握所學內容。
(一)? 相機模型與內參標定
在進行相機模型的教授之前,授課教師首先需要依照學生情況,決定是否進行基礎線性代數知識的補充,這些知識應涵蓋矩陣與向量的定義、矩陣乘法、矩陣行列式計算及矩陣求導等內容。在確保學生具有所需的數學基礎后,從一般情況入手,講解針孔相機模型,分析相機成像過程包含的4個坐標系(世界坐標系、相機坐標系、歸一化平面坐標系和像素坐標系)與相機內外參數的定義,讓學生理解相機的基本成像流程。在此基礎上,進一步講授相機的畸變模型,分析徑向畸變與切向畸變產生的原因,并用數學表達式給出嚴謹的定義。之后,逐步聚焦于車載環視系統中使用到的魚眼相機,講述魚眼相機的畸變模型,并分析對比魚眼相機畸變模型和普通相機畸變模型的異同。
目前,相機內參標定使用最廣泛的方法是張正友標定法[5]。該方法通過從不同角度觀察有具體尺度信息的平面模式,對相機內畸變參數給出估計。由于理論過于繁復,教師應當依照教學時間與學生基礎合理安排課程。
當理論教學完成后,需設置實驗課程,讓學生把理論算法進行編程實現。學生需通過小組合作,用相機從不同角度拍攝標定板,并使用OpenCV或者其他框架編寫程序,計算相機內參并完成畸變矯正。如果圖像畸變校正效果不佳,需帶領學生對可能的原因進行深入分析(如特征點檢測不準、拍攝角度過于單一、相機畸變過大導致模型難以擬合等)。
(二)? 環視系統標定
環視系統的標定與環視圖的生成主要基于射影空間幾何變換的理論。授課內容需遵循由簡至繁的原則,從歐氏變換開始,逐步增加變換的自由度,依次講解歐氏變換、相似變換、仿射變換與射影變換。為估計兩平面之間的單應性變換矩陣,教師還應對單應性估計與線性最小二乘法進行講解,剖析如何通過四組二維點對或者更多的點對來估計兩平面之間的單應性變換。最后,講解環視系統中相機外參的標定流程。
環視系統的標定通常依賴棋盤格平面標定場或標定布,如圖1(d)所示。如果條件受限,也可使用磚塊大小一致的磚地之類的具有尺度信息的平面模式替代。在標定過程中,通常以車輛后軸中心作為車輛坐標系原點,車輛需要被駕駛到固定的位置上,讓車輛后軸中心對準標定場內一個固定的角點。之后,采集4個廣角魚眼相機的圖像并完成去畸變操作。此時,去畸變后的圖像平面與地平面之間存在著單應性變換映射關系。通過在圖像上找出角點的像素坐標,并利用格子的尺度性找到其在地面坐標系中的坐標,就獲得了一組二維點對。利用超過4組(通常使用8組以上)的點對,就可以解算出地面平面坐標系到去畸變圖像平面坐標系之間的映射關系。
學生應當分組編寫魚眼相機畸變去除與單應性估計的程序,并在實際場地完成標定,計算去畸變圖像與地平面之間的單應性矩陣。最后,結合單應性矩陣與相機畸變系數,生成從鳥瞰視圖坐標系到原始魚眼圖像坐標系的映射表,從魚眼視圖生成鳥瞰視圖。在得到4個方向的鳥瞰視圖之后,需要觀察每個攝像頭的視場范圍,找出其重疊的部分,確定出相鄰兩個視圖的圖像拼接線,將4幅鳥瞰圖像拼接成完整的鳥瞰環視圖像,如圖2所示。
在課后學生應當查閱相關文獻并分組討論分析以下幾點問題:①常見的環視系統標定方案包含哪些?優劣是什么?②影響環視圖像精度的因素主要有哪些?③如果相機位置發生改變,在不進行重新標定的前提下,是否有方法可以修正錯位的環視圖?
(三)? 環視語義目標檢測與分類
標定好了環視相機系統以后,就可以學習如何在環視圖中提取語義信息。在正常道路環境下,環視圖中包含的常見語義特征包括車道線、行進指示標識、泊車位、泊車位序號和減速帶等,教師可以根據實際情況選取想要提取的目標類別。對環視圖中語義目標進行檢測與分類主要依賴深度學習的相關知識。教師需首先對機器學習與深度學習的基礎知識進行講授,尤其是應包括卷積神經網絡、目標檢測中常見的網絡結構、基于深度學習的語義分割等內容。
比如,泊車位檢測是一個較為典型的目標檢測與分類問題。該問題可以分解成泊車位標志點模式檢測和局部圖像塊分類2個子問題[6-8]。常見的目標檢測神經網絡都能用來解決泊車位標志點模式檢測這個問題,本案例選擇了性能較好且使用較為廣泛的YOLO系列檢測子。局部圖像塊分類問題是一個典型的圖像模式分類任務,可以用任何流行的圖像分類深度神經網絡來解決,比如AlexNet、ResNet、DenseNet等。
此外,神經網絡的性能和訓練數據集的數據數量與種類有著很大的關系,因此教學中還應當涵蓋數據集的選取、標注與擴充等內容。教師需帶領學生采集各種情況下的環視圖像數據,需盡可能覆蓋室內、室外、傍晚路燈光照和樹蔭遮擋等各種實際情況。然后,再進行數據的標注與擴充。
在具體教學安排中,學生需要小組合作,完成數據采集與標注、訓練集與測試集的劃分、深度學習環境配置和深度神經網絡的訓練與測試等一系列流程,在實踐過程中掌握深度學習技術在計算機視覺任務中的運用方式。如果時間與實力允許,鼓勵學生自行探索提升系統性能的方法并嘗試實現。
三? 案例教學組織方式
為引導學生系統地學習和實踐本綜合教學案例,本案例教學計劃總共安排7周時間,分為理論教學、實踐教學和項目交流與答辯3個環節。
(一)? 理論教學
理論教學環節安排3周時間,由教師講授相關的理論知識,包括環視系統構建過程中涉及的基礎知識(相機成像模型、射影幾何等)、線性最小二乘法、非線性最小二乘法、人工神經網絡及目前學界前沿的視覺目標檢測網絡結構等。同時,除了理論授課外,案例為每一堂課都準備了上機練習或者擴展閱讀資料。上機練習可以幫助學生加深對理論知識點的理解。擴展閱讀資料是對課堂內容的補充。由于課堂時間有限,教師無法做到對所講授的知識點面面俱到。學生通過閱讀這些資料可以了解課堂上沒有觸及到的細節,以及該研究課題的學界前沿成果。
(二)? 實踐教學
實踐教學可安排2周時間,學生需自由組隊完成一個完整的車載環視及環視語義信息提取系統。學生需要結合理論教學環節所學知識,分析該項目中需要解決哪些問題,之后進行合理分工,完成項目,編寫代碼并撰寫文檔。在實踐過程中,學生會碰到一些棘手的問題,這時就需要他們自己去查閱資料,搜集并研讀相關文獻,以解決問題。教師在該階段需要和各個學生保持定期的溝通,確保每個組項目的順利進行,并解答他們的問題。
(三)? 項目交流與答辯
安排2周時間進行項目交流與答辯。經過之前5周的學習和實踐,學生基本可以按照教學計劃完成一個較為完整的車載環視系統。這之后,安排2周時間進行最后的歸納總結。學生需要在這2周中回顧之前的教學知識并結合自己項目的完成情況,撰寫完整的項目文檔。文檔需包括(但并不限于)背景、概述、項目實施細節、實驗結果及總結5個部分。在課程的最后,安排答辯環節。每個小組的成員需要制作答辯PPT,對自己項目的完成情況進行匯報。教師和其他學生聽取匯報,并提出問題或者建議。希望學生在答辯與交流的過程中能夠回顧項目完成的過程,并通過聽取他人意見、對比不同小組的完成情況,發現工作中的亮點以及值得進一步研究的內容。
四? 結束語
為了有效提升計算機視覺課程的教學效果,使學生更加深入牢固地掌握課上所講授的理論內容,我們設計并實踐了綜合教學案例“環視系統構建及基于環視的語義信息提取”。從2016年開始,本綜合性教學案例已經在我們的計算機視覺課程中完整使用了6個周期,取得了良好的應用效果,獲得了同濟大學相關專家和學生的好評,并引起了強烈的反響。該案例也獲得了2019年全國軟件工程教學案例比賽一等獎。在今后的教學實踐中,我們將認真聽取相關專家和學生的建設性意見,對該綜合案例不斷完善,與時俱進,從而持續提升該課程的教學質量。
參考文獻:
[1] 沈瑩,高珍,張林.模式識別課程中的思政建設[J].教育現代化,2020,7(94):113-115,155.
[2] 沈瑩,高珍,張林.《用戶交互技術》榮譽課程建設方案探討[J].教育現代化,2020,7(89):104-108.
[3] SONKA M, HLAVAC V, BOYLE R. Image Processing, Analysis, and Machine Vision[M]. Stamford: CENGAGE Learning, 2008.
[4] 張林,沈瑩.面向計算機視覺課程的綜合性實驗平臺[J].計算機教育,2017(5):136-139.
[5] ZHANG Z. Flexible camera calibration by viewing a plane from unknown orientations[C]//Proceedings of International Conference on Computer Vision, 1999:666-673.
[6] ZHANG L, HUANG J, LI X, et al. Vision-based parking-slot detection: A DCNN-based approach and a large-scale benchmark dataset[J]. IEEE Trans. Image Processing, 2018(27):5350-5364.
[7] HUANG J, ZHANG L, SHEN Y, et al. DMPR-PS: A novel approach for parking-slot detection using directional marking-point regression[C]//Proceedings of IEEE Int'l Conf. Multimedia and Expo, 2019:212-217.
[8] LI L, ZHANG L, LI X, et al. Vision-based parking-slot detection: A benchmark and a learning-based approach[C]// Proceedings of IEEE Int'l Conf. Multimedia and Expo, 2017:649-654.