攻讀計算機視覺和機器學習碩士給我帶來了什麼?

重磅乾貨,第一時間送達

本文轉自:機器學習演算法那些事

人工智慧就業市場持續火熱,越來越多的學子投身這一領域。然而,攻讀計算機視覺和機器學習研究生需要哪些先決條件?你將學到哪些知識?攻讀機器學習碩士是一種怎樣的體驗?英國薩里大學機器學習與計算機視覺專業碩士 Richmond Alake 對以上問題做了較為全面的解答。

攻讀計算機視覺和機器學習碩士給我帶來了什麼?

攻讀機器學習碩士的先決條件

在攻讀機器學習高等學位的過程中需要選定一些研究課題,這些課題反映了未來你在機器學習領域發展的專業方向。

機器學習領域的任何一門課程都涵蓋了許多知識量。因此,本文作者攻讀的碩士學位會首先確保學生滿足以下先決條件,然後再進行授課。

對線性代數和微積分(微分 / 最佳化)有充分的理解;

統計和機率學基礎;

程式語言相關背景;

本科階段畢業於計算機科學、數學、物理或電子與機械工程等專業。

進入正題,本文作者將一一介紹他在攻讀機器學習碩士階段都學到了什麼。

計算機視覺

作者首先介紹攻讀機器學習碩士過程中遇到的最強大課程模組:計算機視覺。計算機視覺和深度學習是作者本文非常感興趣的機器學習領域。

各種媒體都對計算機視覺技術在過去幾十年中的進步讚不絕口。面部識別系統的橫空出世是該領域必須要提到的一大成就。在一些主要國際機場、銀行和政府機構都可以發現面部識別系統的身影。

就作者本人而言,他在攻讀碩士學位的過程中對計算機視覺的研究是非常有條理的,即並不會一開始就直接實現並分析最先進的技術。

事實上,你需要往回倒退幾步,從學習最基礎的影象處理技術知識開始,而這些技術在人們今天使用的先進計算機視覺技術之前就被開發了出來。

在深度學習課程中,作者瞭解到,卷積神經網路(CNN)的較低層從輸入影象中學習到低階模式,比如線條和邊緣。但在 CNN 被引入到計算機視覺領域之前,就已經有了一些基於啟發式的技術被用於從影象中檢測出感興趣區域(ROI)以及特徵提取。

因此,作者學習了基於啟發式的技術的工作原理,並且在實際應用中運用到了這些知識,在計算機視覺方面的研究確保他了解了機器學習領域的基礎。

以下是作者在研究計算機視覺的過程中學到的一些關鍵話題和術語:

1。尺度不變特徵變換(Scale Invariant Feature Transform, SIFT):這是一種被用於生成影象的關鍵點描述子(特徵向量)的計算機視覺技術。生成的描述子包含一些特徵資訊,如邊緣、角、團塊等。描述子還可以用於檢測不同尺度和失真的影象中的物件。SIFT 已經被廣泛用於目標識別、手勢識別、目標跟蹤等應用中。SIFT 技術的關鍵之處在於它檢測到的特性對於任何仿射變換(比如放縮、平移和旋轉)都是不變的。SIFT 原始論文連結如下:https://www。cs。ubc。ca/~lowe/papers/ijcv04。pdf。

2。定向梯度直方圖(Histogram of Orientated Gradients, HOG):這是一種被用來從影象中提取特徵的技術。提取到的特徵是影象中邊和角提供的資訊,更具體地說是凸顯中的物件。簡而言之,該技術識別影象中邊緣(梯度)、角、線條的位置,獲取邊緣的方向資訊。HOG 描述子會生成一個直方圖,該直方圖包含從影象中檢測到的邊緣和方向資訊的分佈資訊。計算機視覺應用和影象處理領域中都能看到這種技術的身影,更詳細資訊請參閱:https://www。learnopencv。com/histogram-of-oriented-gradients/。

3。主成分分析(Principal Component Analysis, PCA):這是一種用於降低特徵豐富的資料集維度的演算法。降維是透過將資料點從較高維度投影到維度較低的平面來實現的,它仍然保留了資訊,並最小化了資訊損失。

此外,其它值得一提的話題還有:

線性插值(linear interpolation)

無監督聚類(K - 均值)

視覺詞袋模型(視覺搜尋系統)

那麼作者在學習早期有哪些開發性研究呢?

在早期,他開始開發一些基於計算機視覺技術的應用。物體分類是一個比較熱門的話題,同時也比較容易學習一些關於它的基本知識和實現方法。具體而言,他想要在 Matlab 環境下開發一個視覺搜尋系統。

Matlab 是一種用於高效數值計算和矩陣處理的程式語言,並且 Matlab 程式庫配備了一套演算法和視覺化工具。

由於作者過去具有 JavaScript、Java、Python 等語言環境下的開發經驗,他很快就學會了 Matlab 程式設計語法,從而可以專注於計算機視覺方面的研究。

更多視覺搜尋系統的資訊

