攻克機器學習碩士學位,我的那些年與必備技能

csdn 發佈 2020-08-01T19:38:11+00:00

然而相較於其他領域,人工智慧中的深度學習、機器學習、計算視覺、神經網絡等技術更為錯綜複雜,進修難度也更勝一籌。

編者按:人工智慧發展日趨成熟,也成為眾多開發者職業生涯的首選方向。然而相較於其他領域,人工智慧中的深度學習、機器學習、計算視覺、神經網絡等技術更為錯綜複雜,進修難度也更勝一籌。對此,對於入門和想要進階的學生及開發者群體,該如何攻克?在本文中,來自英國薩里大學機器學習與計算機視覺專業碩士Richmond Alake將從自身學業歷程出發,分享一下其在讀機器學習碩士的收穫,以及相關的經驗與課程,希望能幫助大家有所收穫。

作者 | Richmond Alake,已獲作者翻譯授權

譯者 | 鹿未來,責編 | 屠敏

頭圖 | CSDN 下載自東方 IC

出品 | CSDN(ID:CSDNnews)

以下為譯文:

其實,每所大學的課程不會有太大差異。所以,大家可以從本文了解機器學習和計算機視覺理學碩士的一些內容。除了在學習期間獲得的東西之外,我還會分享更多學術知識,以及作為一名計算機視覺工程師職位相關的其他信息。

攻讀機器學習碩士需要具備哪些必備技能?

研究生期間都會做一些選題,這些課題主要是反映機器學習領域的未來一些發展方向。而且機器學習的每個課程里都涵蓋了很多內容。因此,我在修讀MSc(Master of Science)學位需要確保在學習這些課程之前,還需要具備以下前提條件:

  • 理解線性代數和微積分(微分/優化)

  • 了解統計和機率研究

  • 具有程式語言背景

  • 擁有計算機科學、數學、物理或電子與機械工程專業學士學位

接下來介紹一下,我在讀機器學習碩士時學到的關鍵內容:

計算機視覺

從我比較強項的課程模塊說起,計算機視覺和深度學習研究是我真正非常感興趣的機器學習領域,或者說是開發技術能直接產生實際影響,這點著實吸引了我。

近幾十年來,媒體極大讚賞了計算機視覺取得的進步。如,面部識別系統的出現就非常重要,因為在國際機場、銀行和政府組織等重要場景中,面部識別系統幾乎無處不在。

我在碩士學業生涯中,對計算機視覺的學習研究比較有條理,我認為一開始不能直接進入實踐和分析最新技術階段,而是應該從了解基本圖像處理技術開始,這樣才能真正使用計算機視覺這一高級技術。

在深度學習中,想要了解卷積神經網絡的底層,要從輸入圖像(例如線條和邊緣)學習。不過,在卷積神經網絡(CNN)引入計算機視覺之前就有基於啟發式的技術可用於檢測特徵圖上的目標並從圖像中提取特徵。我的計算機視覺研究就是通過這一系列基於啟發式技術的工作原理,學以致用,才讓我對該該領域基礎有了理解。

計算機視覺研究為我提供了傳統機器學習技術的知識,還有處理圖像的技能,比如提取特徵並對從圖像中獲得的描述符進行分類等。

接下來,分享一下我在研究生期間用到的一些議題和術語,好奇的小夥伴可以看一下:

  • SIFT(Scale Invariant Feature Transform):這是一種計算機視覺技術,用於生成圖像關鍵點描述符(特徵向量)。生成的描述符包含有關特徵的信息,例如邊緣、拐角和斑點。描述符可用於檢測跨越不同比例和失真的圖像的對象。SIFT用於諸如對象識別、手勢識別和跟蹤之類的應用程式中。SIFT的關鍵在於,其檢測到的特徵對於仿射變換(例如縮放,平移和旋轉)是不變的。

  • HOG(Histogram of Orientated Gradients):這是一種用於從圖像中提取特徵的技術。提取的特徵是通過圖像中的邊緣和拐角提供的信息中得出的,更具體地說,是圖像中的對象提供的。簡而言之,該技術可以識別圖像中的邊緣(漸變)、角和線的位置,並且還可以獲取有關邊緣方向的信息。HOG描述符生成一個直方圖,其中包含有關邊緣分布的信息和從圖像中檢測到的方向信息。該技術可以在計算機視覺應用程式以及圖像處理中找到。

  • PCA(Principal Component Analysis):一種降維的算法。通過將數據點從較高的維度投影到較低的平面,但仍保持信息並最大程度地減少信息丟失,可以減小維度。

其他的還有:線性插值、無監督聚類(K均值)、視覺搜索等等。

