將視覺深度學習模型應用於非視覺領域

摘要: 本文可以讓你瞭解到,具有創造性的數據處理方法如何才能將深度學習視覺的功能應用於非視覺的領域。

介紹

近些年來,深度學習技術已經徹底改變了計算機視覺領域。由於遷移學習和各種各樣的學習資源的出現,任何人都可以通過使用預訓練的模型,將其應用到自己的工作當中,以此獲得非常好的結果。隨着深度學習越來越商業化,希望它的創造性能應用在不同的領域上。

今天,計算機視覺領域中的深度學習在很大程度上解決了視覺對象的分類、目標檢測和識別問題。在這些領域,深度神經網絡(Deep Neural Network,DNN)的表現要勝過人類。

即使數據不是可視化的,但你仍然可以利用這些視覺深度學習模型的力量,主要是卷積神經網絡(Convolutional Neural Network,CNN)。要做到這一點,你必須將數據從非視覺領域遷移到視覺領域(圖像)裏,然後使用一個經過在圖像和數據上訓練過的模型。你將會感嘆這種方法是多麼的強大。

在本文中,我將介紹3個案例,這是關於公司如何進行創造性地深度學習應用,將視覺深度學習模型應用於非視覺領域。在每一個案例中,都會對一個非計算機視覺的問題進行轉換和描述,以便更好地利用適合圖像分類的深度學習模型的能力。

案例1:石油工業

在石油工業中,遊樑式抽油機(Beam pumps)常常用於從地下開採石油和天然氣。它們由連接在移動樑上的發動機來提供動力。移動樑將發動機的旋轉運動傳遞給抽油杆的垂直往復運動,抽油杆作爲一個動力泵,再將油輸送到地面上。

遊樑式抽油機

遊樑式抽油機作爲一種複雜的機械系統,很容易發生故障。爲了方便診斷排查,在抽油機上安裝了一個測功機,用於測量桿上的負載。測量後,繪製出一張測功機的動力泵卡片,圖上顯示了發動機在旋轉循環過程中每個部分的負載。

測功機卡片示例

當遊樑式抽油機出故障的時候,測功機卡片上的形狀會改變。這個時候,通常會邀請專業的技術人員過來檢查卡片,並根據抽油機出現故障的部分來判斷需要採取什麼措施和方法來進行維修。這個過程不僅非常耗時,而且還需要非常深入的專業知識纔能有效地解決問題。

另一方面,這個過程看起來有可能是可以自動化完成的,這就是爲什麼嘗試過典型的機器學習系統而並沒有取得很好效果的原因,準確率大約爲60%。

將深度學習應用到這個領域的一個公司是Baker Hughes。在這種情況下,測功機卡片被轉變爲圖像,然後作爲輸入到Imagenet的預訓練模型中。這個結果非常令人印象深刻,精度從60%上升到93%,只需採用預訓練的模型並用新的數據對其進行一下微調。經過模型訓練的進一步優化,其精度達到了97%。

上圖是Baker Hughes部署的系統示例。在左側,你可以看到輸入圖像,在右側是故障模式的實時分類。

它不僅擊敗了以前的基於機器學習的傳統方法,而且公司不再需要抽油機的技術人員花費大量的時間來排查故障,他們過來就可以立即進行機械故障修復,從而大大提高了效率。

案例2:在線欺詐檢測

計算機用戶在使用計算機的時候有獨特的模式和習慣。當你在瀏覽一個網站或在鍵盤上鍵入電子郵件內容的時候,你使用鼠標的習慣是獨一無二的。

在這種特殊的情況下,Splunk解決了一個問題,即通過使用計算機鼠標的方式來對用戶進行分類。如果你的系統能夠根據鼠標使用的方式來識別用戶,那麼這種方法可以用於欺詐檢測。假設這樣一個情況:某些人在竊取了別人的用戶名和登錄密碼之後在網上消費。他們使用電腦鼠標的方式是獨一無二的,系統將很容易檢測到這種異常操作,並進一步防止發生欺詐交易,同時也會通知真正的賬戶所有者。

