計算機視覺筆記及資料整理(含影象分割、目標檢測)

Jaybo發表於2018-08-12

前言

1、簡單聊聊:

在我腦海中我能通過這些年聽到的技術名詞來感受到技術的更新及趨勢,這種技術發展有時候我覺得連關注的腳步都趕不上。簡單回顧看看,從我能聽到的技術名詞來感受,最開始耳聞比較多「雲端計算」這玩意,後來聽到比較多的是「資料探勘」,然而本科畢業之後聽到的最多便是「人工智慧」,整個技術圈似乎完全被這個詞所覆蓋,怎麼突然火起來這個?我覺得用 AlphaGo 這個可以去作個反應吧,找了下新聞資料:

2016年3月9日至15日,Google旗下的DeepMind智慧系統——AlphaGo在韓國首爾對戰世界圍棋冠軍、職業九段選手李世石(又譯李世乭),這場人類與人工智慧間的對決最終結果是AlphaGo以總比分4比1戰勝李世石。2017年5月23日至27日,世界排名第一的中國選手柯潔和AlphaGo展開“人機大戰2.0”三番棋較量,柯潔0:3敗北。

這個人工智慧應用的例子無疑是當下最振奮人心的事件。之後也經常聽到谷歌研發無人駕駛相關新聞。我在想,無人駕駛?聽上去就牛逼轟轟不得了啊,這得多難!

另外,記得去年(2017年)一個叫「區塊鏈」的技術詞在很多地方看到,這又是啥?後來去搜了下資料看看,才明白是啥玩意(有興趣可以看阮一峰老師寫的區塊鏈入門教程)。一開始我們瞭解這個技術一般都是從比特幣開始,比特幣又是啥?想了解話網上資料很多,同時也推薦可以看看阮一峰老師寫的比特幣入門教程

從上面自己的耳聞變化我能感受技術趨勢的變化之快,科技發展速度真的很難想象,就比如手機 2G 到 3G 再到 4G 的變化,再過一兩年不出意外 5G 也應該能體驗到了,這種變化速度,真是苦逼了我們這些技術人。

上面瞎扯扯了一些,打住,說回來,還是回來人工智慧這個話題來。下面來簡單說說人工智慧。

在開始介紹人工智慧、機器學習、深度學習之前,我覺得很有必要需要先科普或者說找幾篇文章瞭解下它們都是什麼以及有什麼區別:

2、人工智慧:

人工智慧無疑是這幾年最熱門的話題和焦點。什麼是人工智慧?

人工智慧(Artificial Intelligence),英文縮寫為AI,是研究計算機來模擬人的思維過程和智慧行為(如學習、推理、思考、規劃等)的一門學科。主要包括計算機實現智慧的原理、製造類似於人腦智慧的計算機,使計算機能實現更高層次的應用。

人工智慧是電腦科學的一個分支,它的研究包括機器人、語言識別、影象識別、自然語言處理和專家系統等。

總結:人工智慧—給機器賦予人的智慧。