作者要實現的視覺系統是相當基礎的,其工作原理是:使用者向系統傳入一張查詢影象,然後系統返回的結果是一組與輸入查詢影象相似的影象。值得一提的是,該系統包含一個儲存影象的資料庫,系統從中提取返回的結果影象(輸入查詢影象,輸出結果影象)。

這個視覺系統沒有使用任何花哨的深度學習技術,而是使用了前文提到的一些傳統的機器學習技術。

你只需將一個 RGB 影象轉換成灰度圖,然後在影象上施加一個特徵提取器;之後,系統就會提取出一個影象描述子,並將其表徵在一個 N 維特徵空間上。在這個特徵空間中,你可以透過計算兩個 N 維資料點之間的歐氏距離來得到相似的影象。

更深層次的理解和應用

理解計算機視覺並不僅僅侷限於處理影象,人們期望在影片中也用到這些演算法和技術。實際上,影片也就是影象序列,所以在輸入資料的準備和處理方面,你並不需要學習任何新的東西。

如果你使用的是 YOLO、RCNN 這樣的目標檢測框架,在一系列影象中進行目標跟蹤看起來就非常簡單。但是要認識到,進行計算機視覺研究並不只是在預訓練好的網路基礎上進行調優。在這裡,你需要理解該領域在過去幾年中是如何發展的,而獲得紮實理解的最佳方法是按照時間順序對各種傳統技術進行綜述。

因此,對於目標跟蹤任務,作者學習了下面幾個話題:

團塊追蹤模組(Blob trackers)

卡爾曼濾波器

粒子濾波器

馬爾科夫過程

與計算機視覺工程師的相關性

實際上,本文作者目前還沒有使用任何傳統的機器學習分類器,也不會在近期使用它們。

但是為了讓讀者瞭解前文提到的技術與成為計算機視覺工程師有多大的相關性,作者以自動駕駛汽車、車牌識別器和車道探測器為例進行展示說明,這些都結合了前文討論過的一到兩種方法。

攻讀計算機視覺和機器學習碩士給我帶來了什麼?

深度學習

深度學習技術是對計算機視覺研究的自然延伸。一些深度學習話題已經被包含在了計算機視覺模組中,而其它的深度學習話題是對傳統計算機視覺技術的擴充套件或改進。

深度學習話題的教學與作者的計算機視覺研究相類似。也就是說,在轉向學習高階話題和應用開發之前,要對該領域的基礎知識有紮實的理解。

攻讀計算機視覺和機器學習碩士給我帶來了什麼?

深度學習研究從理解最基本的影象構成單元(畫素)開始。你很快就會了解到,數字影象是一個包含許多畫素的網格。

在理解了影象的最基本的基礎之後,你將繼續學習如何在系統記憶體中儲存影象。「Framebuffer」指的是畫素在系統記憶體中儲存的位置(大多數 MOOC 都不會講這一點)

攻讀計算機視覺和機器學習碩士給我帶來了什麼?

此外,作者還學習了關於攝像裝置如何捕獲數字影象知識。他不得不承認,對智慧手機攝像頭捕獲影象的方式有一定的直觀理解是很棒的。

接下來他快速介紹了一些更酷的知識。

首先是卷積神經網路。如果你不瞭解卷積神經網路(CNN),你就無法學習深度學習,它們是密切相關的。

作者的研究介紹了 CNN 在過去 20 年中誕生並發展的時間線(從 LeNet-5 到 RCNN),以及它們在取代傳統工作流程完成物體識別等典型計算機視覺任務的作用。

作者的研究中介紹了對於深度學習早期提出的不同 CNN 架構的探索。透過對 AlexNet、LeNet、GoogLeNet 等具體架構的研究,他深入理解了卷積神經網路的內部構造,以及它們在解決諸如目標檢測、識別和分類等任務中的應用。

此外,作者學到的一項重要技能是:如何閱讀研究論文。

閱讀研究論文不是老師直接傳授給你的技能。如果你對深度學習和其他任何研究都持嚴謹的態度,那麼很有必要了解資訊和研究的來源。使用深度學習框架預訓練好的模型是非常容易的。儘管如此,如果想從事先進的研究工作,你還是應該瞭解每個架構的技術和元件的內在細節,而只有在研究論文中才能找到這些資訊。

以下是作者總結的深度學習模組中所涉及的一些話題:

多層感知機(Mutiplayer Perceptron, MLP):多層感知機是一些連續堆疊的若干層感知器模型。MLP 由一個輸入層、一個或多個被稱為隱藏層的 TLU、以及最終的輸出層組成;

神經風格遷移(NST):這是一種利用深度卷積神經網路和相關演算法從一張影象中提取內容資訊,並從另一張參考影象中提取風格資訊的技術。在提取了風格和內容資訊之後,會生成一個組合影象,這裡生成影象的內容和風格來自於不同的影象;

迴圈神經網路(RNN)和 LSTM:它們是神經網路架構的變體,可以接受任意大小的輸入,產生隨機大小的輸出資料。RNN 神經網路架構可以學習時序關係;

