贈書|圖像分類問題建模方案探索實踐

2020-12-05 AI科技大本營

作者 | 中國農業銀行 陸春暉

責編 | 晉兆雨

出品 | AI科技大本營

頭圖 | 付費下載於視覺中國

*文末有贈書福利

背景

圖像分類,是計算機視覺領域的一個核心問題,顧名思義就是輸入一張圖像,根據內容將其劃分到某一個特定的類別。與其他分類問題相比,主要的區別在於輸入是圖像,這就導致其特徵工程方法相對單一,通過圖像的像素值進行特徵提取。圖像分類問題可以用圖1來形象的描述。

圖1 圖像分類之「貓狗大戰」

圖像分類同時是其他很多高層視覺問題的基礎,例如目標檢測、圖像分割、目標追蹤、行為分析等等。它本身也在很多領域中有廣泛的應用,例如社會生活領域中的垃圾分類、安防領域的人臉識別、醫學領域的病灶識別、航空遙感領域的環境汙染檢測等等,本文中研究的具體問題屬於自動駕駛領域中的交通路況識別。

圖像分類的算法研究經歷了一個比較漫長的過程。早期的最近鄰分類(KNN)算法,將圖像的像素值用二維矩陣存儲,再將二維矩陣拉伸成一維向量,通過度量向量間距的方式進行分類。該類算法操作簡單易於實施,但是計算量大,並且容易受到樣本不平衡問題的影響;然後是多層感知器(MLP)算法,類似於KNN的特徵處理,讓一維向量特徵通過包含多個線性非線性函數組合的神經網絡結構,通過計算各類別可能性概率的方式進行分類。這一類算法在普通圖片上識別效果不錯,但是由於節點間的全連接方式會導致維度災難,因此不能擴展到更高解析度的圖像上;近些年伴隨深度學習的興起,基於卷積神經網絡(CNN算法)的算法越來越受歡迎。該類算法是通過卷積網絡分層提取圖像特徵,替代單純的向量特徵,再依次通過卷積層、池化層、激活層等神經網絡結構的運算,直接進行端到端的分類。這一類算法的網絡結構不再使用全連接模式,並且計算量更小,也不需要額外的特徵工程,因此使用範圍更廣。本文中進行交通路況識別所使用的模型就是基於卷積神經網絡的殘差網絡(ResNet)。

數據準備

本文以阿里巴巴高德地圖AMAP-TECH算法大賽 - 基於車載視頻圖像的動態路況分析為例,探索圖像分類問題的建模方案。該比賽需要通過由行車記錄儀拍攝的圖像序列,判斷對應道路當前時刻真實的路況狀態。本文中用於建立模型使用的數據集包含4200個圖像序列,每一個圖像序列包含(3-5)幀圖像,總共有16000多張圖片。一個圖像序列中包含的圖像如圖2所示。

圖2 一個圖像序列裡包含的多幀圖像

每個圖像序列中有一幅為參考幀(參考幀多為路況狀態容易清晰判斷的序列中間或最後一幀圖像),算法需要根據整個圖像序列來推斷路況的狀態,分為暢通、緩行、擁堵和封閉四種情況。每個狀態的參考幀示例如圖3所示。

圖3 不同路況狀態的圖像

數據集整體對應的路況狀態情況大致為暢通30%,緩行10%,擁堵20%,封閉40%。其分布如圖4所示。

圖4 不同路況狀態的分布

建模流程

問題分析