一開始學習我就希望自己能開發出基於計算機視覺的App,對象分類又比較受歡迎,這樣相對來說就更容易實現既學知識又能實際應用。另外我的研究過程中是在Matlab上開發視覺搜索系統的。

Matlab是為高效的數值計算和矩陣處理而開發的一種程式語言,並且Matlab庫配備了一套算法和可視化工具。

之前JavaScript、Java和Python的編程經驗幫我很快搞定了Matlab編程語法,所以我就可以全神貫注的研究計算機視覺。

更多視覺搜索系統的信息

要實現的視覺系統很簡單,它就是通過查詢圖像傳遞給系統,之後系統將生成一組圖像結果,這些結果與傳遞到系統中的匹配相似圖像。要補充一點,該系統有一個存儲圖像的資料庫,是用於從中提取結果圖像(先查詢圖像,然後輸出結果圖像)。

視覺系統沒有使用任何花哨的深度學習技術,就是用了前面提到的一些傳統機器學習技術。只需傳遞轉換為灰度的RGB圖像,然後在圖像上添加特徵提取器即可,之後,提取圖像描述符並將其表示在N維特徵空間上。在此特徵空間內,就可以通過計算兩個N維點之間的歐式距離來得出相似的圖像。

更深層次的應用

計算機視覺的理解不僅局限於圖像上,還會涉及到視頻中使用的算法和技術。要明白,視頻可以理解為圖像序列,所以收集和處理輸入數據上就不需要學習新的內容。

如果使用諸如YOLO、RCNN等對象檢測框架,那在一系列圖像中進行對象跟蹤似乎就變得非常瑣碎。但要認識到,研究計算機視覺不僅是使用預訓練的網絡和微調。基於我個人在該領域的發展角度來看,紮實學習的最佳方法是隨著時間推移,在研究中慢慢積累這些傳統技術。

那麼,對於對象跟蹤任務,引入了以下內容:

  • Blob追蹤器

  • 卡爾曼濾波器

  • 粒子過濾器

  • 馬爾可夫過程

與計算機視覺的相關性

老實說,我目前沒有使用任何傳統機器學習中的分類器,而且我覺得我不會很快使用它。但是值得注意的是,自動駕駛汽車、車牌讀取器、車道檢測器均採用了上述所提及到了一到兩種方法。

深度學習

深度學習是計算機視覺研究的自然發展成果。計算機視覺與我的計算機視覺研究類似的方法,即在轉向高級主題和應用程式開發之前,對領域的基礎有了深入的了解。

深度學習研究始於對圖像、像素的基本構建塊的理解。數字圖像是包含像素集合併以網格的形式呈現。了解了圖像的基礎之後,就要繼續學習如何將圖像存儲在系統內存中。幀緩衝區是在系統內存中存儲像素的位置的名稱(很少有MOOC課程會教你這一點)。

另外,在還不了解卷積神經網絡(CNN)的情況下,你是無法學習深度學習的,因為它們是緊密相連的。

我的研究介紹了過去20年(從LeNet-5到RCNN)引入和開發CNN的時間表,以及它們在替代傳統管道中完成諸如對象識別之類的典型計算機視覺任務的作用。

在我的研究期間,介紹了深度學習早期提出的不同CNN架構的探索。AlexNet、LeNet和GoogLeNet是案例研究,用於對卷積神經網絡的內部知識及其在解決諸如目標檢測,識別和分類等任務中的應用的理解。

另外,我學會的一項重要技能是如何閱讀研究論文。閱讀研究論文並不是直接學習的技能。如果真的想要研究一下深度學習,那麼就要選擇好信息和研究的來源。

利用深度學習框架提供的預訓練模型相當容易。儘管如此,一項高級研究仍希望了解所提出的每種體系結構的技術和組件的內在細節,當然這些信息僅在研究論文中會提出。

在這總結了一些深度學習模塊的議題(還是跳過了定義,感興趣的同學可以看一下):

  • MLP:多層感知器(MLP)是幾層感知器,一個接一個地連續堆疊。MLP由一個輸入層,一個或多個TLU層(稱為隱藏層)和一個最後一層(稱為輸出層)組成。

  • NST:一種涉及利用深度卷積神經網絡和算法從一幅圖像中提取內容信息並從另一幅參考圖像中提取樣式信息的技術。在提取樣式和內容之後,將生成一個組合圖像,其中生成的圖像的內容和樣式來自不同的圖像。

  • RNN和LSTM:神經網絡體系結構的一種變體,可以接受任意大小的輸入作為輸入,並生成隨機大小的輸出數據。RNN神經網絡架構學習時間關係。人臉檢測:這是實施系統任務的一個術語,該系統可以自動識別和定位圖像和視頻中的人臉。在與面部識別,攝影和運動捕捉相關的應用程式中存在面部檢測。

  • 姿勢估計:從提供的數字資產(例如圖像,視頻或圖像序列)中推斷出人體主要關節位置的過程。姿勢估計的形式存在於諸如動作識別,人類交互,為虛擬現實和3D圖形遊戲創建資產,機器人技術等應用程式中。

  • 對象識別:識別與目標對象關聯的類的過程。對象識別和檢測是具有相似最終結果和實現方法的技術。儘管識別過程先於各種系統和算法中的檢測步驟。

  • 跟蹤:一種在一段時間內識別,檢測和跟蹤圖像序列中的關注對象的方法。在許多監控攝像機和交通監控設備中都可以找到系統內跟蹤的應用。

  • 對象檢測:對象檢測與Computer Vision相關聯,描述了一種可以識別圖像中所需對象或物體的存在和位置的系統。請注意,要檢測的對象可能有單個或多個出現。