人臉檢測:用於實現影象和影片中的人臉自動識別和定位的系統。人臉檢測在面部識別、攝影技術、運動捕捉等領域有廣泛的應用;

姿態估計:從提供的數字資源(如影象、影片或一段影象序列)中推理出身體主要關節位置的過程。各種姿態估計技術被用於動作識別、人機互動、虛擬現實和 3D 圖形遊戲資源建立、機器人等應用中;

目標識別:識別與目標物件相關聯的類的過程。目標識別和目標檢測這兩種技術的最終結果和實現方法是類似的。雖然在各種各樣的系統和演算法中,目標識別過程是先於目標檢測進行的;

目標追蹤:在一段時間內的影象序列中識別、檢測並跟蹤一個感興趣目標的方法。在監控攝像頭和交通監控裝置的系統中存在諸多目標跟蹤應用;

目標檢測:目標檢測是一種可以識別影象中是否存在特定目標以及其位置的系統。請注意,需要檢測的物件可能是單數,也可能不止一個。

其它值得注意的主題和子話題還包括神經網路、反向傳播、CNN 網路架構,超解析度、手勢識別、語義分割等等。

與計算機視覺工程師的相關性

這基本上就是本文作者所從事的工作。到目前為止,他已經將人臉檢測、手勢識別、姿勢估計、語義分割模型整合到了遊戲邊緣計算裝置上。

具體來說,在作者當前的工作中,他已經實現、訓練並評估了大量的深度學習模型。如果你想要緊跟前沿演算法、工具,並與先進的公司合作,那麼深度學習就是一個可以讓你走在人工智慧實際商業發展前沿的領域。

論文

撰寫碩士論文旨在使你能夠使用所有學到的技能、知識和直觀感受來設計一個針對現實生活中問題的解決方案。

本文作者的論文是基於計算機視覺技術對四足動物進行運動分析,其中用到的關鍵性計算機視覺技術是姿態估計。

這是他第一次接觸深度學習框架,所以決定以使用卷積神經網路的深度學習解決方案來進行運動分析。

在深度學習框架的選擇上,他曾來回使用 Caffe 和 Keras,但最終選擇了 PyTorch,因為該框架提供了與任務相關的預訓練模型。作者使用的程式語言為 Python。

以下是作者在撰寫論文的過程中學到的一些東西:

遷移學習 / 調優

Python 程式語言

C# 程式語言

姿態估計的理論知識

使用 Unity3D 進行模擬的知識

Google 雲平臺的使用經驗

關於運動分析研究的更多資訊

運動分析指的是從清晰的運動影象中獲取運動的資訊和細節,或者表示序列到序列的運動描述的影象排序。利用運動分析的應用和操作可以得到有關運動感知和關鍵點定位的最直接細節資訊。複雜的應用程式使得我們可以利用序列相關的影象逐幀追蹤目標物件。

目前,在利用時序資料時,運動分析及其各種各樣的應用形式帶來了顯著的好處和豐富的資訊。不同行業(如醫療保健、製造業、機械、金融等)都受益於透過運動分析提供的結果和資訊。在這些行業中,運動分析的各種用例和方法可以解決問題或者為消費者創造價值。

在整個行業中,運動分析的多樣性間接地引入了各種各樣的運動分析任務子集,如姿態估計、目標檢測、目標追蹤、關鍵點檢測,以及其它不同的子集。

關於論文的更多資訊

本文作者的碩士論文提出了一種利用計算機視覺和機器學習技術進行運動分析的方法。該方法利用四足動物合成影象資料集訓練了一個預訓練好的關鍵點檢測網路。

Keypoint-RCNN 是 PyTorch 程式庫的內建模型,它擴充套件了原始的 Fast-RCNN 和 Faster-RCNN 的功能。具體來說,論文中的方法修改了在 COCO 2017 目標檢測和分割資料集上預訓練的 Keypoint-RCNN 神經網路架構,並利用合成的資料集對最後一層進行了重訓練。

透過擴充套件人體 17 個關節的關鍵點檢測基線框架,作者展示了該框架的一種擴充套件變體,它可以預測若干生成的帶有 26 個關節的四足動物的主要關節位置。

作者採用定量和定性評價策略,展示了改進後的 Keypoint-RCNN 架構在預測人工四足動物關鍵點時的視覺和度量效能。

論文部分實驗結果。

緊跟最新研究,持之以恆地學習

機器學習領域正發生著日新月異的變化,本文作者的課程學習內容對應了該領域 2018-2020 年的發展現狀。現在到了 2021 年,我們已經看到機器學習對其它領域的巨大貢獻。所以,如果你參加了一門機器學習課程,並且學習到了本文作者在這篇文章中並沒有提到的話題或學科領域,請不要感到驚訝。

不要忘記,在人工智慧領域中,你不僅僅需要學習建立模型。作為一個機器學習從業者,你必須緊跟最新的研究,所以要不斷學習。

下載1:OpenCV-Contrib擴充套件模組中文版教程

下載2:Python視覺實戰專案52講

下載3:OpenCV實戰專案20講