一、視覺(jué)的誕生
地球上的生命在誕生后的幾十億年里,都沒(méi)有發(fā)生什么巨大的變化。它們一直“平躺”在原始海洋的底部,既不能自主移動(dòng),也不能捕獵和覓食。
直到大約5億年前,進(jìn)化突然開(kāi)始大爆發(fā),在接下來(lái)的短短幾千萬(wàn)年中,生命探索出了各種不同的身體結(jié)構(gòu),幾乎覆蓋了今天的所有生物類(lèi)型,它們也擁有了復(fù)雜的行為,可以捕食、趨光和避害。
雖然寒武紀(jì)生命大爆發(fā)的原因有很多,但其中重要的原因之一,就是視覺(jué)的出現(xiàn)。視覺(jué)讓生物適應(yīng)環(huán)境的能力產(chǎn)生飛躍,也因此成為了最重要的感知功能。
乍一聽(tīng)起來(lái),視覺(jué)是眼睛的功能,因?yàn)槲覀兛偸怯醚劬礀|西。但事實(shí)上,眼睛只是感知器官,只能被動(dòng)接收外界的光線信息。這些信息要經(jīng)過(guò)復(fù)雜的解碼后,才能在大腦里產(chǎn)生理解,讓我們知道周?chē)l(fā)生了什么,應(yīng)該作出什么樣的反應(yīng)。因此,大腦其實(shí)才是最重要的視覺(jué)器官。
對(duì)計(jì)算機(jī)來(lái)說(shuō),模擬“眼睛”的功能不難,一個(gè)攝像頭就能輕松做到。但要像大腦視覺(jué)區(qū)域一樣真正理解視覺(jué)信息卻非常困難。
圖片來(lái)源:pixabay
我們?nèi)祟?lèi)在年幼的時(shí)候,只需要在生活中看到幾只貓,就能非常清晰地理解貓的視覺(jué)特征,下次再看到一只陌生的貓,也能一眼就認(rèn)出來(lái)。但我們卻很難把這樣的特征轉(zhuǎn)變成計(jì)算機(jī)能理解的形式。例如,圖片中的貓雖然都是貓,但對(duì)計(jì)算機(jī)來(lái)說(shuō),卻毫無(wú)相似性。
所以,雖然傳統(tǒng)的視覺(jué)算法設(shè)定了大量的規(guī)則,試圖提取出各種各樣的圖片特征,但卻一直無(wú)法理解圖片的內(nèi)容,以至于連識(shí)別圖片中的物體是貓還是狗這樣對(duì)人類(lèi)輕而易舉的事情都做不好。
二、神經(jīng)網(wǎng)絡(luò)算法的助力
為了驗(yàn)證算法對(duì)圖片分類(lèi)的準(zhǔn)確性。當(dāng)時(shí)在普林斯頓大學(xué)任教的計(jì)算機(jī)科學(xué)家李飛飛在2010年發(fā)布了一個(gè)巨大的圖片數(shù)據(jù)集 ImageNet,包含了一千多個(gè)類(lèi)別。2010年,當(dāng)時(shí)最先進(jìn)的算法只能正確識(shí)別72%左右的圖片。
但深度學(xué)習(xí)的出現(xiàn)改變了一切。2012年,多倫多大學(xué)的杰弗里·辛頓和他的兩個(gè)學(xué)生發(fā)表了神經(jīng)網(wǎng)絡(luò) AlexNet。這個(gè)網(wǎng)絡(luò)立刻在 ImageNet 上產(chǎn)生了巨大的突破,將準(zhǔn)確率提升到了84%多。
又過(guò)了幾年,辛頓獲得了圖靈獎(jiǎng),而論文的另一個(gè)作者伊利亞·蘇特斯威夫( Ilya Sutskever)則成為了 OpenAI 的創(chuàng)始團(tuán)隊(duì)成員,但這都是后話了。
神經(jīng)網(wǎng)絡(luò)是如何識(shí)別圖片的?我們可以看一個(gè)簡(jiǎn)單的例子。假如我們要識(shí)別一個(gè)28*28圖片上的手寫(xiě)數(shù)字。我們可以把圖片中的像素拉長(zhǎng),變成一列由784個(gè)數(shù)字組成的數(shù)列。然后,我們可以把這個(gè)數(shù)列作為輸入傳送到神經(jīng)網(wǎng)絡(luò)里。神經(jīng)網(wǎng)絡(luò)的輸出包括10個(gè)神經(jīng)元,每個(gè)神經(jīng)元的輸出值代表一個(gè)數(shù)字。
一開(kāi)始,輸入圖片數(shù)據(jù)后,輸出的結(jié)果是隨機(jī)的。但如果我們用大量訓(xùn)練數(shù)據(jù)訓(xùn)練這個(gè)神經(jīng)網(wǎng)絡(luò),讓網(wǎng)絡(luò)根據(jù)正確結(jié)果修改自己的參數(shù),不斷反饋,神經(jīng)網(wǎng)絡(luò)逐漸就能學(xué)會(huì)如何正確識(shí)別數(shù)字了。
但這種簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)也存在問(wèn)題。
三、新問(wèn)題的出現(xiàn)
第一個(gè)問(wèn)題是它的參數(shù)非常多。假如我們?cè)谳斎牒洼敵鲋猓皇褂?00個(gè)神經(jīng)元作為中間層,就會(huì)產(chǎn)生784*100+100*10 = 79400個(gè)連接。而我們要處理的圖片,往往遠(yuǎn)遠(yuǎn)大于28*28像素,所以會(huì)導(dǎo)致模型里帶有太多參數(shù),變得難以訓(xùn)練。第二個(gè)問(wèn)題是,這種方法打亂了像素在原始圖片中的分布,不符合人類(lèi)觀看圖片的模式。
如何解決這兩個(gè)問(wèn)題呢?研究人員觀察到兩個(gè)特性。
首先,辨別圖片中的物體不一定需要掃描圖片中的每個(gè)像素,而只要找到圖片的重點(diǎn)區(qū)域是否出現(xiàn)了某個(gè)重要的特征。例如,我們?nèi)绻吹揭粔K黑白相間的皮膚,也許就能直接判斷出圖片里的動(dòng)物是斑馬。
其次,這種特征在圖片的位置并不關(guān)鍵。無(wú)論一只貓出現(xiàn)在照片的什么位置,它都是一只貓。
因此,研究人員不再打亂像素,而是用一個(gè)類(lèi)似小窗口一樣的工具在圖片上滑動(dòng),捕捉圖片不同位置上的局部特征。這些小窗可以通過(guò)一組參數(shù)滑遍全圖,所以減少了參數(shù)量,而且也捕捉到了圖片不同的區(qū)域。使用了這樣“小窗”的神經(jīng)網(wǎng)絡(luò)又叫卷積神經(jīng)網(wǎng)絡(luò)。AlexNet 其實(shí)就是一種簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò)。
隨后,神經(jīng)網(wǎng)絡(luò)技術(shù)不斷得到優(yōu)化,神經(jīng)元數(shù)量和網(wǎng)絡(luò)層數(shù)都在不斷增加,性能也不斷提升,幾年后在 ImageNet 上的準(zhǔn)確率就已經(jīng)超過(guò)了97%,至少在這個(gè)數(shù)據(jù)集上接近了人類(lèi)的水平。
不過(guò),除了圖片分類(lèi)外,計(jì)算機(jī)視覺(jué)還有很多別的任務(wù)。比圖片分類(lèi)更難一些的是物體識(shí)別。物體識(shí)別任務(wù)不僅需要識(shí)別圖片中的物體,還需要標(biāo)出物體所在的位置。有的時(shí)候,圖片中還包括不止一類(lèi)物體。
物體識(shí)別被廣泛應(yīng)用于自動(dòng)駕駛中,因?yàn)樽詣?dòng)駕駛系統(tǒng)要能識(shí)別不同類(lèi)型的物體,比如其他汽車(chē)、行人、信號(hào)燈和指示標(biāo)識(shí)等等。
另外,我們還需要模型理解不同“模態(tài)”的數(shù)據(jù),并把它們結(jié)合在一起。例如,結(jié)合了文本和圖片的模型可以根據(jù)文字生成圖片。
除了處理已經(jīng)存在的圖片,我們還想讓機(jī)器生成新的圖片和視頻。現(xiàn)在,OpenAI、谷歌和百度等機(jī)構(gòu)都已經(jīng)有了較為成熟的圖片生成工具,但視頻生成技術(shù)還相對(duì)原始,有很大的改進(jìn)空間。
計(jì)算機(jī)視覺(jué)領(lǐng)域還有一個(gè)開(kāi)放的問(wèn)題,就是是否可以開(kāi)發(fā)一個(gè)類(lèi)似 GPT-4或 chatGPT 這樣的通用視覺(jué)模型。畢竟,視覺(jué)理解是智能不可或缺的一部分,缺少視覺(jué)能力的語(yǔ)言大模型不能讓所有人都相信體現(xiàn)了全部智能。
文章由科普中國(guó)-星空計(jì)劃(創(chuàng)作培育)出品,轉(zhuǎn)載請(qǐng)注明來(lái)源。
作者:管心宇 科普作者
審核:于旸 騰訊玄武實(shí)驗(yàn)室負(fù)責(zé)人
來(lái)源: 星空計(jì)劃
內(nèi)容資源由項(xiàng)目單位提供