在初步分析數據集後,我們對整個問題有了一個大致的了解。從表面上看來,這是一個典型的圖像分類問題,需要輸入一張圖片,根據圖片內容判斷圖中路況屬於哪一個類型。再進一步觀察數據和結合交通的基本常識可以知道,大部分場景下,前方車輛的數量和密度決定了路況狀態,前方道路障礙物存在與否,決定了道路是否封閉。似乎需要先對圖片進行目標檢測,檢測出車輛和道路障礙物,再根據檢測結果進行分類。但是經過簡單的實驗,發現先目標檢測再進行分類的效果並不理想。研究背景知識得知,實際路況上可能存在諸如行駛道路有大量路邊停車,但不影響車輛行駛,狀態為暢通;或者行駛在雙向道路,對向車道擁堵,但行駛車道路況狀態為緩行或暢通;又或者圍擋、路障等障礙物是造成道路封閉的直接原因,但非道路區域存在大量噪聲(如路邊的圍擋、錐桶等)。加之目標檢測算法本身可能存在的誤差,都會影響分類的效果。

基於以上各種因素,還是決定放棄先目標檢測再進行分類的策略,直接進行圖像分類。進一步分析數據集,發現每個圖像序列都是多幀圖像,並且標明了參考幀,參考幀是整個圖像序列中最清晰或者最後一幀圖像,所有分類的判斷都基於參考幀。所以決定以參考幀為輸入圖像進行分類。

圖像分類問題的基本建模流程如圖5所示。

圖5 圖像分類問題建模流程

圖像預處理

圖像分類中,圖像質量的好壞會直接影響模型的效果,因此需要對圖像進行預處理。預處理的主要目的一方面是消除圖像中的無關信息,例如歸一化,另一方面是增強有用信息的可檢測性,例如圈定ROI區域。

歸一化

圖像歸一化是指對圖像進行一系列標準的處理變換,使之變換為一固定標準形式的過程,與其他特徵歸一化的目的相同,都是為了更快地訓練算法並達到更高的性能。本文中主要對圖像進行形狀歸一化和灰度歸一化,即將所有圖像統一調整成512*512的大小,並將每個像素值除以255,使得所有值都在0和1之間。圖像歸一化效果如圖6所示。

圖6 圖像歸一化效果

圈定ROI區域

圖像的ROI區域,就是 「感興趣的區域」(region of interest),從圖像中選擇重點關注的區域。使用ROI區域,可以減少處理時間和增加精度。本文中使用了兩種方式進行ROI區域的圈定,一種是固定區域,通過手動梯形框圈定;一種是動態跟蹤,利用幀差法圈定,並將這兩種方式和完全不圈定ROI區域方式的建模時間和精度進行了對比。

手動圈定ROI區域,主要是利用背景知識人工指定關注區域,即主要關注關鍵幀圖像中攝像頭所拍攝的車輛正前方的道路區域,忽視天空和兩旁的區域,再結合近大遠小的攝像頭成像特點,直接使用梯形框進行ROI區域的圈定,其圈定效果如圖7所示。由於歸一化後所有圖像尺寸統一,所以使用大小唯一固定的梯形框即可。

圖7 手動圈定ROI區域效果

利用幀差法圈定ROI區域,顧名思義,就是通過對不同幀的圖像做差來圈定感興趣的區域。幀差法是最為常用的運動目標檢測和分割方法之一,其基本原理是在圖像序列的相鄰兩幀或三幀間採用基於像素的時間差分,再通過閉值化來提取出圖像中的運動區域。結合本文中的場景,就是利用關鍵幀前一幀的圖像,和關鍵幀圖像做差,利用兩幀圖像間的差值圖像,圈定汽車行駛過程中隨著時間推移有明顯變動的區域,也就是ROI區域。

這個過程涉及到幾個關鍵步驟,首先是做差後的閾值化,其次是二值圖像輪廓的提取,最後是目標檢測框的合併,接下來分別進行闡述。

做差後的閾值化,需要提前設定一個閾值。當兩幀圖像做差之後,先通過形態學上的腐蝕和膨脹操作,減少空洞,然後將得到的差值圖像每一個位置的像素值都和閾值比較,比閾值大的地方像素值設為255,比閾值小的地方像素值設為0,這樣就得到一個二值化的運動區域圖像。cv2圖像庫中提供了cv2.threshold方法可以直接進行調用。

