人工智能就業市場持續火熱,越來越多的學子投身這一領域。然而,攻讀計算機視覺和機器學習研究生需要哪些先決條件?你將學到哪些知識?攻讀機器學習碩士是一種怎樣的體驗?英國薩里大學機器學習與計算機視覺專業碩士 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-2019 年的發展現狀。現在到了 2020 年,我們已經看到機器學習對其它領域的巨大貢獻。所以,如果你參加了一門機器學習課程,并且學習到了本文作者在這篇文章中并沒有提到的話題或學科領域,請不要感到驚訝。
不要忘記,在人工智能領域中,你不僅僅需要學習創建模型。作為一個機器學習從業者,你必須緊跟最新的研究,所以要不斷學習。
編輯:jq
-
濾波器
+關注
關注
161文章
7822瀏覽量
178162 -
機器學習
+關注
關注
66文章
8419瀏覽量
132675 -
卷積神經網絡
+關注
關注
4文章
367瀏覽量
11867
原文標題:攻讀計算機視覺和機器學習碩士給我帶來了什么?
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論