乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

本門課程是李飛飛在斯坦福大學講授的計算視覺,他們團隊主要通過機器學習和深度學習的方法來傳授機器視覺的相關內容,本文作者吉林大學趙一帆進行了筆記方面的整理。筆者能力有限,如有出錯,請及時告知。

圖像分類的任務,這是一個計算機視覺中真正核心的任務,準確說它是研究圖形處理的任務。

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 做圖像分類時,分類器接受一些輸入圖像,並且已經確定分類或者標籤的集合,比如說可愛的貓咪。

o 分類器的工作就是查看未分類的圖片並且給它分配到其中一些固定的分類標籤。

這對於計算機來說是一件很難的事情

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 事實上,當一個計算機看著這些圖片的時候,它肯定沒有一隻貓的整體概念,計算機呈現圖片的方式其實就是一大堆數字。圖像可能只是一些像的像素,每個像素由紅、綠、藍三個數字表示,這很難從幾千個巨大數列中提取貓的特性。

這個問題被稱為語義鴻溝,對於貓的概念或者其它的標籤,是賦給圖像的一個語義標籤,和這些計算機實際看到的像素值之間有著巨大的差距。

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 這是一個非常困難的問題。因為可以用很微小,很微妙的方式改變圖片,這將導致像素網絡整個發生變化。

· 比如,還是同樣一隻貓,如果這隻貓恰好靜坐著,但是把相機移動到另一邊,那麼這個巨大數字網絡中的每一個小格子,每一個像素都會完全不同。但是,它依舊是同樣一隻貓。

同時,算法需要對這些變化魯棒,但是,不僅僅只有視覺角度這一個問題。

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 在場景中也會有照明問題,無論貓咪出現在漆黑、昏暗的場景中,還是非常明亮、陽光照射的場景中,它始終都是一隻貓。

o 對於這種情況算法也應該具有魯棒性。

貓咪屬於液態動物

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 而且貓咪可以由千奇百怪的姿勢和位置。

o 對於不同的形變情形,算法也應該是魯棒的。

當然還有遮掩的問題

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 可能僅僅有貓咪的一部分,比如說臉,甚至值看到尾巴尖兒從沙發墊下露出來

處理的時候還會有照片背景混亂的問題

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 可能一張圖片的前面所顯示的是一隻貓會和照片背景很相似。

還有可能會有類內差異的問題

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 這張照片看上去是一些貓,但實際上,每隻貓都會有視覺上的差異。

o 比如貓有不同形狀、大小、顏色以及年齡。

這真的是一個很難的問題,但是大腦在處理這些的時候不覺得有什麼難的,因為大腦裡早就有處理這些東西的神經存在。

o 如果想讓計算機程序同時處理這些事情,且不說那些小貓的圖片,任何你想到的圖像,都會是很難的算法問題。

o 儘管這些問題很難處理,奇蹟的是目前已經有效的算法可以處理這些事情。

o 這些算法不僅僅有效,而且在某些特定的情況下接近人腦處理,這些算法只用幾百毫秒的時間,這是相當難以置信的技術。

對於圖像分類會有哪些程序調用接口,如果可以寫一個python模型接受一個圖片作為參數,然後來一波神操作,最後返回這個圖片上面,是隻貓還是狗等等。

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 但是並沒有什麼直接了當的算法可以解決圖像識別算法,如果在上算法課,排序、計算凸包或者信息加密技術算法,可以枚舉出所有可能發生的步驟

o 但是當來解決識別對象的算法的時候,並沒有什麼簡明瞭的算法可以直接完成這些識別。

儘管如此,人們還是做了很多嘗試,嘗試出一組編碼的規則來識別不同的動物。

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 對於貓來說,貓有耳朵、眼睛、嘴巴、鼻子。根據Hubel和Wiesel的研究,邊緣檢測對視覺識別是十分重要的

o 所以可以嘗試,計算出圖像的邊緣,然後把邊、角各種形狀分類好

· 比如說有三條線是相交的,那這就可能是一個角點,比如貓耳朵也有這樣的角,諸如此類,可以寫一些規則來識別這些貓。

o 但事實上,這種算法並不是很好

· 首先,是很容易出錯的

· 其次,如果想對一種除了貓之外的對象進行分類,那就得從頭來一次。

所以,基於此用數據驅動的方法

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 不寫具體的分類規則來識別一隻貓或魚,取而代之的是,從網上抓取數據大量貓或者其他的圖片數據集。

· 這種手機圖片數據集的方法實際上也挺花時間的,但是好在已經有很多很高質量可用的圖片數據集。

· 一旦有了數據集,訓練機器來分類這些圖片,機器會收集所有數據,用某種方式總結,然後生產一個模型總結出識別出這些不同類的對象的核心只是要素。

· 最後,用這個模型來識別新的圖片來看看能不能識別。

o 所以,不僅僅只有一個函數輸入圖片,然後識別出它是一隻貓。而是需要兩個函數,一個是訓練函數,這函數接收到圖片和標籤,然後輸出模型;另一個是預測函數,接受一個模型,對圖片種類進行預測。

