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