二值化的圖像需要提取輪廓,也可以藉助cv2圖像庫中的cv2.findContours和cv2.boundingRect方法來提取,可以得到運動區域的矩形邊框。需要注意一點,由於是車載圖像,攝像頭本身也在運動,導致兩幀圖像間變動的地方可能很多,但不是所有有變動的地方都是感興趣區域,對於提取出來區域面積過小的輪廓框可以忽略。

過濾掉面積過小的輪廓框後,需要進行目標檢測框的合併。其原理是將相交面積大於一定閾值的目標檢測框合併,根據各目標檢測框的坐標值來計算是否相交和相交面積大小。需要注意的是由於只是想圈定ROI區域,所以本文中只是計算出所有相交目標檢測框位置的中心點,再結合各目標檢測框大小,合併所有的相交目標檢測框作為唯一的ROI區域。幀差法圈定ROI區域的整體流程和效果如圖8所示。

圖8 幀差法圈定ROI區域流程和效果

如果使用幀差法圈定ROI區域,需要在圖像歸一化之前進行,避免因歸一化影響幀差效果,手動圈定ROI區域則沒有相關限制。

圖像加載和批處理

將圖像讀入內存時,會遇到的最大挑戰是圖像太大,會導致內存溢出。所以需要對圖像進行批量處理,一次只加載一個批次的圖像。本文使用PyTorch裡的Dataset類和DataLoader類來實現。

Dataset類主要是實現每張圖片的加載,自定義數據集需要重寫_init_,_len_,_getitem_三個函數。_init_函數初始化數據集路徑、標誌文件、等信息,_len_函數返回數據集大小,_getitem函數返回單張圖片及其標誌信息,包括圖片的預處理也在該函數裡進行。

DataLoader類主要實現批量圖像的加載,自定義加載類需要指定加載的數據集、每批次加載的圖片數量、是否打亂排序、以及提取數據的進程數等參數信息。每批次加載圖片的數量,也會影響模型訓練的收斂速度和準確性。

模型選擇和遷移學習

圖像分類可以用的深度學習模型很多,例如VGG、AlexNet、ResNet等等。綜合流行趨勢和分類效果,本文選擇了ResNet網絡結構進行分類。ResNet又名殘差神經網絡,指的是在傳統卷積神經網絡中加入殘差學習(residual learning)的思想,解決了深層網絡中梯度彌散和精度下降(訓練集)的問題,使網絡能夠越來越深,既保證了精度,又控制了速度。簡要的說,深度學習的網絡,隨著層次的加深,會出現退化,即在訓練集上的準確率飽和或者下降。而殘差網絡通過殘差學習和恆等映射,可以很好的避免這個問題,從而可以通過不斷加深網絡層數,提升模型的準確率。殘差網絡的具體原理,可以參考相應的論文和介紹,本文不做詳細討論。考慮到訓練的效率,本文選擇ResNet50展開訓練。

在實際訓練深度學習的模型時,可以通過遷移學習的方式進行。通俗來講,就是運用已有的知識來學習新的知識,即可以使用其他數據集上已經訓練好的分類模型,擬合我們自己的數據集,這樣可以加快擬合。Pytorch中可以直接使用已經預訓練好的ResNet50模型,同時為了適應自己的數據集,需要將最後一層Linear層進行替換,使其輸出為4通道,對應四種路況。

結論和展望

將數據集按8:2劃分成訓練集和驗證集,使用不圈定ROI區域、手動圈定ROI區域以及通過幀差法圈定ROI區域三種不同圖像預處理方式進行模型訓練的結果如表1所示。其中評測模型使用的錯誤率評價函數是交叉熵(Cross Entropy Loss),交叉熵描述了兩個概率分布之間的距離,當交叉熵越小說明二者之間越接近。準確率評價函數使用ACC(Accuracy),指在分類中,使用測試集對模型進行分類,分類正確的記錄個數佔總記錄個數的比例。

