TensorFlow應用技術(shù)拓展—圖像分類
1.科研平臺環(huán)境部署操作拓展
針對于機器學習中的模型訓練,本人推薦大家多學習TensorFlow官方的課程或資源,比如中國大學MOOC上的兩門課程??《 TensorFlow 入門實操課程 》???和??《 TensorFlow 入門課程 - 部署篇 》?????蒲谢蛘吖ぷ鬟^程中涉及的模型分布式訓練,可能一個資源平臺往往會非常耗時,無法及時滿足個人需求。在這里,我將就上一篇??《初步了解TensorFlow框架學習》??提到的九天畢昇平臺的使用進行一個具體的拓展,來方便學生和用戶來更快捷地進行模型訓練。該平臺可以進行數(shù)據(jù)管理,模型訓練等任務,是一個方便快捷的科研任務實踐平臺。在模型訓練中具體操作步驟為:
(1)注冊并登錄九天畢昇平臺,由于后續(xù)訓練任務需消耗算力豆,而新用戶的算力豆數(shù)量有限,但可以通過分享好友等任務來完成算力豆的獲取。同時針對大型模型訓練任務,為獲取更多的模型訓練存儲空間,可郵件方式聯(lián)系該平臺的工作人員進行了控制臺的升級,從而達到了日后所需的訓練存儲要求。存儲和算力豆詳情如下圖:
(2)進入數(shù)據(jù)管理界面部署科研項目模型使用的數(shù)據(jù)集,通過將科研任務所需的數(shù)據(jù)集進行打包上傳,完成模型訓練所需數(shù)據(jù)集在該平臺上的部署。
(3)在模型訓練窗口新增項目訓練實例,選擇之前導入的數(shù)據(jù)集和所需的CPU資源。創(chuàng)建后的實例即為科研所需要訓練的單個模型文件。新增項目實例的詳情如下圖所示:
(4)運行新增的項目實例,即運行項目訓練環(huán)境,運行成功后,則可以選擇jupyter編輯器創(chuàng)建和編輯所需的代碼文件。
(5)后續(xù)代碼編寫和模型訓練即可使用jupyter編輯器進行操作即可。
2. 圖像分類技術(shù)拓展
圖像分類,顧名思義就是根據(jù)圖像之間差異性來對不同圖像進行類別判斷。而針對圖像之間地差異性去設計判別模型就是機器學習中需要去掌握的知識。圖像分類的基本知識和操作過程可以參考中國大學MOOC上的《TensorFlow入門實操課程》,快速了解TensorFlow基礎(chǔ)應用與設計思路。。??https://www.icourse163.org/learn/youdao-1460578162?tid=1461280442#/learn/content?type=detail&id=1239107268&cid=1260057739??
本章主要是想通過拓展圖像分類技術(shù)來讓接觸該課程的用戶更加深入地理解圖像分類。
2.1 卷積操作有什么用?
說到對圖像進行處理或者分類,必然繞不開一個操作,這個操作就是卷積。具體的卷積操作通過學習視頻基本都能了解,但是更多的讀者可能也只是停留在會如何進行卷積操作的程度上,而對于為什么去進行卷積,卷積操作有什么用這些仍然是一知半解。這里為大家進行一定拓展來幫助大家更好理解卷積。
基本的卷積過程下圖所示,以圖像為例,使用一個矩陣來表示圖像,矩陣的每個元素即為圖像中對應的像素值。卷積操作就是通過將卷積核逐乘對應的矩陣,從而得到這些小區(qū)域的特征值。而提取到的特征會因為卷積核的不同而有所差異,這也是后續(xù)會有人對圖像不同通道進行卷積操作來獲取圖像不同通道的特征,來更好地進行后續(xù)分類任務。
在日常地模型訓練中,具體地卷積核并不需要進行人工設計,而是通過給定圖像的真實標簽,使用網(wǎng)絡來自動訓練出來的,但是這樣的過程不利于人們?nèi)ダ斫饩矸e核和卷積過程,或者說不直觀。因此為了幫助大家更好理解卷積操作的意義,在這舉一個卷積操作的例子。如下圖矩陣所示,數(shù)值表示圖形的像素,為了方便計算,在這里只取了0和1, 不難看出該矩陣圖形的特點上面一半圖形是明亮的,下面一半圖形是黑的,因此該圖像具有很清晰的一道分界線,即具有很明顯的水平特征。
因此為了很好地提取上述矩陣的水平特征,設計的卷積核應該也要具有水平特征提取的屬性。而采用垂直特征提取屬性的卷積核相對而言在特征提取的明顯程度上會略顯不足。 如下所示,采用提取水平特征的卷積核進行卷積:
由得到的卷積結(jié)果矩陣可知,原始圖形的水平特征被很好地提取出來,并且圖形地分界線會更加明顯,因為圖形有顏色的部分像素值加深了,很好地提取并突出了圖形的水平特征。當采用提取垂直特征的卷積核進行卷積時:
由得到的卷積結(jié)果矩陣可知,原始圖形的水平特征也能被提取出來,但是會產(chǎn)生兩條分界線,圖形變化由特別明亮到明亮再到黑,反映到真實圖形上的情況也就變成由明到暗再到黑的情況,與真實原始圖形反應的水平特征有所差別。
由上述例子不難得知,卷積核的不同會影響最終提取的圖形特征的優(yōu)劣程度,同時不同圖形所反應出來的特征也有所不同,如何根據(jù)圖形特征屬性的不同來設計出網(wǎng)絡模型來更好地學習和設計出卷積核也尤為關(guān)鍵。在實際地圖形分類項目中,就需要根據(jù)圖像的差異來選擇提取合適的特征,并且往往需要有所取舍的去考慮。
2.2 如何考慮卷積來更好的進行圖像分類?
在上一節(jié)中通過卷積操作的作用可以知道,設計網(wǎng)絡模型來更好地去學習出適配圖像的卷積核尤為重要。但在實際應用中,都是通過給定圖像類別的真實標簽,將類別標簽轉(zhuǎn)成機器能夠理解的向量數(shù)據(jù),來自動學習訓練。當然,也不是完全無法通過人工設置來改善的。雖然數(shù)據(jù)集的標簽是固定好的,但是我們可以根據(jù)數(shù)據(jù)集的圖片類型去選擇不同的網(wǎng)絡模型,針對不同的網(wǎng)絡模型的優(yōu)劣勢去考慮往往會有不錯的訓練效果。
同時在提取圖像特征時,也可以考慮使用多任務學習的方法,在已有的圖像數(shù)據(jù)中,再次同樣使用一次圖像數(shù)據(jù)去提取一些額外的圖像特征(例如圖像的通道特征和空間特征等),然后對之前提取到的特征進行一個補充或者填充,來完善最終提取到的圖像特征。當然,有時候這種操作會造成提取的特征冗余,取得的分類效果往往適得其反,因此需要根據(jù)實際訓練的分類結(jié)果去酌情考量。
2.3 網(wǎng)絡模型選擇的一些建議
圖像分類領(lǐng)域發(fā)展已經(jīng)有很長一段時間了,從最初經(jīng)典的AlexNet網(wǎng)絡模型到近幾年火熱的ResNet網(wǎng)絡模型等,圖像分類技術(shù)已經(jīng)發(fā)展地比較完善,對于一些常用的圖像數(shù)據(jù)集的分類準確率已經(jīng)趨于100%。目前該領(lǐng)域中,大多數(shù)人采用的網(wǎng)絡模型都是選擇最新的,并且在大多數(shù)圖像分類任務中,使用最新的網(wǎng)絡模型確實可以帶來很明顯的分類效果,由此很多人在這一領(lǐng)域中往往會忽略以前的網(wǎng)絡模型,直接去學習最新的、流行的網(wǎng)絡模型。
在這,本人還是建議各位讀者能夠?qū)D形分類領(lǐng)域的一些經(jīng)典的網(wǎng)絡模型都需要去進行一個熟悉,因為技術(shù)的更新迭代是非常快的,即使現(xiàn)在最新的網(wǎng)絡模型今后也可能會被淘汰,但是基本的網(wǎng)絡模型運行的原理是大致相通的,通過掌握經(jīng)典的網(wǎng)絡模型,不僅可以掌握基本的原理,還可以明白不同網(wǎng)絡模型之間的差異和針對不同任務處理時的優(yōu)劣性。例如,當你的圖像數(shù)據(jù)集比較小時,采用最新的網(wǎng)絡模型訓練起來可能會非常復雜耗時,但是提升的效果微乎其微,因此為了可以忽略不計的效果去犧牲自己的訓練時間成本反而得不償失。因此,對于圖像分類網(wǎng)絡模型的掌握需要做到知其然還能知其所以然,這樣今后選擇圖像分類模型時真正能做到有的放矢。
作者介紹:
稀飯,51CTO社區(qū)編輯,曾任職某電商人工智能研發(fā)中心大數(shù)據(jù)技術(shù)部門,做推薦算法。目前從事自然語言處理方向研究,主要擅長領(lǐng)域有推薦算法、NLP、CV,使用代碼語言有Java、Python、Scala。發(fā)表ICCC會議論文一篇。