1
本文作者: 黃善清 | 2018-12-06 11:02 |
雷鋒網(wǎng) AI 科技評論按:本門課程是李飛飛在斯坦福大學講授的計算視覺,他們團隊主要通過機器學習和深度學習的方法來傳授機器視覺的相關內(nèi)容,本文作者吉林大學珠海學院的趙一帆進行了筆記方面的整理。筆記如有出錯,請及時告知。
圖像分類的任務,這是一個計算機視覺中真正核心的任務,準確說它是研究圖形處理的任務。
o 做圖像分類時,分類器接受一些輸入圖像,并且已經(jīng)確定分類或者標簽的集合,比如說可愛的貓咪。
o 分類器的工作就是查看未分類的圖片并且給它分配到其中一些固定的分類標簽。
這對于計算機來說是一件很難的事情
o 事實上,當一個計算機看著這些圖片的時候,它肯定沒有一只貓的整體概念,計算機呈現(xiàn)圖片的方式其實就是一大堆數(shù)字。圖像可能只是一些像的像素,每個像素由紅、綠、藍三個數(shù)字表示,這很難從幾千個巨大數(shù)列中提取貓的特性。
這個問題被稱為語義鴻溝,對于貓的概念或者其它的標簽,是賦給圖像的一個語義標簽,和這些計算機實際看到的像素值之間有著巨大的差距。
o 這是一個非常困難的問題。因為可以用很微小,很微妙的方式改變圖片,這將導致像素網(wǎng)絡整個發(fā)生變化。
· 比如,還是同樣一只貓,如果這只貓恰好靜坐著,但是把相機移動到另一邊,那么這個巨大數(shù)字網(wǎng)絡中的每一個小格子,每一個像素都會完全不同。但是,它依舊是同樣一只貓。
同時,算法需要對這些變化魯棒,但是,不僅僅只有視覺角度這一個問題。
o 在場景中也會有照明問題,無論貓咪出現(xiàn)在漆黑、昏暗的場景中,還是非常明亮、陽光照射的場景中,它始終都是一只貓。
o 對于這種情況算法也應該具有魯棒性。
貓咪屬于液態(tài)動物
o 而且貓咪可以由千奇百怪的姿勢和位置。
o 對于不同的形變情形,算法也應該是魯棒的。
當然還有遮掩的問題
o 可能僅僅有貓咪的一部分,比如說臉,甚至值看到尾巴尖兒從沙發(fā)墊下露出來
處理的時候還會有照片背景混亂的問題
o 可能一張圖片的前面所顯示的是一只貓會和照片背景很相似。
還有可能會有類內(nèi)差異的問題
o 這張照片看上去是一些貓,但實際上,每只貓都會有視覺上的差異。
o 比如貓有不同形狀、大小、顏色以及年齡。
這真的是一個很難的問題,但是大腦在處理這些的時候不覺得有什么難的,因為大腦里早就有處理這些東西的神經(jīng)存在。
o 如果想讓計算機程序同時處理這些事情,且不說那些小貓的圖片,任何你想到的圖像,都會是很難的算法問題。
o 盡管這些問題很難處理,奇跡的是目前已經(jīng)有效的算法可以處理這些事情。
o 這些算法不僅僅有效,而且在某些特定的情況下接近人腦處理,這些算法只用幾百毫秒的時間,這是相當難以置信的技術。
對于圖像分類會有哪些程序調(diào)用接口,如果可以寫一個python模型接受一個圖片作為參數(shù),然后來一波神操作,最后返回這個圖片上面,是只貓還是狗等等。
o 但是并沒有什么直接了當?shù)乃惴梢越鉀Q圖像識別算法,如果在上算法課,排序、計算凸包或者信息加密技術算法,可以枚舉出所有可能發(fā)生的步驟
o 但是當來解決識別對象的算法的時候,并沒有什么簡明了的算法可以直接完成這些識別。
盡管如此,人們還是做了很多嘗試,嘗試出一組編碼的規(guī)則來識別不同的動物。
o 對于貓來說,貓有耳朵、眼睛、嘴巴、鼻子。根據(jù)Hubel和Wiesel的研究,邊緣檢測對視覺識別是十分重要的
o 所以可以嘗試,計算出圖像的邊緣,然后把邊、角各種形狀分類好
· 比如說有三條線是相交的,那這就可能是一個角點,比如貓耳朵也有這樣的角,諸如此類,可以寫一些規(guī)則來識別這些貓。
o 但事實上,這種算法并不是很好
· 首先,是很容易出錯的
· 其次,如果想對一種除了貓之外的對象進行分類,那就得從頭來一次。
所以,基于此用數(shù)據(jù)驅(qū)動的方法
o 不寫具體的分類規(guī)則來識別一只貓或魚,取而代之的是,從網(wǎng)上抓取數(shù)據(jù)大量貓或者其他的圖片數(shù)據(jù)集。
· 這種手機圖片數(shù)據(jù)集的方法實際上也挺花時間的,但是好在已經(jīng)有很多很高質(zhì)量可用的圖片數(shù)據(jù)集。
· 一旦有了數(shù)據(jù)集,訓練機器來分類這些圖片,機器會收集所有數(shù)據(jù),用某種方式總結(jié),然后生產(chǎn)一個模型總結(jié)出識別出這些不同類的對象的核心只是要素。
· 最后,用這個模型來識別新的圖片來看看能不能識別。
o 所以,不僅僅只有一個函數(shù)輸入圖片,然后識別出它是一只貓。而是需要兩個函數(shù),一個是訓練函數(shù),這函數(shù)接收到圖片和標簽,然后輸出模型;另一個是預測函數(shù),接受一個模型,對圖片種類進行預測。
本課程主要討論神經(jīng)網(wǎng)絡還有卷積神經(jīng)網(wǎng)絡還有深度學習等等
o 但是這種數(shù)據(jù)驅(qū)動類的算法是比深度學習更廣義的一種概念,他是十分有用的。
o 通過這種過程,對于一個簡單的分類器,稱之為最近鄰,這種算法很想誠實的默者。
在訓練機器的過程中,只單純記錄所有的訓練數(shù)據(jù)。在圖片預測的步驟,拿出一些新的圖片去訓練數(shù)據(jù)中,尋找于新圖片最相似的,然后基于此來給出一個標簽。
具體來說,比如一個叫做CIFAR-10的數(shù)據(jù)集
o 這是機器學習中很常用的一個測試數(shù)據(jù)集。數(shù)據(jù)集CIFAR-10會各處10個不同的類別。每個類別會給出5萬張訓練數(shù)據(jù)圖和1萬張測試圖片
o 舉個例子
· 這是在數(shù)據(jù)集上的最近鄰分類器,在右邊的大格里
· 最左邊一列是CIFAR-10數(shù)據(jù)集的測試圖片,在右邊將訓練圖片進行分類的結(jié)果,并顯示對應測試示例的最相似的訓練圖片。
· 可以看到,雖然他們不完全正確,但看起來還是比較相似的。
o 所以當選擇最近鄰用于這些圖片,就能在訓練集中找到最接近的示例。
有一個細節(jié)必須清楚
o 如果給出兩張圖片,該如何對他們進行比較?
o 如果要將測試圖片與所有訓練圖片進行比較,將會有很多不同的選擇來確定需要什么樣的比較函數(shù)。
o 如上圖片適用了距離,有時稱之為曼哈頓距離。這是一個簡單的比較圖片的方法,只是對這些圖片中的單個像素進行比較。
o 只取測試圖像上的像素,用它減去訓練圖像對應像素的值,然后取絕對值,就得到這兩幅圖像這個像素的差別,將圖像中所有像素的差值相加。
o 雖然這種比較圖片的方法看起來有點笨,但有些時候卻也有它的合理性。這也給了一個比較兩幅圖片的具體方法。
o 這個例子的兩幅圖像中,共有456處不同。
這里是最近鄰分類器的完整Python代碼
o 它非常簡明,因為用了Numpy的向量運算
o 這是之前提到過的訓練函數(shù),將它運用于最近鄰算法非常簡單,只需要存儲訓練數(shù)據(jù)即可。
o 在測試的時候,將輸入圖像,然后使用距離函數(shù),將測試圖片與訓練實例進行比較,然后再訓練集中找到最相似的實例。
o 可以看到,使用這些向量化操作,只需要一兩行Python代碼就能實現(xiàn)。
o 這里還有寫簡單的問題
· 如果再訓練集中有N個實例,訓練和測試的過程可以有多塊?
§ 因為訓練并不需要任何事情,只需要儲存數(shù)據(jù),只是拷貝了一個指針,無論數(shù)據(jù)集有多大,那將是一個恒定的時間。
§ 但是在測試時,將數(shù)據(jù)集中N個訓練實例,與測試圖像進行對比,這是一個很慢的過程。
在實際中,最近鄰算法到底表現(xiàn)如何?
o 所以畫了這個圖形,叫做最近鄰分類器的決策區(qū)域。
o 訓練集包含二維平面的這些點,點的顏色代表不同類型
o 可以發(fā)現(xiàn)最近鄰分類器時根據(jù)相鄰的點來切割空間并進行著色
o 但是這個分類器并非時最好的選擇,可以飯先最近鄰分類器的一些問題
· 其中一個就是圖像中部集中了大多數(shù)綠點,但在中心卻有一個黃點,黃色區(qū)域被分割成兩塊,也看到了其他地方相同的情況,綠點有一個近了藍色區(qū)域,紅點也有幾個近了藍色區(qū)域,這些點可能時噪聲或者失真信號。
由這個動機出發(fā),就產(chǎn)生了K-近鄰算法
o 它不只是找出最近的點,還會做一些特殊動作,根據(jù)我們測得距離度量找到K個點,然后在這些相鄰點中進行投票,然后這些票最多的近鄰點預測出結(jié)果。
o 可以想象下更復雜的完成這個任務的方法,可以在距離上加權(quán)進行投票等等。但完成這個任務最簡單的方法還是進行多數(shù)投票
o 這里用同樣的數(shù)據(jù)集,使用K等于1、3、5的最近鄰分類器
· 當k等于3時,可以看到綠色區(qū)域中的黃色噪點,不會再導致周圍的區(qū)域分為黃色,由于使用多數(shù)投票的方法。
· 當K等于5時,藍色和紅色區(qū)域間的這些決策邊界會變得更加平滑好看
o 所以當使用最近鄰分類器的時候,總會給K賦一個比較大的值,這樣hi使決策邊界更加平滑,從而得到更好的結(jié)果
【學生提問】:
· 白色區(qū)域代表什么?
· 白色區(qū)域代表這個區(qū)域中沒有獲得K最近鄰的投票,可以做一個大膽的假設將它歸為某一個其他類別
思考計算機視覺時,再幾個不同的觀點之間,反復思考與驗證時非常有用的
o 第一種觀點是,在平面上的高維點的概念
o 另一個觀點是具體圖像的觀察,因為圖像的像素點允許把這些圖像看作高維向量
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。