表1不同圖像預處理方式的模型訓練結果

可以通過表1發現,幀差法圈定ROI區域明顯在準確率上低於不圈定ROI區域和手動圈定ROI區域,這可能是因為幀差法在處理車載視頻圖像時,因為攝像頭本身也在移動,背景和前景區分度不大,導致圈定的ROI區域有比較大的誤差,損失了比較多有用的信息。不圈定ROI區域和手動圈定ROI區域準確率差別不大,但是訓練時間上不圈定ROI區域明顯比圈定ROI區域要快,這也符合客觀認知。

訓練過程中各模型隨著迭代次數的增加,在訓練集和驗證集上的誤差曲線和準確率曲線如圖9所示。

圖9誤差曲線和準確率曲線示意圖

可以發現幀差法圈定ROI的方法,在驗證集上的震蕩比較明顯,可能是因為幀差法容易受到外在因素的影響,比如光線、清晰度、以及拍攝角度等,健壯性不強。而手工圈定ROI和不圈定ROI在訓練後期都出現了比較明顯的過擬合現象,但是手工圈定ROI的健壯性要比不圈定ROI的強,這大概是因為手工圈定ROI指定了只關注道路所在區域,不易受到其他區域的噪音影響。

即使分類效果最好的模型,驗證集上的分類準確率也不過89.96%,在路況識別的實際應用中尚不是很理想,需要進一步優化。圖像分類模型的優化可以使用光線均衡、圖像增強等方式,也可以考慮使用更深的網絡,或者適當結合目標檢測、目標追蹤等技術。圖像分類技術在實際情境中的應用尚有很多困難和挑戰,希望本文能對同行業者有所啟發。

#歡迎留言在評論區和我們討論#

看完本文,對於機器學習的圖像分類你有什麼想說的?

歡迎在評論區留言

我們將在11 月 24 日精選出 3 條優質留言

贈送《人工智慧數學基礎》紙質書籍一本哦