本課程主要討論神經網絡還有卷積神經網絡還有深度學習等等

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 但是這種數據驅動類的算法是比深度學習更廣義的一種概念,他是十分有用的。

o 通過這種過程,對於一個簡單的分類器,稱之為最近鄰,這種算法很想誠實的默者。

    • 在訓練機器的過程中,只單純記錄所有的訓練數據。在圖片預測的步驟,拿出一些新的圖片去訓練數據中,尋找於新圖片最相似的,然後基於此來給出一個標籤。

具體來說,比如一個叫做CIFAR-10的數據集

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 這是機器學習中很常用的一個測試數據集。數據集CIFAR-10會各處10個不同的類別。每個類別會給出5萬張訓練數據圖和1萬張測試圖片

o 舉個例子

· 這是在數據集上的最近鄰分類器,在右邊的大格里

· 最左邊一列是CIFAR-10數據集的測試圖片,在右邊將訓練圖片進行分類的結果,並顯示對應測試示例的最相似的訓練圖片。

· 可以看到,雖然他們不完全正確,但看起來還是比較相似的。

o 所以當選擇最近鄰用於這些圖片,就能在訓練集中找到最接近的示例。

有一個細節必須清楚

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 如果給出兩張圖片,該如何對他們進行比較?

o 如果要將測試圖片與所有訓練圖片進行比較,將會有很多不同的選擇來確定需要什麼樣的比較函數。

o 如上圖片適用了距離,有時稱之為曼哈頓距離。這是一個簡單的比較圖片的方法,只是對這些圖片中的單個像素進行比較。

o 只取測試圖像上的像素,用它減去訓練圖像對應像素的值,然後取絕對值,就得到這兩幅圖像這個像素的差別,將圖像中所有像素的差值相加。

o 雖然這種比較圖片的方法看起來有點笨,但有些時候卻也有它的合理性。這也給了一個比較兩幅圖片的具體方法。

o 這個例子的兩幅圖像中,共有456處不同。

這裡是最近鄰分類器的完整Python代碼

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 它非常簡明,因為用了Numpy的向量運算

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 這是之前提到過的訓練函數,將它運用於最近鄰算法非常簡單,只需要存儲訓練數據即可。

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 在測試的時候,將輸入圖像,然後使用距離函數,將測試圖片與訓練實例進行比較,然後再訓練集中找到最相似的實例。

o 可以看到,使用這些向量化操作,只需要一兩行Python代碼就能實現。

o 這裡還有寫簡單的問題

· 如果再訓練集中有N個實例,訓練和測試的過程可以有多塊?

§ 因為訓練並不需要任何事情,只需要儲存數據,只是拷貝了一個指針,無論數據集有多大,那將是一個恆定的時間。

§ 但是在測試時,將數據集中N個訓練實例,與測試圖像進行對比,這是一個很慢的過程。

在實際中,最近鄰算法到底表現如何?

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 所以畫了這個圖形,叫做最近鄰分類器的決策區域。

o 訓練集包含二維平面的這些點,點的顏色代表不同類型

o 可以發現最近鄰分類器時根據相鄰的點來切割空間並進行著色

o 但是這個分類器並非時最好的選擇,可以飯先最近鄰分類器的一些問題

· 其中一個就是圖像中部集中了大多數綠點,但在中心卻有一個黃點,黃色區域被分割成兩塊,也看到了其他地方相同的情況,綠點有一個近了藍色區域,紅點也有幾個近了藍色區域,這些點可能時噪聲或者失真信號。

由這個動機出發,就產生了K-近鄰算法

乾貨|李飛飛主講斯坦福大學 CS231n 課程筆記

o 它不只是找出最近的點,還會做一些特殊動作,根據我們測得距離度量找到K個點,然後在這些相鄰點中進行投票,然後這些票最多的近鄰點預測出結果。

o 可以想象下更復雜的完成這個任務的方法,可以在距離上加權進行投票等等。但完成這個任務最簡單的方法還是進行多數投票

o 這裡用同樣的數據集,使用K等於1、3、5的最近鄰分類器

· 當k等於3時,可以看到綠色區域中的黃色噪點,不會再導致周圍的區域分為黃色,由於使用多數投票的方法。

· 當K等於5時,藍色和紅色區域間的這些決策邊界會變得更加平滑好看

o 所以當使用最近鄰分類器的時候,總會給K賦一個比較大的值,這樣hi使決策邊界更加平滑,從而得到更好的結果

【學生提問】:

· 白色區域代表什麼?

· 白色區域代表這個區域中沒有獲得K最近鄰的投票,可以做一個大膽的假設將它歸為某一個其他類別

思考計算機視覺時,再幾個不同的觀點之間,反覆思考與驗證時非常有用的

o 第一種觀點是,在平面上的高維點的概念

o 另一個觀點是具體圖像的觀察,因為圖像的像素點允許把這些圖像看作高維向量

點擊閱讀原文,查看剛刷完斯坦福CS231n,我反手就是滿屏原創代碼

相關推薦

推薦中...