我在攻读计算机视觉和机器学习硕士学位时学到了什么
正文字數:5085 ?閱讀時長:10分鐘
這篇文章介紹了我的經驗和課程內容,但我相信其他大學的課程和我所學習的不會有太大的差別。因此,讀者可以把這篇文章作為一個窗口,用來了解機器學習和計算機視覺的碩士學位課程以及內容。
Posted by?Richmond Alake?
url :?https://towardsdatascience.com/what-i-learnt-from-taking-a-masters-in-computer-vision-and-machine-learning-69f0c6dfe9df
我寫這篇文章是為了反思和總結我在攻讀機器學習碩士學位時學到的東西和收獲。我不得不承認,我的研究中有些部分是十分有用的,有些部分則沒有。
這篇文章介紹了我的經驗和課程內容,但我相信其他大學的課程和我所學習的不會有太大的差別。因此,一些讀者可以把這篇文章作為一個窗口,用來了解機器學習和計算機視覺的碩士學位課程以及內容。
除了關于我在學習期間所學知識和信息外,我還將介紹和引用所獲得的學術知識與我目前擔任計算機視覺工程師的工作之間的相關聯的信息。
?
前提條件
機器學習的高級學位有幾個選定的主題,反映了機器學習領域的發展方向。
在機器學習的任何一門課程中都有太多的內容要涉及、涵蓋。因此,我所修讀的碩士學位需要確保了學生在接受課程之前具備以下先決條件。
?
很好地理解線性代數和微積分(微分/優化)?
基礎的統計和概率研究
編程語言背景??
計算機科學,數學,物理或電子與機械工程專業的本科學習?
現在開始介紹我在攻讀機器學習碩士學位時學到的關鍵信息。
?
1. 計算機視覺
讓我從課程中最強大的模塊開始。
?
機器學習領域中我真正感興趣的是計算機視覺和深度學習,也許我被吸引到這個領域是因為開發的技術可以產生直接的影響。
?
媒體對計算機視覺技術幾十年來的進步贊不絕口。快速出現的面部識別系統是不容錯過的。現在在主要的國際機場,銀行和政府組織中都可以找到面部識別系統的應用。
我的碩士課程在計算機視覺方面的研究非常有條理。您不應期待直接進入實現和分析最新技術水平。
事實上,您向后退了幾步。您首先要從從獲得基本圖像處理技術的知識開始,這些技術是在引入我們今天看到和使用的計算機視覺高級技術之前發展起來的。
Photo by?Gery Wibowo?on?Unsplash
在深度學習中,我們了解到卷積神經網絡的較低層從輸入圖像(如線條和邊緣)中學習較低層級的模式。
但是,在將卷積神經網絡(CNN)引入計算機視覺之前,已有一些基于啟發式的技術用于檢測感興趣區域和從圖像中提取特征。
我的計算機視覺研究通過獲得有關這些基于啟發式技術的工作原理以及在實際應用中如何使用的知識,確保了我對該領域基礎的理解。
計算機視覺的研究使我獲得了傳統機器學習技術在處理圖像的知識,提取特征并對從圖像中獲得的描述符進行分類。
以下是我在計算機視覺研究期間介引入的幾個關鍵主題和術語:
可以隨意跳過定義。我把這些放在這里是為了給好奇的人提供一些信息。
(尺度不變特征變換)SIFT:這是一種用于生成圖像關鍵點描述符(特征向量)的計算機視覺技術。生成的描述符包含有關邊緣,拐角和斑點等特征的信息。描述符可用于檢測跨不同比例和失真圖像的物體。SIFT可用于物體識別,手勢識別和跟蹤之類的應用程序中。這是介紹該技術的原始研究論文的鏈接。SIFT的關鍵在于,其檢測到的特征對于仿射變換(例如縮放,平移和旋轉)是不變的。
(方向梯度直方圖)HOG:這是一種用于從圖像中提取特征的技術。提取的特征來自通過圖像中的邊緣和角落提供的信息,更具體地說,是圖像中的物體。對這種技術的簡單描述是,它可以識別圖像中的邊緣(梯度),角落和線的位置,并且還可以獲取有關邊緣方向的信息。HOG描述符生成一個直方圖,其中包含有關邊緣分布的信息和從圖像中檢測到的方向信息。該技術可以應用在計算機視覺應用程序以及圖像處理中。這個鏈接中包含更多信息。
主成分分析(PCA):一種減少多特征數據集中特征的算法。通過將數據點從較高的維度投影到較低的平面,但仍保持信息并使信息損失最小化,可以減小維度。
其他值得一提的主題如下
線性插值
無監督聚類(K均值)
視覺單詞袋(視覺搜索系統)
在我學習的早期,我就期望開始開發基于計算機視覺的應用程序。物體分類是一個熱門且受歡迎的話題,也是一個比較容易獲得一些基本知識并加以實現的主題。
在我的研究中,我的任務是在Matlab中開發一個視覺搜索系統。
Matlab是一種為有效的數值計算和矩陣處理而開發的編程語言,并且Matlab庫配備了一套算法和可視化工具。
過去在JavaScript、Java和Python方面編程經驗幫助我很容易地學會了Matlab編程語法,這樣我就可以全身心投入到研究的計算機視覺方面。
更多信息
要實現的視覺系統是相當基礎的,它的工作原理是通過系統傳遞一個查詢圖像,然后系統生成一組圖像結果,并將這些結果傳遞到系統中的查詢圖像相似。
我應該提到的是,該系統包含一個存儲圖像的數據庫,用于從中提取結果圖像(先查詢圖像,然后輸出結果圖像)。
這個視覺系統沒有使用任何花哨的深度學習技術,而是使用了前面提到的一些傳統的機器學習技術。
你只需傳遞一個RGB圖像,并將該圖像轉換為灰度圖像,然后將特征提取器強加到圖像上即可;然后,提取圖像描述符并將其表示在N維特征空間上。
在這個特征空間中,可以通過計算兩個N維點之間的歐幾里德距離來計算出相似的圖像。
事情開始變得嚴肅起來
理解計算機視覺不僅僅局限于處理圖像,你還可以在視頻處理中運用算法和技術。
請記住,視頻只是圖像序列,所以在準備和處理輸入數據方面,您沒有學到任何新的東西。
如果使用的是諸如YOLO,RCNN等物體檢測框架,則在一系列圖像中進行對象跟蹤似乎非常瑣碎。但是要認識到,研究計算機視覺并不是要使用預先訓練好的網絡和微調。它是關于理解這個領域本身是如何在這些年里進步的以及當下的發展狀況,而獲得堅實的、扎實的理解的最好方法是通過調查隨著時間推移而發展起來的各種傳統技術。
因此,對于對象跟蹤的任務,引入了以下主題:
Blob跟蹤器
卡爾曼濾波器?
粒子過濾器
馬爾可夫過程
與計算機視覺工程師的相關性
老實說,我目前尚未使用任何傳統的機器學習分類器,而且我不認為我會很快使用它們。
但是,為了讓您了解其中提到的某些技術的相關性,值得指出的是,自動駕駛汽車,牌照讀取器和車道檢測器采用了前面討論的一種或兩種方法。
Photo by Bram Van Oost on Unsplash.
Photo by?TrentSzmolnik?on?Unsplash.
2. 深度學習
深度學習是計算機視覺研究的必然發展。
計算機視覺模塊中已經涵蓋了一些深度學習主題,而其他深度學習主題則是對傳統計算機視覺技術的擴展或改進。
深度學習中的主題教學采取了與我的計算機視覺研究類似的方法,那就是在創建一個扎實理解該領域的基礎知識,之后再轉到高級主題和應用程序開發。
Imagefrom kisina/Getty Images
深入學習的研究始于對圖像的基本構建塊像素的理解。
您很快就會知道數字圖像是一個包含像素集合的網格。
在理解了圖像的原子基礎之后,您將繼續學習圖像是如何存儲在系統內存中的。
Framebuffer(幀緩沖區)是在系統內存中存儲像素位置的名稱(很多mooc都不會教你這個)。
Photoby?GeryWibowo?on?Unsplash
?
我還了解了相機設備是如何捕捉數字圖像的知識。
我必須承認,對于智能手機相機如何拍攝圖像有一定的直覺是很棒的事情。
讓我們繼續探索一些更酷的東西。
如果你是在不了解卷積神經網絡(CNN)的情況下,你就無法學習深度學習,因為它們是相輔相成的。
我的研究介紹了近20年來CNNs的引入和發展的時間表(從LeNet-5到RCNNs),以及它們在取代完成類似于物體識別的典型計算機視覺任務的傳統方式中扮演的角色。
在我的研究過程中,我介紹了在深度學習早期提出的對于不同CNN結構的探索。AlexNet、LeNet和GoogLeNet 是用于對卷積神經網絡的內部知識及其在解決諸如目標檢測,識別和分類等任務中的應用的理解的案例。
我學到的一項重要技能是如何閱讀研究論文。
閱讀研究論文并不是你在這篇文章里直接學到的技能。如果你對深度學習和一般的學習是認真的,那么去尋找信息和研究的來源總是個好主意。利用深度學習框架提供的預訓練模型是相當容易的。盡管如此,一項高級研究仍希望你了解所提出的每種體系架構的技術和組件的內在細節,這些信息只在研究論文中呈現。
以下是深度學習模塊所涉及主題的摘要:
請隨意跳過定義。我把這些放在這里是為了給好奇的人提供一些信息。
?
多層感知器(MLP):多層感知器(MLP)是一層層感知器堆疊起來的結構。MLP 由一個輸入層,一個或多個 TLU 層(稱為隱藏層)和一個最后一層(稱為輸出層)組成。
神經風格傳遞(NST):一種關于利用深卷積神經網絡和算法從一副圖像中提取內容信息并且從另一幅參考圖像中提取樣式信息的技術。在提取樣式和內容之后,生成組合圖像,其中生成的圖像的內容和樣式來自不同的圖像之中。
遞歸神經網絡(RNN)和LSTM:神經網絡體系結構的一種變體,可以接受任意大小的輸入作為輸入,并生成隨機大小的輸出數據。RNN神經網絡架構用于學習時序關系。
人臉檢測:這是用于實現能夠自動識別和定位圖像和視頻中的人臉技術的術語。人臉檢測用于面部識別、攝影和情緒捕捉等相關的應用程序中。
姿勢推斷:從提供的數字資產(如圖像、視頻或圖像序列)中推斷出身體的主要關節位置的過程。姿勢推斷技術存在于諸如動作識別、人類交互、虛擬現實和三維圖形游戲創建、機器人技術等應用程序中。
對象識別:識別與目標對象關聯的類的過程。對象識別和檢測是具有相似的最終結果和實現方法的技術。雖然在各種系統和算法中,識別的過程通常會先于檢測步驟。
跟蹤:一種在一段時間內識別、檢測和跟蹤圖像序列中關注對象的方法。在許多監控攝像機和交通監控設備中都可以找到系統內跟蹤的應用。
對象檢測:對象檢測與計算機視覺相關聯,描述了一種能夠識別圖像中目標對象或物體的存在和位置的系統。請注意,可能會出現一個或多個要檢測對象的出現。
其他值得注意的主題和子主題包括神經網絡,反向傳播,CNN網絡架構,超分辨率,手勢識別,語義分割等。
與計算機視覺工程師的相關性
這基本上是我的主要收入來源。
到目前為止,我出于游戲目的已經將人臉檢測、手勢識別、姿勢估計和語義分割模型整合到邊緣設備上。
在我目前的崗位上,我實現、培訓和評估了許多深度學習模式。?如果您想在先進的公司中使用大量前沿算法,工具,那么深度學習就是一個可以使您站在AI實際商業開發的最前沿的領域。
3. 論文
碩士學位論文的目的是使您能夠利用在學習過程中獲得的所有技能,知識和直覺,為基于現實生活的問題設計解決方案。
我的論文是基于計算機視覺技術對四足動物進行運動分析。姿態推斷是我用來進行運動分析的核心計算機視覺技術。
這是我第一次被引入到深度學習框架領域。我已經決定,我對運動分析的解決方案將是一個利用卷積神經網絡的基于深度學習的解決方案。
為了選擇框架,我在 Caffe 和Keras 之間徘徊,但是由于PyTorch具有與任務相關的隨時可用的預訓練模型,因此我選擇了PyTorch。Python是我選擇的編程語言。
?
這是我從論文中學到的項目清單:
遷移學習/微調
Python程式設計語言
C#編程語言
姿態推斷的理論知識
有關如何使用Unity3D進行仿真的知識
使用Google Cloud Platform的經驗
有關運動分析的更多信息
運動分析是指從清晰的運動圖像或表示順序的運動時序圖像的整理中獲取運動信息和細節所涉及的過程的術語。
利用運動分析的應用程序和操作的結果以最直接的形式詳細介紹了運動檢測和關鍵點定位。復雜的應用程序可以利用順序相關的圖像逐幀跟蹤對象。
目前,運動分析及其各種應用形式在處理時態數據時提供了顯著的好處和豐富的信息。
不同的行業受益于通過運動分析提供的結果和信息,醫療保健、制造業、機械、金融等行業都有各種各樣的使用案例和應用運動分析的方法來為消費者解決問題或創造價值。
運動分析在整個行業中的應用方式的多樣性已經間接地引入了運動分析的各種形態的子集,例如姿勢推斷、對象檢測、對象跟蹤、關鍵點檢測和其他不同的子集。
有關論文的更多信息
本文提出了一種利用計算機視覺和機器學習技術進行運動分析的方法。該方法以四足動物合成圖像為數據集,訓練一個預訓練的關鍵點檢測網絡。
KeypointRCNN是Pytorch庫中的一個內置模型,它擴展了原始FastRCNN和Faster RCNN的功能。本文中的方法修改了在COCO2017對象檢測和分割數據集上預先訓練的Keypoint-RCNN神經網絡架構,并用合成的數據集對最后一層進行了再訓練。
通過擴展用于人體17個關節的人體關鍵點檢測的基線框架,我提出了一個框架的擴展,該框架可以在多個26個關節四足動物上預測主要關節的位置。
論文結果片段
?
定性和定量評估策略用于顯示改進的 Keypoint-RCNN 體系結構在合成四足動物上預測關鍵點時的視覺和度量性能。
?
如果你已經做到了這一點,我為你鼓掌……讓這篇文章結束吧
4. 總結
機器學習領域正在迅速地發生變化;我的課程內容是與2018-2019的研究現狀相關的。現在到了2020年,我們已經看到了機器學習已經在一些其他領域做出了巨大貢獻。所以,如果您上了一門機器學習課程,并且正在學習我在本文中沒有提到的主題或課題領域,請不要感到驚訝。
因此不要忘了,在人工智能領域中,作為一個機器學習從業者,你不僅需要學習如何自己創建模型,而且必須要保持不停地學習才能跟上新的研究步伐。
LiveVideoStackCon 2020?北京
2020年10月31日-11月1日
點擊【閱讀原文】了解更多詳細信息
總結
以上是生活随笔為你收集整理的我在攻读计算机视觉和机器学习硕士学位时学到了什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【线上分享】快直播—超低延迟直播技术方案
- 下一篇: 【传统PSTN与互联网通信】