相關焦點

  • 乾貨|時間序列預測類問題下的建模方案探索實踐
    時間序列分析主要針對時間序列類問題的兩個領域,一個是對歷史區間數據的分析,通過對過往數據特徵的提煉總結來進行異常檢測和分類;另一類就是對未來數據的分析,根據過去時間點的數據對未來一個時間點或者幾個時間點的狀態或實際值進行預測。
  • 機器學習項目實踐:30+ 必備資料庫(預測模型、圖像分類、文本分類)
    原標題:機器學習項目實踐:30+ 必備資料庫(預測模型、圖像分類、文本分類) 1 新智元編譯 希望這份資源清單有助於那些尋找機器學習項目實踐的人。對於初學者來說,這絕對是一個金礦。確保你在業餘時間選擇一些項目,並在上面投入時間和精力,將對你的技術成長大有益處。
  • 赴五年之約 | 貴州分院精彩回顧(新技術實踐運用與探索)
    圖:建築信息三維可視化該項研究是貴州分院首次採用創新技術手段進行城市專項規劃編制的一次實戰性、前瞻性的具體探索,為未來貴陽市以大數據手段管理、解決城市更新問題、指導城市規劃等政府關鍵決策,積累了寶貴經驗。
  • DarwinML全自動建模平臺最佳實踐案例
    步驟二:數據清洗DarwinML自動建模平臺會在數據導入後給出當前數據每一列的具體清洗建議。比如:是否需要填充缺失值,填充值取多少合適;這一列的數據是否有嚴重偏移,是否需要消除異常值;這一列是否是字符串列,模型無法直接使用,如何做數值化處理,是映射為0,1,2...,還是做ICA編碼提取語義等。當然,研究者可以選擇信任推薦的清洗方案,也可以自定義清洗方案。
  • 「完結」16篇圖像分類乾貨文章總結,從理論到實踐全流程大盤點!
    專欄《圖像分類》正式完結啦!我們從數據集展開講解,由最基本的多類別圖像分類一步步深入到細粒度圖像分類、多標籤圖像分類,再到更加有難度的無監督圖像分類,隨後我們又對圖像分類中面臨的各種問題展開描述,較為全面的匯總了圖像分類領域的相關內容。至此,我們再對整個圖像分類專欄的內容進行一個大總結!
  • 湖北紅安:「1+4」方案強化教育實踐活動分類指導
    湖北紅安縣針對參加單位和人員點多面廣線長、情況千差萬別的實際,在堅持總體要求的同時,注重分層分類指導,精心制定「1+4」活動方案,增強教育實踐針對性、實效性。 突出問題分類「找」。
  • 垃圾智能分類系統:這些才是AI助力垃圾分類的解決方案
    中發智造說:智能垃圾箱並不是AI助力垃圾分類的最佳解決方案,存在高成本、低效率、低容錯、虎頭蛇尾等諸多問題。作為智能製造研究機構與生態服務平臺,中發智造再次強調,AI助力垃圾分類,不是在垃圾箱上安人工智慧,而是應用智能製造理念,升級垃圾處理系統。
  • 衛星影像識別技術在高德數據建設中的探索與實踐
    本文會介紹高德視覺團隊將衛星影像從被動參考升級為主動發現的過程中的探索和實踐。POI與樓塊強相關性衛星影像識別技術探索實踐然而由於影像拍攝視角問題,部分高樓在視覺上呈現斜射的效果,部分基座邊緣被遮擋,為識別造成了極大的難度。經過數據分析與推算,我們發現絕大多數的樓塊底座形狀是和樓頂形狀一致的,因此我們採用了樓頂分割+樓頂到基座偏移量的多任務學習方案,將分割出的樓頂形狀加上一個樓頂到基座的偏移向量,對基座的形狀和位置進行了一個比較理想的還原。
  • 【新智元乾貨】計算機視覺必讀:目標跟蹤、圖像分類、人臉識別等
    一個折中的方案是只對一支進行PCA降維。(2). 近似核估計。可以證明,在雙線性匯合結果後使用線性SVM分類等價於在描述向量間使用了多項式核。由於兩個向量外積的映射等於兩個向量分別映射之後再卷積,有研究工作使用隨機矩陣近似向量的映射。此外,通過近似核估計,我們可以捕獲超過二階的信息(如下圖)。(3). 低秩近似。對後續用於分類的全連接層的參數矩陣進行低秩近似,進而使我們不用顯式計算雙線性匯合結果。
  • 融合問題建模的數據表示之探討
    然而,經典的「稀疏表示」方法通常以度量向量的一階稀疏性為主要手段,其對類似圖像等數據結構信號緊緻表示能力有限。對於二維圖像信號而言,由於圖像往往是冗餘的,內部存在大量相似性,度量矩陣的低維結構的有效方式是結構化的稀疏性,這表現為矩陣低秩(low rank)性。矩陣的秩是向量稀疏性的高階推廣。向量稀疏性模型往往在矩陣低秩下可以得到推廣,性能更為優異。
  • 3D建模軟體哪個好?3D建模軟體排行榜
    讓你的設計方案更加完美。  傳送門:moi3d三維建模  三、3D建模軟體(Blender)Blender是開源的多平臺輕量級全能三維動畫製作軟體,有了Blender後,喜歡3D繪圖的玩家們不用花大錢,也可以製作出自己喜愛的3D模型了。
  • 支付寶移動端 Hybrid 解決方案探索與實踐
    支付寶移動端 Hybrid 解決方案探索與實踐本文內容主要分為以下三個部分:移動網際網路背景下的高可用性能挑戰主要給大家介紹支付寶 APP 在這幾年移動網際網路快速發展的階段,其自身的一個變化與遇到的性能挑戰。
  • 前沿研究丨深度學習在醫學超聲圖像分析中的應用
    由於DBM使用無監督的方式進行訓練,對於一個特定的任務,在實踐中進行最終的微調是有必要的,通常實現監督優化的一個選項是通過在網絡的最後面層增加一個線性分類器(如SVM)。對於無監督的學習模型,在最終的表示學習之後往往伴隨一個微調步驟,這也是解決特定任務(如圖像分類、目標檢測或者組織分割)的一個最常用的實踐方案。
  • 預測建模、監督機器學習和模式分類概覽
    機器學習和模式分類預測建模是建立一個能夠進行預測的模型的通用概念。通常情況下,這樣的模型包括一個機器學習算法,以便從訓練數據集中學習某些屬性做出這些預測。預測建模可以進一步分成兩個子集:回歸和模式分類。回歸模型基於變量和趨勢之間的關係的分析,以便做出關於連續變量的預測,如天氣預報的最高溫度的預測。
  • 基因組實現自動AI建模,華為雲助力科研人員探索生命奧秘
    在華為開發者大會2020(Cloud)期間,華為雲發布全新AutoML工具AutoGenome,支持對基因組數據進行全自動AI建模,助力科研人員探索生命奧秘。目前,AI技術已經廣泛應用在圖像、語音等領域,然而在生物醫學領域,尤其是基因組學數據領域,AI的應用仍處於初期階段。
  • 卷積神經網絡在圖像領域中的發展及存在問題
    目前,淺層結構模型已經被應用於解決一些在簡單的實際問題,但是當有複雜的真實世界問題時,淺層模型將不能很好的表達,比如自然圖像、自然語言(NLP)、自然聲音和人類語音等領域時,這些模型效果和表達能力將會不起作用。
  • 關於生成式對抗網絡(GAN) 還有這些開放性問題尚未解決
    理想情況下,我們可以查看一個數據集,執行些計算,而不需要真正訓練一個生成模型,然後說「這個數據集對於GAN來說很容易建模,但是對於VAE來說卻不容易」這樣的話。在這個問題上已經取得了一些進展,但我們覺得還有更多的事情可以做。現在我們可以引出問題了:在給定分布中,我們能說GAN對這個分布建模有多難嗎?我們可能還會問以下相關問題:「對分布建模」是什麼意思?
  • 提高建模效率,改變手工作坊式生產,AutoML的技術研究與應用進展...
    100+ 頂尖技術專家、1000+ 大數據從業者齊聚於此,以「大數據驅動智能+」為主題,聚焦智能時代大數據技術的發展曲線,圍繞大數據與社會各行業相結合的最新實踐,進行了深度解讀和討論。如下圖所示,每個狀態代表當前pipeline所處的階段及當前階段所選擇的算法,不同階段之間的算法可以跳轉,但分類算法選擇不可以跳過,因為只有先選擇一個分類算法才可以解對應的分類問題。在既定的計算時間內怎麼選擇最優的流水線,最終由強化學習來自動決定。另外,元學習階段通過收集多個數據集進行預訓練,實現強化學習階段實現熱啟動。
  • 今日Paper|隨機微分方程;流式自動語音識別;圖像分類等
    from=leiphonecolumn_papereview0110推薦理由:從真實演員的圖像創建合理的虛擬演員仍然是計算機視覺和計算機圖形學的主要挑戰之一。無標記的人類運動估計和來自野外圖像的形狀建模使這一挑戰脫穎而出。
  • 機器之心GitHub項目:從循環到卷積,探索序列建模的奧秘
    從實踐經驗上來說,一般我們都將循環神經網絡視為序列建模的默認配置。甚至 Ian Goodfellow 在《深度學習》一書中使用「序列建模:循環和遞歸網絡」作為章節名,這些都表明序列建模與循環架構有非常緊密的聯繫。因此本文在前一部分主要介紹了循環網絡的概念、表達式和計算圖,並著重描述了 LSTM 與 GRU 兩種流行的變體。