使用特殊的Javascript代碼,可以收集所有鼠標的行爲活動。軟件每5-10毫秒記錄一次鼠標的行爲。因此,每個用戶在每個網頁的行爲數據可以是5000–10000個數據點。數據代表了兩個挑戰:第一個挑戰是對於每個用戶來說都是海量的數據,第二個挑戰是每個用戶的數據集都將包含不同多個數據點,這不太方便,因爲,通常來說,不同長度的序列需要更復雜的深度學習架構。

這個方案是將每個用戶在每個網頁上的鼠標活動轉換爲一個單個圖像。在每幅圖像中,鼠標的移動是一條由不同的顏色來表示鼠標移動速度的線來表示的,而點擊左鍵和點擊右鍵則是由綠色和紅色的圓圈來表示的。這種處理初始數據的方法解決了上述的兩個問題:首先,所有圖像的大小都相同;其次,現在基於圖像的深度學習模型可以用於此類數據了。

在每幅圖像中,鼠標的移動是一條由不同的顏色來表示鼠標移動速度的線來表示的,而點擊左鍵和點擊右鍵則是由綠色和紅色的圓圈來表示的

Splunk使用TensorFlow和Keras爲用戶分類創建了一個深度學習的系統。他們做了2個實驗:

1. 當訪問相類似的頁面時,金融服務網站的用戶組分類:正常客戶與非客戶用戶。一個由2000張圖片組成的相對較小的訓練數據集。在對基於VGG16網絡的一個已修改結構進行了2分鐘的訓練之後,系統能夠以80%以上的準確度識別出這兩個類;

2. 用戶的個人分類。該任務是爲一個給定的用戶預測出是真實用戶還是一個模擬者。提供了一個只有360張圖片的非常小的訓練數據集。基於VGG16網絡,但是由於考慮到小數據集和減少過度擬合(有可能放棄和批量標準化)而進行了修改。經過了3分鐘的訓練,準確率達到了78%左右,考慮到任務具有的挑戰性,那麼這一點很令人印象深刻;

要了解更多相關內容,請參閱描述了系統和實驗過程的完整內容

案例3:鯨魚的聲音檢測

在這個例子中,谷歌使用卷積神經網絡來分析錄音並檢測出其中的座頭鯨。這對於科學研究來說很有幫助,例如跟蹤單個鯨魚的活動、叫聲的特性、鯨魚的數量等等。有趣不是目的,而是如何通過需要利用圖像的卷積神經網絡來處理數據。

將音頻數據轉換成圖像的方法是通過使用光譜圖來實現的。光譜圖是音頻數據基於頻率特徵的視覺來表示的。

一個男性說“十九世紀” 的聲音光譜圖例子

在將音頻數據轉換成光譜圖之後,谷歌的研究人員使用了ResNet-50網絡結構來訓練這個模型。他們能夠達到以下的性能表現:

  • 90%的準確度:90%的音頻剪輯被歸類爲鯨魚叫聲的分類;
  • 90%的敏感度:如果給一個鯨魚叫聲的錄音,那麼就會有90%的機會被打上敏感度的標籤;

讓我們把焦點從鯨魚叫聲轉移到處理音頻數據時可以做些什麼。當你創建光譜圖的時候,可以選擇要使用的頻率,這取決於你所擁有的音頻數據的類型。你將需要給人類的說話聲、座頭鯨的叫聲、或工業設備的錄音設置不同的頻率,因爲在所有的這些情況下,最重要的信息是包含在了不同的頻段裏。你不得不使用自己的專業領域知識來選擇相關的參數。例如,如果你使用的是人類聲音數據,那麼你的第一選擇應該是梅爾頻率倒譜圖。

目前有一些有比較好的軟件包可用於音頻。Librosa是一個免費的音頻分析Python庫,可以使用CPU生成光譜圖。如果你在TensorFlow中開發並且想在GPU上做光譜計算,那也是支持的。

請參考一下這篇文章,瞭解更多的關於谷歌如何處理座頭鯨數據的內容。

綜上所述,本文所闡述的一般方法都遵循了兩個步驟。首先,找到一種將數據轉換成圖像的方法;其次,使用一個經過預訓練的卷積網絡或者從頭開始進行訓練。第一步要比第二步更難,這是需要你必須有創造力的地方,要考慮到如果你的數據可以轉換成圖像。我希望提供的實例對解決你的問題有所幫助。



本文作者:【方向】

閱讀原文

本文爲雲棲社區原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章