帳號:
密碼:
CTIMES / 文章 /   
跨出影像分類:更多關於深度學習應用
 

【作者: Johanna Pingel】   2018年11月20日 星期二

瀏覽人次:【5351】
  


深度學習網路已被視為多功能的工具。雖然它最初主要被用來進行影像的分類,不過深度學習網路也漸漸被運用在其他各式各樣的任務。深度學習網路具備精確度以及處理速度—你不見得需要成為相關領域專家,它也能夠幫助你執行龐大資料集的複雜分析。本文將列舉幾種可以考慮使用深度學習網路的任務案例。


文字分析

在這個範例,我們將分析推特(twitter)資料來判斷某一個特定字詞或片語所夾帶的情緒是正面或負面。情緒分析可以被運用在許多實際的應用,比如品牌建立、政治活動、以及廣告。


機器學習從以前到現在被普遍使用在情緒分析。一個機器學習模型能夠分析個別字詞,不過深度學習模型卻可以用來完成句子,大幅地增加了精確度。


訓練集之中包含了數以千計的推特訊息(tweets)範例,這些訊息被歸類為正面或負面。以下為一個訓練推特訊息的範例:


























推特訊息(Tweet



情緒(Sentiment



“I LOVE @Health4UandPets u guys r the best!!”



正面 Positive



“@nicolerichie: your picture is very sweet”



正面 Positive



“Back to work!”



負面 Negative



“Just had the worst presentation ever!”



負面 Negative



我們移除像是”the”和”and”等無法幫助演算法學習的停用詞來清理資料。接下來,我們上傳一個長短期記憶(long short-term memory,LSTM)網路,它是一種能夠隨著時間學習相依性的遞歸神經網絡(recurrent neural network,RNN)。


LSTMs擅長分類順序和時間序列資料。而在分析文字時,LSTM不僅考慮到個別的字詞,也考慮到句子結構和字詞的組合。


該網路的MATLAB程式碼很簡單:


layers = [ sequenceInputLayer(inputSize)


lstmLayer(outputSize,'OutputMode','last')


fullyConnectedLayer(numClasses)


softmaxLayer


classificationLayer ]


LSTM在GPU執行訓練的速度很快,只需要6分鐘就能處理完30個世代的資料(完整傳遞資料)。


我們所訓練的模型也可以使用在新的資料。舉例來說,我們可以利用模型來判斷在情緒分數和股價之間是否存在相互關係。


語音辨識

在這個範例,我們想要把演說音訊檔分類到相對應的字詞類別。乍看之下,這項任務的問題與影像分類完全不同,不過實際上卻相當類似。光譜圖可以被視為把1D音訊檔案中訊號轉換為2D視覺化(圖1)。我們可以使用它作為卷積神經網路(convolutional neural network,CNN)的輸入,如同我們使用一個「真正」的影像。



圖1 : (上)原始聲音訊號;(下)對應光譜圖。
圖1 : (上)原始聲音訊號;(下)對應光譜圖。

spectrogram()函式是可以把音訊檔案轉換為對應的時間定位頻率(time-localized frequency)的一種簡單方法。然而,演說是一種音訊處理的特定格式,它的重要特點被定位在特定頻率。由於想要讓CNN集中在這些定點,所以我們使用被設計來把目標鎖定在與演說最為相關的頻率區域的梅爾頻率倒頻譜(Mel-frequency cepstral)係數。


我們把訓練資料平均地分配到我們想要分類的字詞類別中。


為了降低錯誤的機率,我們加入一個類別來放置可能與期望類別混淆的字詞。比如說,期望的字詞是”on”時,像是”mom”、”dawn”、以及”won”等字詞會被放進”unknown”類別。這個網路並不需要知道這些字詞,因為他們不是要被辨識的單詞。


我們接下來定義一個CNN。由於我們以光譜圖作為輸入,因此我們可以把類似於影像CNN的架構用在這裡。


模型在經過訓練之後,它會將輸入影像(光譜圖)分類到適當的類別(圖2)。確認資料集(validation set)的準確度約為96%。



圖2 : 單字”yes”的分類結果
圖2 : 單字”yes”的分類結果

影像降噪

小波和濾波器一直以來都是常見的降噪方法。在這段範例,我們將看到預訓練(pretrained)影像降噪CNN(DnCNN)如何應用在一組包含高斯雜訊(Gaussian noise)的圖片(圖3)。


圖3 : 加入高斯雜訊的原始影像
圖3 : 加入高斯雜訊的原始影像

我們由下載一張內含高斯雜訊的圖片開始。


imshow(noisyRGB);


由於這是一張彩色的圖片,而網路是以灰階圖片訓練,這項處理唯一比較棘手的地方是要把圖片分離為三個單獨的通道:紅(red,R)、綠(green,G)、藍(blue,B)。


noisyR = noisyRGB(:,:,1);


noisyG = noisyRGB(:,:,2);


noisyB = noisyRGB(:,:,3);


載入預訓練的DnCNN網路。


net = denoisingNetwork('dncnn');


現在我們可以使用它來從每一個顏色通道移除雜訊。


denoisedR = denoiseImage(noisyR,net);


denoisedG = denoiseImage(noisyG,net);


denoisedB = denoiseImage(noisyB,net);


接著重新合併經過降噪的顏色通道來形成經過降噪的RGB圖片。


denoisedRGB = cat(3,denoisedR,denoisedG,denoisedB);


imshow(denoisedRGB);


title('Denoised Image')


快速地看一下來比較原圖(無噪)和經過降噪的圖片,可以得到還算合理的結果。



圖4 : (左)原圖(無噪);(右)經過降噪的圖片。
圖4 : (左)原圖(無噪);(右)經過降噪的圖片。

我們再來把圖片放大來檢查幾個細節:


rect = [120 440 130 130] ;


cropped_orig = imcrop(RGB,rect);


cropped_denoise = imcrop(denoisedRGB,rect);


imshowpair(cropped_orig,cropped_denoise,'montage');


圖5放大後的影像顯示降噪夾帶了一些副作用—顯然地,原圖的解析度較高,特別是在屋頂和草的地方。接著,可以視圖片的使用目的來決定降噪結果可以被接受,或者需要進一步的處理圖片。



圖5 : 放大後的部分圖片。
圖5 : 放大後的部分圖片。

如果你考慮使用DnCNN來進行影像降噪,要記住它只能辨識被訓練過的雜訊類型—在這個範例是高斯雜訊。如需要更大的彈性,你可以使用MATLAB和深度學習工具箱(Deep Learning Toolbox),利用預先定義的層級來訓練自己的網路,或者完全客製一個降噪神經網路。


(本文作者Johanna Pingel任職於MathWorks公司)


相關文章
開發具備距離選通攝影功能的水下3D攝影機
智慧手機的神經網路處理器時代
人工神經網路打開AI應用新局
處於邊緣的工業機器視覺應用開發選項
透過建模與模擬優化電池性能設計
comments powered by Disqus
相關討論
  相關新聞
» 2019鼎新高峰年會-企業數位化轉型論壇圓滿閉幕
» 工業資安潛在風險不容小覷 趨勢科技呼籲業者應檢視既有缺口
» MathWorks攜手鈦思 舉辦首屆MATLAB深度學習競賽
» 11國69家國際新秀匯聚 Fintech Taipei秀金融創新應用
» 推動營建產業數位轉型 歐特克簽署4 MOU拓展BIM應用層面
  相關產品
» 達梭系統幫助奇異航空推動創新與數位連續性
» PTC產品生命週期管理SaaS前四季訂單翻倍
» PTC推出新版ThingWorx製造業應用程式
» 西門子計畫推出全新數位化零件製造平台
» MAKEVR將專業設計、模型製作、3D列印帶入虛擬實境

AD


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2019 遠播資訊股份有限公司版權所有 Powered by O3
地址:台北市中山北路三段29號11樓 / 電話 (02)2585-5526 / E-Mail: webmaster@ctimes.com.tw