其他的還包括像神經網絡,反向傳播,CNN網絡架構,超解析度,手勢識別,語義分割等......

出於興趣,我已經在邊緣設備上合併了面部檢測,手勢識別,姿勢估計和語義分割模型。在目前的職位上,我實踐,訓練和評估了許多深度學習模型。如果你想在先進的公司中使用大量前沿算法,工具,那麼深度學習就是一個可以使您站在AI實用商業開發的最前沿的領域。

論文

碩士學位論文的目的就是要利用在學習過程中獲得的所有技能、知識和經驗,為基於現實生活的問題設計解決方案。

我寫的是基於計算機視覺技術對四足動物進行運動分析,運動分析用到的是計算機視覺技術裡面的姿勢估計。

這是我第一次被引入深度學習框架領域。我對運動分析的解決方案是基於卷積神經網絡與深度學習的解決方案。在選擇框架時,我曾在Caffe和Keras之間猶豫過,但由於PyTorch具有與任務相關的隨時可用的預訓練模型,所以我選擇了PyTorch。Python是我選擇的程式語言。

這是我寫完論文後學習到的內容:

  • 轉移學習/微調

  • Python程式設計語言

  • C#程式語言

  • 姿勢估計的理論

  • 有關如何使用Unity3D進行仿真

  • 使用Google Cloud Platform

在這裡擴展說一下運動分析:

運動分析是指從清晰的運動圖像中獲取運動信息和細節,或代表序列到運動序列描述的圖像排序。利用運動分析的應用程式和操作的結果以最直接的形式詳細介紹了運動檢測和關鍵點定位。複雜的應用程式允許利用順序相關的圖像逐幀跟蹤對象。

目前,運動分析及其各種應用形式在時間數據上使用時,可提供更多的信息。不同行業例如醫療保健、製造、機械、金融等行業,都在使用應用運動分析的方法來解決問題或為消費者創造價值。

整個行業對於利用運動分析的多樣性,已經間接引入了運動分析的各種子集,例如姿勢估計、對象檢測、對象跟蹤、關鍵點檢測以及其他不同子集。

再說說論文中的其他內容:

論文提出了一種利用計算機視覺和機器學習技術進行運動分析的方法。該方法是使用合成的四足動物圖像數據集來訓練預訓練的關鍵點檢測網絡。

Keypoint-RCNN是Pytorch庫中的內置模型,它擴展了原始Fast-RCNN和Faster-RCNN的功能。

論文中的方法修改了在COCO 2017對象檢測和分割數據集上預訓練的Keypoint-RCNN神經網絡架構,並使用合成生成的數據集對最後一層進行了訓練。

通過擴展用於人體的17個關節的人體關鍵點檢測的基準框架,我提出了該框架的擴展,該框架可以預測幾個26個關節產生的四足動物的主要位置。

論文的結果節選

定性和定量評估策略可以很明顯的改進Keypoint-RCNN體系結構在人工四足動物上預測關鍵點時的視覺和度量性能。

如果你在研究中已經實現了這些,我就有點班門弄斧。

結論

計算機領域變化太快了,我的課程是從2018年-2019年的,現在已經2020年了,我們會看到大量更多的機器學習領域的貢獻,所以,如果沒有在我的論文中看到,你在做機器學習過程中看到的或學到的一些議題,也不要驚訝。

不要忘了,在AI領域,你要做的不光是學習一些模型,還要不斷地研究,不斷地學習。

最後,我希望我的這篇文章對大家有用,歡迎大家留言,說說你在學習ML和CV的時候學到了哪些知識並應用了實際場景中拉~

原文:https://towardsdatascience.com/what-i-learnt-from-taking-a-masters-in-computer-vision-and-machine-learning-69f0c6dfe9df

本文為 CSDN 翻譯,轉載請註明來源出處。

關鍵字: