第一課:計算機視覺歷史回顧與介紹(上)
簡單的介紹:關于課程,我們要解決的問題,我們要學習的工具
神經網絡/卷積神經網絡(深度學習網絡)
我們實際上進入了一個視覺時代(像素),互聯網作為信息載體和傳感器的發展。
對照片進行標簽、分類、處理視頻的每一幀依賴計算機視覺的發展。
挑戰:非常大量的數據,以及“暗物質”(無法手工處理)。
本門課:
模型方面:神經網絡
應用范圍:視覺識別
深入理解問題本質,思考問題的真正定義,很難繼續前行推進,成為下一個解決問題的模型發明者(開發出一個能解決實際難題的系統)。
神經元是一列一列排列的,它們只對特定的形狀變化產生脈沖。
第三課:計算機視覺歷史回顧與介紹(中)
視覺處理流程的第一步,是對簡單的形狀結構處理(邊緣、排列)。
邊緣決定結構(第一篇計算機視覺博士論文)。
視覺是分層的。
歸納上述兩點:
從簡單的形狀開始
可以建立一個分層的模型
卷積神經網絡
感知分組是視覺領域最為重要的問題。
試圖去給真實的3D物體建模,現在我們變成了試圖去“識別物體是什么”。我們跳過了是否能對這些人臉重新建模的過程。
第四課:計算機視覺歷史回顧與介紹(下)
摩爾定律
大數據
第四課:數據驅動的圖像分類方式:K最近鄰與線性分離器
圖像分類
在此之前,我們需要將圖片轉換成一張巨大的數字表單,然后從所有種類中,給這個表單選定一個標簽。其他場景分類,物體檢測都是在圖像分類的基礎上進行細小的改動。
為什么圖片分類很難?
語義鴻溝。在計算機中,圖片是一張巨大的數字表單,可以大致由一個3001003的三維數組表示,0~255的數字,這些數字反映的是亮度以及每個單點三基色的權值。
難點在于當你想要處理這表單中數以百萬計的數字并將其分類。相機是可以進行旋轉和縮放的,并且旋轉、平移、聚焦點選取等操作都會讓圖片樣式不同。相機亮度的調整。我們對所有這些調整都具有魯棒性。形變問題。光纖問題。遮蔽問題。背景雜斑問題。同類演變問題。
圖片分類器是什么樣子呢?我們構建一個三維空間,將x軸上的值定為種類標簽值,沒有任何一種顯示的編程方法能實現這樣的分類器。
有一種方法是找到貓的小耳朵(以此來找到貓)。我們要做的就是檢測并勾畫出圖片的邊界,按照邊界形狀與連接方式進行分類。這會讓你學習到這類東西的“樣本集合”,我們可以盡量找到它們的各種形態。你也可以設定一些其他的規則。
那識別船和人呢?
所以這是一種不可擴展的分類方法。我們在機器學習的框架中經常采用的是數據驅動的方法。
現在有海量數據,如果我訓練一個模型,這個模型是一個類,然后我可以使用這個模型對你的測試數據進行分類。當你給我一個新的圖片時,我可以參考我的訓練數據,然后做一些基于模式匹配和統計的工作。
考慮一些近鄰算法分類器。
近鄰算法分類器的工作方式是高效的得到本聯合訓練集。在一段訓練時間內,我們只需記住所有的訓練數據,所以我得到了我剛剛輸入的全部訓練數據,并且我記住了他們,當你給我一張測試圖像時,我們要做的就是對測試圖像和之前看過的每一張訓練集中的圖像進行一一對比,然后我們會傳送相應的標簽。因此我只需要瀏覽所有的圖片。
我們如何來做比較?
最簡單的方式就是曼哈頓距離算法(L1距離算法)。該算法將進行逐元素比較,比較所有的像素值,形成絕對值得差,然后將所有的差值相加,就得到了相似性。
Python算法
它的速度如何取決于訓練數據的大小?當訓練數據的規模增大將會發生什么?會變慢么?
近鄰算法是一個即時的訓練方法,但同時它又是一個昂貴的測試方法。
能使近鄰算法分類器速度加快的方法?
近似近鄰算法。
另外一個我們喜歡在實踐中使用的度量叫做歐式距離或L2距離。歐式距離不是計算絕對值差的和,而是計算這些圖像間差值的平方和。這是一個用來進行控制的離散選擇,這個距離的選擇我們稱為超參數。
另一個超參數我們將在近鄰算法分類器的背景下談,及我們將近鄰推廣為最近鄰規則分類器KNN。在最近鄰規則分類器中,檢索每一張測試圖像,事實上,單一鄰近的訓練實例將檢索幾個最臨近的實例。我們將讓它們在所有的類中做多數的表決,從而對每一個測試實例進行分類。
隨著K值的增大,比如說5-NN分類器,你就會發現分界線開始變平滑了,這就形成了非常好的效果。
使用歐幾里得距離時最緊鄰分類器的準確性?
使用曼哈頓距離?
L值為5的KNN方法?
如何設置k的值,可能是1,2,3...10或者其他,事實上,它們與問題本身有聯系,如何找到這些超參數的最佳選擇?
嘗試,效果最好的就是我所需要的。
首先訓練集是需要扔掉的,因為你的算法對于其它數據的泛化程度才是算法效果的關鍵。通過交叉驗證法的結果來決定參數選擇。
KNN很少被采用是因為首先它的效率很低,其次,他分類效果不是很好,容易受到環境變化的影響。
大多時候,人們不完全使用交叉驗證集,它們只用一個單一的驗證集,然后從中找到最合適的超參數。
- 線性分類
卷積神經網絡
給圖片加一句話的描述:
兩個部分:第一部分是一個我們已知的卷積神經網絡,可用于計算機視覺
另一個是循環神經網絡,非常適用于排序問題(單詞序列)
這兩個網絡之間會相互通信,在描述圖像的過程中,這些梯度會流入整個卷積網絡,系統會自我調整,以更好地認識圖像,最后再描述它們。
- 通過參數化方法得到分類結構
我們要做的是構造一個函數,輸入一張圖片,對每一類輸出一個數值。即對任意一張圖片,我們會計算出它到底屬于哪一類?這個函數表達式不僅僅是輸入圖像的函數,也是這些W表示的參數的函數,這些參數有時候也會被稱為權重。
我們要學習這個函數:從最開始的線性函數,到神經網絡再到卷積神經網絡。更直觀的,我們要輸入一張圖像,然后輸出與十個類相對應的數值。我們不能改變x,但是可以改變W,可以設定任何值,我們希望把w設定為對訓練集中每張圖像都可以實現正確輸出的值。
線性分類方法:
b不是圖像的函數,它是獨立的權重參數(均衡)。
貓最終輸出的數值是-96.8,說明這里的W設置的不好。
那么線性分類器是做什么的呢?
從空間角度出發,X是一個多維的數據,然后W把一個平面放入這個多維數據中;W的每一行都和圖像進行點乘(一種把相應需要結合的數匹配在一起);W有關注或不關注圖片上的不同空間位置的能力(因為圖片上的每個點X都有權重,如果權重設為零,則W不會關注那部分圖片);從圖片空間映射到標簽空間...
如果圖片不一樣大怎么辦?
你總要把圖片改變到一個相同的大小。
本質上說:線性分類器計算的是一個加權和,即計算不同空間位置的顏色之和。
當有一個點使用的是混合顏色時,線性分類器工作就會變得很糟糕。
...
這個字幕各方面都不是很友好,我還是看吳恩達老師的課吧。。。