人工智慧的概念很寬,所以人工智慧也分很多種,我們可以按照實力將人工智慧分為以下三大類。(來源人工智慧三個階段 弱人工智慧 強人工智慧 超人工智慧 即使神也要臣服於科學

  • 弱人工智慧:擅長於單個方面的人工智慧。比如有能戰勝象棋世界冠軍的人工智慧,但是它只會下象棋,你要問它怎樣更好地在硬碟上儲存資料,它就不知道怎麼回答你了。弱人工智慧是能製造出真正地推理(Reasoning)和解決問題(Problem_solving)的智慧機器,但這些機器只不過看起來像是智慧的,但是並不真正擁有智慧,也不會有自主意識。說到底只是人類的工具。即使是弱人工智慧在古代語言還原中還是文物還原中都起到極大作用,長期困擾專家的西夏文現在已經可以人工智慧識別。我們現在就處於弱人工智慧轉向強人工智慧時代

  • 強人工智慧:人類級別的人工智慧。強人工智慧是指在各方面都能和人類比肩的人工智慧,人類能幹的腦力活它都能幹。創造強人工智慧比創造弱人工智慧難得多。這裡的“智慧”是指一種寬泛的心理能力,能夠進行思考、計劃、解決問題、抽象思維、理解複雜理念、快速學習和從經驗中學習等操作。

    強人工智慧觀點認為有可能製造出真正能推理(Reasoning)和解決問題(Problem_solving)的智慧機器,並且,這樣的機器能將被認為是有知覺的,有自我意識的。可以獨立思考問題並制定解決問題的最優方案,有自己的價值觀和世界觀體系。有和生物一樣的各種本能,比如生存和安全需求。在某種意義上可以看作一種新的文明。例如銀翼殺手和人工智慧中的大衛就已經是強人工智慧。

  • 超人工智慧:牛津哲學家,知名人工智慧思想家Nick Bostrom把超級智慧定義為“在幾乎所有領域都比最聰明的人類大腦都聰明很多,包括科學創新、通識和社交技能”。超人工智慧可以是各方面都比人類強一點,也可以是各方面都比人類強萬億倍的。當達到超過人類以後人工智慧的發展將呈指數級爆發,人工智慧將極大的推動科學進步,奈米技術和基因工程在人工智慧的輔助下將得到極大提高,即使在弱人工智慧時代,都已經可以識別西夏文和希伯來文。如果能達到超人工智慧,以往逝去的人甚至都可以復活。甚至秦皇漢武,武安君白起。超人工智慧想復刻多少,不過瞬間的事情。如果人類能達到這個階段沒有被強人工智慧取代,人類自身說不定可以永生。電影出現的超人工智慧例如人工智慧電影結尾出現的透明人。

現在,人類已經掌握了弱人工智慧。其實弱人工智慧無處不在,人工智慧革命是從弱人工智慧,通過強人工智慧,最終到達超人工智慧的旅途。這段旅途中人類可能會生還下來,可能不會,但是無論如何,世界將變得完全不一樣。不過,到目前為止,人類的大腦是我們所知宇宙中最複雜的東西。因此,從弱人工智慧到強人工智慧的發展之路任重而道遠。

3、機器學習:

機器學習(Machine Learning,ML)是人工智慧研究較為年輕的分支。是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、演算法複雜度理論等多門學科。

是一門專門研究計算機來模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的效能的技術。簡單來說,就是通過演算法,使得機器能從大量的資料中學習到規律,從而對新的樣本做出智慧的識別或者預測未來。如現在的影象識別,語音識別,自然語言理解,天氣預測等方面。

總結:「機器學習」不再通過規則行動,而是通過歸納、統計來進行結果改進,不再需要外部明確的知識,而是通過經驗和資料進行結果改進。

機器學習不是萬能的!

機器學習本質上還是一種統計方法,它只講求統計意義未必考慮的是事情的本質。

對於機器學習模型來說。準確率和召回率都不可能是100%,極端case難以避免。

對於金融交易、自動駕駛等事關大筆資金安全、人身安全的場景中,不要盲目迷信 AI,不要把安全全部交給模型。正確的做法是? 規則(經驗)+模型 融合。

機器學習演算法有很多,可以從兩個方面介紹。(來源:機器學習中常見4種學習方法、13種演算法和27張速查表!

1. 按學習方式:
	- 監督學習
	- 非監督學習
	- 半監督學習
	- 強化學習
2. 按功能和形式的類似性:
	- 1.迴歸演算法
	- 2.正則化方法
	- 3.決策樹學習
	- 4.基於例項的演算法
	- 5.貝葉斯方法
	- 6.聚類演算法
	- 7.降低維度演算法
	- 8.關聯規則學習
	- 9.遺傳演算法(genetic algorithm)
	- 10.人工神經網路
	- 11.深度學習
	- 12.基於核的演算法
	- 13.整合演算法
複製程式碼

學習演算法是個非常頭疼的事也是重要的學習內容(哎,數學是硬傷~),下面幾本書得到很多好評,需要去看看:

  1. 周志華《機器學習》
  2. 李航《統計學方法》
  3. Peter Harrington《Machine Learning in Action》(中文版《機器學習實戰》)

需要掌握一些經典的機器學習演算法,畢竟機器學習演算法要列起來實在太多了,網上找了的一張圖,瞧瞧o(╥﹏╥)o

計算機視覺筆記及資料整理(含影象分割、目標檢測)

下面我們還是來看看人工智慧有哪些關注的點呢?

preview

​ (圖片來源:https://zhuanlan.zhihu.com/p/36554572

像上圖中提到的自然語言處理、計算機視覺、語言相關都是機器學習應用的方向,其中存在很多的研究小方向。本文主要基於計算機視覺資料做個整理及記錄。

為了檢驗是否以及對相關內容有了認識,可以試著解釋或回答如下一些問題。

Q1:機器學習、資料探勘、模式識別、人工智慧這些概念?

PR(模式識別)、DM(資料探勘)屬於 AI 的具體應用;人工智慧是一種應用領域,機器學習是實現人工智慧的一種手段,但是不限於此。

什麼是模式識別?

模式識別是指對錶徵事物或現象的各種形式的(數值的、文字的和邏輯關係的)資訊進行處理和分析,以對事物或現象進行描述、辨認、分類和解釋的過程,是資訊科學和人工智慧的重要組成部分。

Q2:機器學習演算法?

按學習的方式來劃分,機器學習主要包括:

  • 監督學習:輸入資料帶有標籤。監督學習建立一個學習過程,將預測結果與 “訓練資料”(即輸入資料)的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準確率,比如分類和迴歸問題等。常用演算法包括決策樹、貝葉斯分類、最小二乘迴歸、邏輯迴歸、支援向量機、神經網路等。
  • 非監督學習:輸入資料沒有標籤,而是通過演算法來推斷資料的內在聯絡,比如聚類和關聯規則學習等。常用演算法包括獨立成分分析、K-Means 和 Apriori 演算法等。
  • 半監督學習:輸入資料部分標籤,是監督學習的延伸,常用於分類和迴歸。常用演算法包括圖論推理演算法、拉普拉斯支援向量機等。
  • 強化學習:輸入資料作為對模型的反饋,強調如何基於環境而行動,以取得最大化的預期利益。與監督式學習之間的區別在於,它並不需要出現正確的輸入 / 輸出對,也不需要精確校正次優化的行為。強化學習更加專注於線上規劃,需要在探索(在未知的領域)和遵從(現有知識)之間找到平衡。

​ (參考:https://feisky.xyz/machine-learning/basic/

計算機視覺筆記及資料整理(含影象分割、目標檢測)

​ (參考:https://jizhi.im/blog/post/machine-learning-types-01

Q3:機器學習的應用有哪些?

機器學習已廣泛應用於資料探勘、計算機視覺、自然語言處理、生物特徵識別、搜尋引擎、醫學診斷、檢測信用卡欺詐、證券市場分析、DNA 序列測序、語音和手寫識別、戰略遊戲和機器人等領域。

4、學習資料:

待上面的介紹有個全域性的認知,可以直接開幹了!關於人工智慧、機器學習、深度學習入門資料,可以參考以下資料:

①機器學習

②深度學習

【Videos】相關的學習視訊資源連結直達:

  • 莫凡:https://morvanzhou.github.io/tutorials/machine-learning/ML-intro/

  • 吳恩達_機器學習:

    • 官網:https://www.coursera.org/learn/machine-learning
    • 或者到 B 站觀看:https://www.bilibili.com/video/av9912938/
    • 這還有一份筆記 GitHub:Coursera-ML-AndrewNg-Notes(建議列印,邊看視訊邊看該份筆記,效果更佳~)
  • 臺灣_林軒田《機器學習基石》:https://www.bilibili.com/video/av1624332/?p=10

  • 臺灣_林軒田《機器學習技法》:https://www.bilibili.com/video/av12469267/

  • 臺大_李宏毅:(有臺灣口腔)

    大家可能看過《一天搞懂深度學習》的PPT,作者是臺灣大學的李宏毅老師。其實,李宏毅老師還有門 深度學習的課程,視訊也掛在網上。這門課主要針對初學者,而且,不需要有經典的機器學習基礎(其 實,深度學習入門,比經典的機器學習更容易)。課程的內容深入淺出,訓練和預測樣本都是各種數碼 寶貝和二次元卡通人物,絕對讓你耳目一新。好像沒有字幕,中文授課(臺灣腔)。課程連結:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html

    • B 站:李宏毅《一天搞懂深度學習》https://www.bilibili.com/video/av16543434/
    • B 站:李宏毅_機器學習 https://www.bilibili.com/video/av10590361/
    • B 站: 李宏毅_深度學習 https://www.bilibili.com/video/av9770302/
  • 李飛飛_史丹佛 cs231n 課程:(深度學習計算機視覺課程)

    • B 站(中文字幕):https://www.bilibili.com/video/av13260183/
    • B 站(英文字幕):https://www.bilibili.com/video/av13260183/

5、本文目的:

本文其實沒啥有價值的乾貨,也就是對看過的部落格和資料的整理,記錄下來,相當給自己梳理一遍,供參考~

(PS:深感文字能力真的好差,還好該文只是資料整理而已(# ̄~ ̄#) 各位看官見諒...... 寫作真得需要經常鍛鍊才行QAQ...)

一、瞭解影象

學習計算機視覺,首先要了解影象是什麼吧?

影象是指能在人的視覺系統中產生視覺印象的客觀物件,包括自然景物、拍攝到的圖片、用數學方法描述的影象等。影象的要素有幾何要素(刻畫物件的輪廓、形狀等)和非幾何要素(刻畫物件的顏色、材質等)。<來源《數字影象處理與機器視覺》 >

我們帶著問題來更多的認識吧!

1、什麼是點陣圖、向量圖?

  • 百度知道:什麼是點陣圖?什麼是向量圖?二者有何區別?

    ①點陣圖就是點陣圖,比如大小是1024*768的圖片,就是有1024*768個畫素點,儲存每個畫素點的顏色值。

    向量圖是用演算法來描述圖形,比如一個圓,儲存半徑和圓心,當然還有顏色,具體到圖片的某個畫素點的位置是什麼顏色是根據演算法算出來的。

    ②向量圖是可以任意縮放的,比如上面說的圓,在1024*768的時候是一個圓,圖片放大20倍看還是圓,如果是點陣圖,放大20倍,看到的就是一個一個的方塊了。

一般而言,使用數字攝像機或數字照相機得到的影象都是點陣圖影象。

2、有哪些種影象?

3、對影象處理的認識?

4、什麼是數字影象?

自然界中的影象都是模擬量,在計算機普遍應用之前,電視、電影、照相機等影象記錄與傳輸裝置都是使用模擬訊號對影象進行處理。但是,計算機只能處理數字量,而不能直接處理模擬影象。

什麼是數字影象?簡單地來說,數字影象就是能夠在計算機上顯示和處理的影象,可根據其特性分為兩大類——點陣圖和向量圖。點陣圖通常使用數字陣列來表示,常見格式有 BMP、JPG、GIF 等;向量圖由向量資料庫表示,接觸最多的就是 PNG 影象。<來源《數字影象處理與機器視覺》 >

5、數字影象處理的主要研究內容有哪些?簡要說明。

影象增強:用於改善影象視覺質量(主觀的);

影象復原:是儘可能地恢復影象本來面目(客觀的);

影象編碼:是在保證影象質量的前提下壓縮資料,使影象便於儲存和傳輸;

影象分割:就是把影象按其灰度或集合特性分割成區域的過程;

影象分類:是在將影象經過某些預處理(壓縮、增強和復原)後,再將影象中有用物體的特徵進行分割,特徵提取,進而進行分類;

影象重建:是指從資料到影象的處理,即輸入的是某種資料,而經過處理後得到的結果是影象。

<來源 百度知道>

6、數字影象處理與機器視覺?<來源《數字影象處理與機器視覺》第二版 P5>

從數字影象處理到數字影象分析,再發展到最前沿的影象識別技術,其核心都是對數字影象中所含有的資訊的提取及與其相關的各種輔助過程。

影象處理 --> 影象分析 --> 影象識別技術。核心都是:對數字影象所含有的資訊提取及與其相關的各種輔助過程。

  • 數字影象處理: 就是指使用電子計算機對量化的數字影象進行處理,具體地說就是對影象進行各種加工來改善影象的外觀,是對影象的修改和增強......此時的影象處理作為一種預處理步驟,輸出影象將進一步供其他影象進行分析、識別演算法。

  • 數字影象分析: 是指對影象中感興趣的目標進行檢測和測量,以獲得可觀的資訊。數字影象分析通常是指一副影象轉化為另一種非影象的抽象形式,例如影象中某物體與測量者的距離。這一概念的外延包括邊緣檢測和影象分割、特徵提取以及幾何測量與計數等。

  • 數字影象識別: 主要是研究影象中各目標的性質和相互關係,識別出目標物件的類別,從而理解影象的含義。

    延伸:影象處理和計算機視覺/機器視覺區別?

    影象處理:輸入的是 Image --> 輸出的是 Image

    計算機視覺/機器視覺:輸入的是 Image --> 輸出的是 Feature(大致理解:對影象的理解)

7、基本的影象操作?

  • 按照處理影象的數量分類:單幅影象操作(如濾波)和對多幅影象操作(如求和、求差和邏輯運算等)
  • 按照參與操作的畫素範圍的不同:點運算鄰運算
  • 根據操作的數學性質:線性操作非線性操作
點運算指的是對影象中的每一個畫素逐個進行同樣的灰度變換運算。點運算可以使用下式定義:s=T(r),其中,T 為採用點運算運算元,表示了再原始影象和輸出影象之間的某種灰度對映關係。點運算常常用於改變影象的灰度範圍及分佈。點運算引其作用的性質有時也被稱為對比度增強、對比度拉伸或灰度變換。

而如果講點運算擴充套件,對影象的每一個小範圍(領域)內的畫素進行灰度變換運算,即稱為領域運算或領域濾波。g(x,y)=T(f(x,y))

線性和非線性操作:若對於任意兩幅(或兩組)影象 F1 和 F2 及任意兩個標量 a 和 b 都有:H(aF1+bF1)=aH(F1)+bH(F2),則稱 H 為線性運算元。不符合上述定義的運算元即為非線性運算元,對應的的是非線性影象操作。
複製程式碼

① 影象的點運算:

要點:	<參考《數字影象處理與機器視覺》>
- 灰度直方圖
- 灰度的線性變化
- 灰度的對數變化
- 伽馬變化
- 灰度閾值變化
- 分段線性變化
- 直方圖均衡化
- 直方圖規定化(匹配)
複製程式碼

灰度直方圖: 是個二維圖,橫座標為影象中各個畫素點的灰度級別,縱座標表示具有各個灰度級別的畫素在影象中出現的次數或概率。(而歸一化直方圖的縱座標則對應著灰度級別在影象中出現的概率)

直方圖均衡化: 又稱位灰度均衡化,是指通過某種灰度對映使輸入影象轉換為在每一灰度級上都有近似相同的畫素點數的輸出影象(即輸出的直方圖是均勻的)。

② 影象的幾何變化:

要點:<參考《數字影象處理與機器視覺》>
- 影象平移
- 影象映象
- 影象轉置
- 影象縮放
- 影象旋轉
- 插值演算法
- 影象配準簡介
複製程式碼

影象幾何變化又稱為影象空間變化,它將一副影象中的座標位置對映到另一副影象中的新座標位置。學習幾何變化的關鍵是要確定這種空間對映關係,以及對映過程中的變化引數。

幾何變換不改變影象的畫素值,只是在影象平面上進行畫素的重新安排。

一個幾何變換需要兩部分運算:首先是空間變換所需的運算,還需要灰度插值演算法。<參考《數字影象處理與機器視覺》P92>

實現幾何運算時,有兩種方法。第一種稱為向前對映法,其原理是將輸入影象的灰度一個畫素一個畫素地轉移到輸出影象中,即從原影象座標計算出目標影象座標。第二中是向後對映法,它是向前對映變換的逆,即輸出畫素一個一個地對映回輸入影象中。(參考《數字影象處理與機器視覺》P106

我們再來看看《數字影象處理與機器視覺》該書有關幾個影象研究內容的解釋:

  • 影象配準:影象配準技術是站在幾何失真歸一化的角度,以一種逆變換的思路來闡述幾何變換。 百度百科:影象歸一化

    所謂影象匹配準就是講同一場景的兩幅或多幅影象進行對準,如人臉自動分析系統中的人臉歸一化,即要使各張照片中的人臉具有近似的大小,儘量處於相同的位置。

  • 影象增強:增強的目的是消除噪聲,顯現那些被模糊了的細節或簡單地突出一副影象中讀者感興趣的特徵。

    增強是影象處理中非常主觀的領域,這與影象復原技術剛好相反,影象復原也是改進影象外貌的一個處理領域,但它是客觀的。

  • 影象分割:

    影象分割是指將影象中具有特殊意義的不同區域劃分開來,這些區域是互不相交的,每個區域滿足灰度、紋理、彩色等特徵的某種相似性準則。影象分割是影象的分析過程中最重要的步驟之一,分割出來的區域可以作為後續特徵提取的目標物件。<***《數字影象處理與機器視覺》P395*** >

更多內容還是得翻閱《數字影象處理與機器視覺》以及岡薩雷斯的《數字影象處理》。

8、什麼是遙感影象?

9、什麼是濾波?

二、計算機視覺

2.1 CV相關研究方向及區別

參考文章:

-------------------------------------------稍微總結下-----------------------------------------

影象分類:根據影象的主要內容進行分類。

資料集:MNIST,CIFAR,ImageNet

目標檢測:給定一幅影象,只需要找到一類目標所在的矩形框。

人臉檢測:人臉為目標,框出一幅圖片中所有人臉所在的位置,背景為非目標

汽車檢測:汽車為目標、框出一幅圖片中所有汽車所在的位置,背景為非目標

資料集:PASCAL,COCO

目標識別:將需要識別的目標,和資料庫中的某個樣例對應起來,完成識別功能。

人臉識別:人臉檢測,得到的人臉,再和資料庫中的某個樣例對應起來,進行識別,得到人臉的具體資訊

資料集:PASCAL,COCO

語義分割:對影象中的每個畫素都劃分出對應的類別,即對一幅影象實現畫素級別的分類。

資料集:PASCAL,COCO

例項分割:對影象中的每個畫素都劃分出對應的類別,即實現畫素級別的分類,類的具體物件,即為例項,那麼例項分割不但要進行畫素級別的分類,還需在具體的類別基礎上區別開不同的例項。

比如說影象有多個人甲、乙、丙,語義分割結果都是人,而例項分割結果卻是不同的物件。

計算機視覺筆記及資料整理(含影象分割、目標檢測)

PS:有幾點需要說的!

  1. 目標檢測和目標識別的區別?

    在看到的某篇部落格是這樣寫道的:

    目標檢測:就是在一張圖片中找到並用box標註出所有的目標。(注意:目標檢測和目標識別不同之處在於,目標檢測只有兩類,目標和非目標. )

    目標識別:就是檢測和用box標註出所有的物體,並標註類別。

    在後面我的查詢資料下,發現上面的認識不算是正確理解,正確理解是,目標檢測是從大圖中框出目標物體並識別,注意,目標檢測還得識別出來框出的是什麼,可參考知乎 許鐵-巡洋艦科技 回答,他在回答中提到 R-CNN,這個網路不僅可以告訴你分類,還可以告訴你目標物體的座標, 即使圖片裡有很多目標物體, 也一一給你找出來。

    關於影象分類、點位、檢測等內容,可以看看李飛飛cs231課程提到的:CS231n第八課:目標檢測定位學習記錄

    image

一些其他方面的研究:

  • CSDN專欄:影象配準(影象配准演算法介紹及部分實現)

2.2 影象分割

2.2.1 影象分割傳統方法

知乎這篇文章 影象分割 傳統方法 整理 整理了一些影象分割傳統的方法,當然也是來源於網路,下面小結下:

圖片分割根據灰度、顏色、紋理、和形狀等特徵將影象進行劃分割槽域,讓區域間顯差異性,區域內呈相似性。主要分割方法有:

  • 基於閾值的分割
  • 基於邊緣的分割
  • 基於區域的分割
  • 基於圖論的分割
  • 基於能量泛函的分割

(有時間可以研讀下相關傳統方法怎麼做的...)

2.2.2 影象分割深度學習方法(語義分割&例項分割)

重點關注的一些神經網路模型:

FCN、Unet、SegNet、DeconvNet、PSPnet、DeepLab(v1、v2、v3)等等。

這幾篇文章有提到上面所說的很多神經網路模型:

這篇文章 十分鐘看懂影象語義分割技術 把影象分割技術及發展介紹的很詳細。

相關綜述類/總結類文章參考:

當前影象分割研究方向:

相關視訊:

影象分割方面論文彙集:

-------------------------------一些常見影象分割神經網路模型具體介紹-------------------------

在介紹影象分割神經網路模型之前,先引入下該文(分割演算法——可以分割一切目標(各種分割總結))的一段話:

1、會有很多人問:什麼是語義分割?

語義分割其實就是對圖片的每個畫素都做分類。其中,較為重要的語義分割資料集有:VOC2012 以及 MSCOCO

2、比較流行經典的幾種方法

傳統機器學習方法:如畫素級的決策樹分類,參考 TextonForest 以及 Random Forest based classifiers。再有就是深度學習方法。

深度學習最初流行的分割方法是,打補丁式的分類方法 (patch classification) 。逐畫素地抽取周圍畫素對中心畫素進行分類。由於當時的卷積網路末端都使用全連線層 (full connected layers) ,所以只能使用這種逐畫素的分割方法。

但是到了 2014 年,來自伯克利的 Fully Convolutional Networks(FCN) 卷積網路,去掉了末端的全連線層。隨後的語義分割模型基本上都採用了這種結構。除了全連線層,語義分割另一個重要的問題是池化層。池化層能進一步提取抽象特徵增加感受域,但是丟棄了畫素的位置資訊。但是語義分割需要類別標籤和原影象對齊,因此需要從新引入畫素的位置資訊。有兩種不同的架構可以解決此畫素定位問題。

  • 第一種是編碼-譯碼架構。編碼過程通過池化層逐漸減少位置資訊、抽取抽象特徵;譯碼過程逐漸恢復位置資訊。一般譯碼與編碼間有直接的連線。該類架構中 U-net 是最流行的。
  • 第二種是膨脹卷積 (dilated convolutions) 【這個核心技術值得去閱讀學習】,拋棄了池化層。

☛【2014】FCN:

Fully Convolutional Networks 是 Jonathan Long 和 Evan Shelhamer 於 2015 年提出的網路結構。

Fully convolutional networks for semantic segmentation 是 2015 年發表在 CVPR 上的一片論文,提出了全卷積神經網路的概念,差點得了當前的最佳論文,沒有評上的原因好像是有人質疑,全卷積並不是一個新的概念,因為全連線層也可以看作是卷積層,只不過卷積核是原圖大小而已。

論文:使用全卷積網路進行語義分割《Fully Convolutional Networks for Semantic Segmentation》 [Paper-v1] [Paper-v2] (最新提交時間:2015.03.08)

主要貢獻:

  • 推廣端到端卷積網路在語義分割領域的應用
  • 修改 Imagenet 預訓練網路並應用於語義分割領域
  • 使用解卷積層進行上取樣
  • 使用跳躍連線,改善上取樣的粒度程度

程式碼:https://github.com/shelhamer/fcn.berkeleyvision.org

相關中文資料:

☛【2015】U-Net:

U-Net 是基於 FCN 的一個語義分割網路,適合用來做醫學影象的分割。資料集下載並程式碼實戰看這篇:全卷機神經網路影象分割(U-net)-keras實現

論文:生物醫學影象分割的卷積神經網路《U-Net: Convolutional Networks for Biomedical Image Segmentation》[Paper] (最新提交時間:2015.05.18)

官網:https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/

相關中文資料:

☛【2015】SegNet:

SegNet 是 Vijay Badrinarayanan 於 2015 年提出的,它是一個 encoder-decoder 結構的卷積神經網路。

論文:用於影象分割的一種深度卷積編碼器-解碼器架構《SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation》[Paper-v1] [Paper-v2] [Paper-v3] (最新提交時間:2016.11.10)

主要貢獻:

  • 將最大池化索引(Maxpooling indices)轉移到解碼器,從而改善分割解析度。

程式碼:https://github.com/alexgkendall/caffe-segnet

DEMO 網站:http://mi.eng.cam.ac.uk/projects/segnet/

相關中文資料:

☛【2015】Dilated Convolutions:

論文:使用空洞卷積進行多尺度背景聚合《Multi-Scale Context Aggregation by Dilated Convolutions》[Paper-v1] [Paper-v2] [Paper-v3] (最新提交時間:2016.04.30)

主要貢獻:

  • 使用空洞卷積,一種可進行稠密預測的卷積層。
  • 提出「背景模組」(context module),該模組可使用空洞卷積進行多尺度背景聚合。

☛【2015】DeconvNet:

DeconvNet 是韓國的 Hyeonwoo Noh 於 2015 年提出的。

DeconvNet 是一個 convolution-deconvolution 結構的神經網路,和 SegNet 非常相似。是一篇 2015 年 ICCV 上的文章:Learning Deconvolution Network for Semantic Segmentation

論文:學習反摺積網路進行語義分割《Learning Deconvolution Network for Semantic Segmentation》[Paper] (最新提交時間:2015.05.17)

程式碼:https://github.com/HyeonwooNoh/DeconvNet

相關中文資料:

☛【2016】RefineNet:

論文:使用多路徑精煉網路進行高解析度語義分割《RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation》[Paper-v1] [Paper-v2] [Paper-v3] (最新提交時間:2016.11.25)

主要貢獻:

  • 具備精心設計解碼器模組的編碼器-解碼器架構
  • 所有元件遵循殘差連線設計

相關中文資料:

☛【2016】PSPNet:

論文:金字塔場景解析網路《Pyramid Scene Parsing Network》[Paper-v1] [Paper-v2] (最新提交時間:2017.04.27)

主要貢獻:

  • 提出金字塔池化模組幫助實現背景聚合
  • 使用輔助損失(auxiliary loss)。

相關中文資料:

☛【2017】Large Kernel Matters:

論文:大型核的問題——通過全域性卷積網路改善語義分割《Large Kernel Matters -- Improve Semantic Segmentation by Global Convolutional Network》[Paper] (最新提交時間:2017.03.08)

主要貢獻:

  • 提出使用帶有大型卷積核的編碼器-解碼器結構

☛【2014 、2016、2017】DeepLab(v1、v2、v3、v3+):

【2014】v1:使用深度卷積網路和全連線 CRF 進行影象語義分割《Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs》[Paper-v1] [Paper-v2] [Paper-v3] [Paper-v4] (最新提交時間 :2016.06.07)

相關中文資料:

【2016】v2:使用深度卷積網路、帶孔卷積和全連線 CRF 進行影象語義分割《DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs》[Paper-v1] [Paper-v2] (最新提交時間:2017.05.12)

相關中文資料:

v1 & v2 主要貢獻:

  • 使用帶孔/空洞卷積。
  • 提出金字塔型的空洞池化(ASPP)
  • 使用全連線 CRF

【2017】v3:重新思考使用空洞卷積進行影象語義分割《Rethinking Atrous Convolution for Semantic Image Segmentation》[Paper-v1] [Paper-v2] [Paper-v3] (最新提交時間:2017.12.05)

v3 主要貢獻:

  • 改進了金字塔型的空洞池化(ASPP)
  • 模型級聯了多個空洞卷積

與 DeepLab v2 和空洞卷積論文一樣,該研究也使用空洞/擴張卷積來改進 ResNet 模型。

相關中文資料:

【2017】v3+:用於語義影象分割的具有可變分離卷積的編碼器 - 解碼器《Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation》[Paper-v1] [Paper-v2] [Paper-v3] (最新提交時間:2018.08.22)

谷歌開源的語義影象分割模型 DeepLab-v3+,DeepLab-v3+ 結合了空間金字塔池化模組和編碼器-解碼器結構的優勢,是自三年前的 DeepLab 以來的最新、效能最優的版本。GitHub 地址:https://github.com/tensorflow/models/tree/master/research/deeplab

相關中文資料:

☛【2017】Mask R-CNN:

論文:《Mask R-CNN》[Paper-v1] [Paper-v2] [Paper-v3] (最新提交時間:2018.01.24)

相關中文資料:

☛【2018】《Searching for Efficient Multi-Scale Architectures for Dense Image Prediction》

為密集的影象預測尋找高效的多尺度架構

arxiv:1809.04184 (2018) Paper-v1(2018.09.11)

相關中文資料:

影象分割衡量標準:

2.2.3 關於影象分割的比賽、資料集

比賽:

影象分割資料集:

目前有一些常用於訓練語義分割模型的資料集:(較為重要的語義分割資料集有:VOC2012 以及 MSCOCO)

  • Pascal VOC 2012:有 20 類目標,這些目標包括人類、機動車類以及其他類,可用於目標類別或背景的分割

    這裡是它的主頁,這裡是leader board,很多公司和團隊都參與了這個挑戰,很多經典論文都是採用這個挑戰的資料集和結果發表論文,包括 RCNN、FCN 等。關於這個挑戰,有興趣可以讀一下這篇論文

  • Cityscapes:50 個城市的城市場景語義理解資料集

  • Pascal Context:有 400 多類的室內和室外場景

  • Stanford Background Dataset:至少有一個前景物體的一組戶外場景。

!!!延伸——深度學習視覺領域相關資料集介紹:

  • ImageNet

    ImageNet 資料集是目前深度學習影象領域應用得非常多的一個資料集,關於影象分類、定位、檢測等研究工作大多基於此資料集展開。

    ImageNet 資料集有 1400 多萬幅圖片,涵蓋 2 萬多個類別;其中有超過百萬的圖片有明確的類別標註和影象中物體位置的標註,具體資訊如下:

    1)Total number of non-empty synsets: 21841

    2)Total number of images: 14,197,122

    3)Number of images with bounding box annotations: 1,034,908

    4)Number of synsets with SIFT features: 1000

    5)Number of images with SIFT features: 1.2 million

    ImageNet 資料集文件詳細,有專門的團隊維護,使用非常方便,在計算機視覺領域研究論文中應用非常廣,幾乎成為了目前深度學習影象領域演算法效能檢驗的“標準”資料集。

    ImageNet 資料集是一個非常優秀的資料集,但是標註難免會有錯誤,幾乎每年都會對錯誤的資料進行修正或是刪除,建議下載最新資料集並關注資料集更新。

    與 ImageNet 資料集對應的有一個享譽全球的“ImageNet國際計算機視覺挑戰賽(ILSVRC)”,目前包含的比賽專案有:

    1. 目標定位
    2. 目標檢測
    3. 視訊序列的目標檢測
    4. 場景分類
    5. 場景分析

    資料集大小:~1TB(ILSVRC 2016 比賽全部資料)

    注:ISLVRC 2012(ImageNet Large Scale Visual Recognition Challenge)比賽用的子資料集,其中:

    • 訓練集:1281167 張圖片+標籤
    • 驗證集:50000 張圖片+標籤
    • 測試集:100000 張圖片

    補充點內容:MNIST 將初學者領進了深度學習領域,而 ImageNet 資料集對深度學習的浪潮起了巨大的推動作用。深度學習領域大牛 Hinton 在 2012 年發表的論文《ImageNet Classification with Deep Convolutional Neural Networks》在計算機視覺領域帶來了一場“革命”,此論文的工作正是基於 ImageNet 資料集。

  • MS COCO

    COCO 資料集是大規模物體檢測(detection)、分割(segmentation)和圖說(captioning)資料集,包括 330K 影象(其中超過 200K 有註釋),150 萬影象例項,80 個物體類別,91 種物質(stuff)類別,每幅圖有 5 條圖說,250000 帶有關鍵點的人體。

    COCO 資料集由微軟贊助,其對於影象的標註資訊不僅有類別、位置資訊,還有對影象的語義文字描述,COCO 資料集的開源使得近兩三年來影象分割語義理解取得了巨大的進展,也幾乎成為了影象語義理解演算法效能評價的“標準”資料集。Google 的開源 show and tell 生成模型就是在此資料集上測試的。 目前包含的比賽專案有:

    1. 目標檢測
    2. 影象標註
    3. 人體關鍵點檢測

    資料集大小:~40GB

    補充點內容:MS COCO(Microsoft Common Objects in Context,常見物體影象識別)競賽是繼 ImageNet 競賽(已停辦)後,計算機視覺領域最受關注和最權威的比賽之一,是影象(物體)識別方向最重要的標杆(沒有之一),也是目前國際領域唯一能夠彙集谷歌、微軟、Facebook 三大巨頭以及國際頂尖院校共同參與的大賽。

  • Pascal VOC

    PASCAL VOC 挑戰賽是視覺物件的分類識別和檢測的一個基準測試,提供了檢測演算法和學習效能的標準影象註釋資料集和標準的評估系統。PASCAL VOC 圖片集包括 20 個目錄:人類;動物(鳥、貓、牛、狗、馬、羊);交通工具(飛機、自行車、船、公共汽車、小轎車、摩托車、火車);室內(瓶子、椅子、餐桌、盆栽植物、沙發、電視)。

    PASCAL VOC 挑戰賽在 2012 年後便不再舉辦,但其資料集影象質量好,標註完備,非常適合用來測試演算法效能。

    資料集大小:~2GB

  • CIFAR

    CIFAR-10 包含 10 個類別,50000 個訓練影象,彩色影象大小:32x32,10000 個測試影象。

    CIFAR-100 與 CIFAR-10 類似,包含 100 個類,每類有 600 張圖片,其中 500 張用於訓練,100 張用於測試;這 100 個類分組成 20 個超類。影象類別均有明確標註。

    CIFAR 對於影象分類演算法測試來說是一個非常不錯的中小規模資料集。

    資料集大小:~170MB

  • MNIST

    深度學習領域的“Hello World!”!MNIST是一個手寫數字資料集,它有 60000 個訓練樣本集和 10000 個測試樣本集,每個樣本影象的寬高為 28*28。需要注意的是,此資料集是以二進位制儲存的,不能直接以影象格式檢視。 最早的深度卷積網路 LeNet 便是針對此資料集的,當前主流深度學習框架幾乎無一例外將 MNIST 資料集的處理作為介紹及入門第一教程。

    資料集大小:~12MB

  • KITTI

    KITTI 由德國卡爾斯魯厄理工學院(Karlsruhe Institute of Technology)和豐田芝加哥技術研究院(Toyota Technological Institute at Chicago)於2012年聯合創辦,是目前國際上最大的自動駕駛場景下的計算機視覺演算法評測資料集。用於評測 3D 目標(機動車、非機動車、行人等)檢測、3D 目標跟蹤、道路分割等計算機視覺技術在車載環境下的效能。KITTI包含市區、鄉村和高速公路等場景採集的真實影象資料,每張影象中多達 15 輛車和 30 個行人,還有各種程度的遮擋。

  • Cityscapes

    Cityscapes 也是自動駕駛相關方面的資料集,重點關注於畫素級的場景分割和例項標註。

  • 人臉識別資料集LFW

    在這個資料集上,基於深度學習的系統 DeepID2 可以達到 99.47% 的識別率。

遙感、衛星影象常用資料集:

遙感、衛星影象分割:

影象分割方面的程式碼:

2.2.4 關於影象分割的最新研究及關注點

最新的一些相關研究:(更新於 2018-09-12)

關注的一些大牛&實驗室&期刊等:

  • 南開大學媒體計算實驗室_程明明:http://mmcheng.net/zh/code-data/ (解壓密碼:mmcheng.net
  • Liang-Chieh Chen:個人主頁

    DeepLab v1/v2/v3/v3+、最新研究神經網路搜尋實現語義分割《Searching for Efficient Multi-Scale Architectures for Dense Image Prediction》作者都是他。

  • Facebook AI 實驗室科學家&香港中文大學博士:何凱明
  • 史丹佛人工智慧研究院:李飛飛
  • 等等......(以後在補充~)
  • 頂級會議、期刊等
    • ICCV(IEEE International Conference on Computer Vision,國際計算機視覺大會):由IEEE主辦,與計算機視覺模式識別會議(CVPR)和歐洲計算機視覺會議(ECCV)並稱計算機視覺方向的三大頂級會議,被澳大利亞ICT學術會議排名和中國計算機學會等機構評為最高階別學術會議,在業內具有極高的評價。
    • CVPR(IEEE Conference on Computer Vision and Pattern Recognition,IEEE國際計算機視覺與模式識別會議):該會議是由IEEE舉辦的計算機視覺和模式識別領域的頂級會議。
    • ECCV(European Conference on Computer Vision,歐洲計算機視覺國際會議):兩年一次,是計算機視覺三大會議(另外兩個是ICCVCVPR)之一。每次會議在全球範圍錄用論文300篇左右,主要的錄用論文都來自美國、歐洲等頂尖實驗室及研究所,中國大陸的論文數量一般在10-20篇之間。ECCV2010的論文錄取率為27%。
    • 等其他.....

2.2.5 影象分割學習與實踐

1、李沫 文章:語義分割和資料集 YouTube 視訊:動手學深度學習第十課:語義分割

圖片分類關心識別圖片裡面的主要物體,物體識別則進一步找出圖片的多個物體以及它們的方形邊界框。本小節我們將介紹語義分割(semantic segmentation),它在物體識別上更進一步的找出物體的精確邊界框。換句話說,它識別圖片中的每個畫素屬於哪類我們感興趣的物體還是隻是背景。下圖演示貓和狗圖片在語義分割中的標註。可以看到,跟物體識別相比,語義分割預測的邊框更加精細。

計算機視覺筆記及資料整理(含影象分割、目標檢測)
在計算機視覺裡,還有兩個跟語義分割相似的任務。一個是圖片分割(image segmentation),它也是將畫素劃分到不同的類。不同的是,語義分割裡我們賦予畫素語義資訊,例如屬於貓、狗或者背景。而圖片分割則通常根據畫素本身之間的相似性,它訓練時不需要畫素標註資訊,其預測結果也不能保證有語義性。例如圖片分割可能將上圖中的狗劃分成兩個區域,其中一個嘴巴和眼睛,其顏色以黑色為主,另一個是身體其餘部分,其主色調是黃色。

另一個應用是例項分割(instance segementation),它不僅需要知道每個畫素的語義,即屬於那一類物體,還需要進一步區分物體例項。例如如果圖片中有兩隻狗,那麼對於預測為對應狗的畫素是屬於地一隻狗還是第二隻。

2、雷鋒網:浙大博士生劉漢唐:帶你回顧影象分割的經典演算法 | 分享總結

2.3 目標檢測

需要關注的一些神經網路模型:

計算機視覺筆記及資料整理(含影象分割、目標檢測)

論文下載:

  • 【2014】R-CNN 論文地址: https://arxiv.org/abs/1311.2524
  • 【2015】Fast R-CNN 論文地址: https://arxiv.org/abs/1504.08083
  • 【2016】Faster R-CNN 論文地址: https://arxiv.org/abs/1506.01497
  • 【2017】Mask R-CNN 論文地址: https://arxiv.org/abs/1703.06870

R-CNN:是將 CNN 用於物體檢測的早期應用。

R-CNN 的目標是:匯入一張圖片,通過方框正確識別主要物體在影象的哪個地方。

輸入:影象 輸出:方框+每個物體的標籤

Fast R-CNN:它加速、簡化了 R-CNN。

Faster R-CNN:名字很直白,它加速了選區推薦。

Mask R-CNN:把 Faster R-CNN 擴充到畫素級的影象分割。

Mask R-CNN:一種目標例項分割(object instance segmentation)框架。該框架較傳統方法操作更簡單、更靈活。研究人員把實驗成果《Mask R-CNN》釋出在了arXiv上,並表示之後會開源相關程式碼。

一般來說,目標分割的難點在於,它需要正確識別出影象中所有物體的方向,並且要將不同物體精準區分開。因此,這裡面涉及到兩個任務:

  • 用物體識別技術識別物體,並用邊界框表示出物體邊界;
  • 用語義分割給畫素分類,但不區分不同的物件例項。

PS:知乎問答 如何評價rcnn、fast-rcnn和faster-rcnn這一系列方法? 也提到了目標檢測涉及到的模型 RCNN、Fast RCNN、Faster RCNN、YOLO、SSD 等,並且 B 站也有相關視訊可以觀看,比如 Mask R-CNN實戰之蒙版彈幕黑科技實現 YOLO RCNN 目標檢測

相關視訊:

2.4 計算機視覺牛人部落格及程式碼

參考:

三、ML和DL入門

3.1 寫在前面

認識:

目前我們通過機器學習去解決這些問題的思路都是這樣的(以視覺感知為例子):

從開始的通過感測器(例如 CMOS)來獲得資料。然後經過預處理、特徵提取、特徵選擇,再到推理、預測或者識別。最後一個部分,也就是機器學習的部分,絕大部分的工作是在這方面做的,也存在很多的 paper 和研究。 而中間的三部分,概括起來就是特徵表達。良好的特徵表達,對最終演算法的準確性起了非常關鍵的作用,而且系統主要的計算和測試工作都耗在這一大部分。但,這塊實際中一般都是人工完成的。靠人工提取特徵。

機器學習如何入門:

機器學習資料及學習路線:

一些優秀 GitHub 倉庫及資料:

優秀部落格:

  • 劉建平Pinard:https://www.cnblogs.com/pinard/category/894692.html
  • Poll的筆記:http://www.cnblogs.com/maybe2030
  • Charlotte77:https://www.cnblogs.com/charlotte77/tag/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/
  • ......

3.2 機器學習

機器學習十大常用演算法:輕鬆看懂機器學習十大常用演算法

1. 決策樹
2. 隨機森林演算法
3. 邏輯迴歸
4. SVM
5. 樸素貝葉斯
6. K最近鄰演算法
7. K均值演算法
8. Adaboost 演算法
9. 神經網路
10. 馬爾可夫
複製程式碼

機器學習實踐:

3.3 深度學習

深度學習的發展:

入門文章:

問題:

深度學習筆記類:

博文:

為什麼說都說神經網路是個黑箱?

神經網路遊樂場:playground

深度學習這塊,幾個層次:(來源 Charlotte:三個月教你從零入門深度學習

demo俠:下載了目前所有流行的框架,對不同框裡的例子都跑一跑,看看結果,覺得不錯就行了,進而覺得,嘛,深度學習也不過如此嘛,沒有多難啊。這種人,我在面試的時候遇到了不少,很多學生或者剛轉行的上來就是講一個demo,手寫數字識別,cifar10資料的影象分類等等,然而你問他這個手寫數字識別的具體過程如何實現的?現在效果是不是目前做好的,可以再優化一下嗎?為什麼啟用函式要選這個,可以選別的嗎?CNN的原理能簡單講講嗎?懵逼了。

調參俠:此類人可能不侷限於跑了幾個demo,對於模型裡的引數也做了一些調整,不管調的好不好,先試了再說,每個都試一下,學習率調大了準確率下降了,那就調小一點,那個引數不知道啥意思,隨便改一下值測一下準確率吧。這是大多數初級深度學習工程師的現狀。當然,並不是這樣不好,對於demo俠來說,已經進步了不少了,起碼有思考。然而如果你問,你調整的這個引數為什麼會對模型的準確率帶來這些影響,這個引數調大調小對結果又會有哪些影響,就又是一問三不知了。

懂原理俠:抱歉我起了個這麼蠢的名字。但是,進階到這一步,已經可以算是入門了,可以找一份能養活自己的工作了。CNN,RNN,LSTM信手拈來,原理講的溜的飛起,對於不同的引數對模型的影響也是說的有理有據,然而,如果你要問,你可以手動寫一個CNN嗎?不用調包,實現一個最基礎的網路結構即可,又gg了。

懂原理+能改模型細節俠:如果你到了這一步,恭喜你,入門了。對於任何一個做機器學習/深度學習的人來說,只懂原理是遠遠不夠的,因為公司不是招你來做研究員的,來了就要幹活,幹活就要落地。既然要落地,那就對於每一個你熟悉的,常見的模型能夠自己手動寫程式碼執行出來,這樣對於公司的一些業務,可以對模型進行適當的調整和改動,來適應不同的業務場景。這也是大多數一二線公司的工程師們的現狀。然而,對於模型的整體架構能力,超大資料的分散式執行能力,方案設計可能還有所欠缺,本人也一直在這個階段不停努力,希望能夠更進一步。

超大資料操控俠:到這一階段,基本上開始考慮超大資料的分散式執行方案,對整體架構有一個巨集觀的瞭解,對不同的框架也能指點一二。海量資料的分散式執行如何避免網路通訊的延遲,如何更高效更迅速的訓練都有一定經驗。這類人,一般就是我這種蝦米的領導了。

模型/框架架構師:前面說了一堆都是對現有的框架/模型處理的經驗,這個階段的大俠,哦,不對,是大師可以獨立設計開發一套新框架/演算法來應對現有的業務場景,或者解決一直未解決的歷史遺留問題。沒啥好說了,膜拜!

3.3.1 CNN(卷積神經網路)

1、認識

淺析圖卷積神經網路

假設有一張圖,要做分類,傳統方法需要手動提取一些特徵,比如紋理啊,顏色啊,或者一些更高階的特徵。然後再把這些特徵放到像隨機森林等分類器,給到一個輸出標籤,告訴它是哪個類別。而深度學習是輸入一張圖,經過神經網路,直接輸出一個標籤。特徵提取和分類一步到位,避免了手工提取特徵或者人工規則,從原始資料中自動化地去提取特徵,是一種端到端(end-to-end)的學習。相較於傳統的方法,深度學習能夠學習到更高效的特徵與模式。

計算機視覺筆記及資料整理(含影象分割、目標檢測)

補充點內容:端對端怎麼理解?——參考:知乎該問答 什麼是 end-to-end 神經網路?。看後,我的理解:就是輸入是原始資料,輸出是最後的結果,只關心輸入和輸出,中間的步驟全部都不管。

在計算機中,影象是如何被表達和儲存的呢?

計算機視覺筆記及資料整理(含影象分割、目標檢測)

2、卷積過程

卷積的計算過程:(圖文並茂地講解卷積神經網路

計算機視覺筆記及資料整理(含影象分割、目標檢測)

下面這張圖為李宏毅深度學習視訊課程的截圖:

計算機視覺筆記及資料整理(含影象分割、目標檢測)

左區域的三個大矩陣是原式影象的輸入,RGB三個通道用三個矩陣表示,大小為773。

Filter W0表示1個filter助手,尺寸為3*3,深度為3(三個矩陣);Filter W1也表示1個filter助手。因為卷積中我們用了2個filter,因此該卷積層結果的輸出深度為2(綠色矩陣有2個)。

Bias b0是Filter W0的偏置項,Bias b1是Filter W1的偏置項。

OutPut是卷積後的輸出,尺寸為3*3,深度為2。

思考:

①為什麼每次滑動是2個格子?

滑動的步長叫stride記為S。S越小,提取的特徵越多,但是S一般不取1,主要考慮時間效率的問題。S也不能太大,否則會漏掉影象上的資訊。

②由於filter的邊長大於S,會造成每次移動滑窗後有交集部分,交集部分意味著多次提取特徵,尤其表現在影象的中間區域提取次數較多,邊緣部分提取次數較少,怎麼辦?

一般方法是在影象外圍加一圈0,細心的同學可能已經注意到了,在演示案例中已經加上這一圈0了,即+pad 1。 +pad n表示加n圈0.

③一次卷積後的輸出特徵圖的尺寸是多少呢?

計算機視覺筆記及資料整理(含影象分割、目標檢測)
特徵對映矩陣尺寸計算公式:[(原圖片尺寸-卷積尺寸+2Pad)/步長]+1 注意:在一層卷積操作裡可以有多個filter,他們是尺寸必須相同。

3、學習資料
4、問題

Q1:什麼是上取樣?

計算機視覺筆記及資料整理(含影象分割、目標檢測)

3.3.2 深度學習框架

1、TensorFlow

1)文件

2)視訊

2、實戰

① MNIST 手寫數字識別

MNIST 資料集已經是一個被”嚼爛”了的資料集,很多教程都會對它”下手”,幾乎成為一個 “典範”。不過有些人可能對它還不是很瞭解, 下面來介紹一下。

MNIST 資料集可在 http://yann.lecun.com/exdb/mnist/ 獲取,它包含了四個部分:

  • Training set images: train-images-idx3-ubyte.gz (9.9 MB, 解壓後 47 MB, 包含 60,000 個樣本)
  • Training set labels: train-labels-idx1-ubyte.gz (29 KB, 解壓後 60 KB, 包含 60,000 個標籤)
  • Test set images: t10k-images-idx3-ubyte.gz (1.6 MB, 解壓後 7.8 MB, 包含 10,000 個樣本)
  • Test set labels: t10k-labels-idx1-ubyte.gz (5KB, 解壓後 10 KB, 包含 10,000 個標籤)

MNIST 資料集來自美國國家標準與技術研究所, National Institute of Standards and Technology (NIST). 訓練集 (training set) 由來自 250 個不同人手寫的數字構成, 其中 50% 是高中學生, 50% 來自人口普查局 (the Census Bureau) 的工作人員. 測試集(test set) 也是同樣比例的手寫數字資料。

更詳細教程及介紹:MNIST 資料

程式碼:

3.4 資料集

計算機視覺:

四、一些思考


2018.08.12 未完...... 以上就當是自己對看到的文章、學習資料的梳理,感覺也挺亂的,只希望看到該文的你對你有那麼點用處就好~(以後有時間再更新、或重新整理....)

2019.09.26 增加了「3.4 資料集」、「四、一些思考」,以及文中少許修改。

2019.09.27 新增了影象分割神經網路模型的一些介紹以及論文下載地址等內容。

相關文章