沉浸感按:最近微博上的全景照片很火呀,相比各位都已經(jīng)在自己的iPhone或者iPad上品鑒了多家IT公司的辦公室、游玩了多個(gè)旅游勝地、享受了被小貓小狗環(huán)繞的感覺(jué)了。太平洋那頭的Facebook也沒(méi)閑著,從去年上線類(lèi)似的功能以后,全世界Facebook用戶們已經(jīng)上傳了七千萬(wàn)張全景照片了。
Facebook支持多種全景照片和全景視頻的拍攝方式,可以讓人們把自己的全方位感受分享給好朋友們。如果用戶有一個(gè)專(zhuān)門(mén)的全景攝像機(jī),比如理光ThetaS或者GiropticiO,還可以直接把相機(jī)里的照片發(fā)布到Facebook上去。如今,多數(shù)高端安卓和iOS智能手機(jī)的內(nèi)置相機(jī)也都有了全景模式,可以用來(lái)拍全景照片。
Facebook在過(guò)去的一年中開(kāi)發(fā)并上線了多種技術(shù)給用戶提供更好的全景照片創(chuàng)建和分享體驗(yàn),包括全景拍照、全景視頻防抖,以及重新設(shè)計(jì)如何存儲(chǔ)高分辨率媒體。最近,F(xiàn)acebook還用到了深度神經(jīng)網(wǎng)絡(luò)來(lái)自動(dòng)矯正全景照片的方向,可以給手機(jī)拍攝的照片直接帶來(lái)更真實(shí)的包圍感。
創(chuàng)建高分辨率全景照片
最近Facebook剛剛在Facebookapp中上線了一個(gè)新功能,用戶可以在一個(gè)新的、能夠無(wú)限滑動(dòng)的界面里拍攝完整的360度全景照片。
由于全景照片會(huì)比一般的照片大很多,F(xiàn)acebook首先需要解決的難題就是保證信息流里出現(xiàn)了一張全景照片的時(shí)候也能讓用戶流暢地在界面中拖拉滑動(dòng);同時(shí),當(dāng)用戶停止滑動(dòng),移動(dòng)手機(jī)或者轉(zhuǎn)動(dòng)手機(jī)看這張全景照片的時(shí)候,也能立即把全分辨率的照片加載出來(lái)。在屏幕立即上呈現(xiàn)全分辨率的照片或占用很多內(nèi)存,所以當(dāng)用戶繼續(xù)滑動(dòng)頁(yè)面往下看的時(shí)候,又會(huì)給加載新的內(nèi)容帶來(lái)延遲。
面對(duì)著這些挑戰(zhàn),F(xiàn)acebook的工程師們重新設(shè)計(jì)了Facebook的底層照片處理機(jī)制,便于存儲(chǔ)信息流中“拼貼”的照片以及呈現(xiàn)照片內(nèi)容。
每張全景照片都會(huì)被轉(zhuǎn)換為一張立方映射圖,F(xiàn)acebook之前也有類(lèi)似的方法用在全景視頻中。然后這些立方映射圖會(huì)以多種不同的分辨率存儲(chǔ)下來(lái),而且每一個(gè)分辨率的版本都會(huì)分割為許多張小的512x512分辨率的圖像。
當(dāng)用戶在信息流里刷到一張全景照片的時(shí)候,程序就會(huì)計(jì)算當(dāng)前窗口渲染時(shí)需要哪種分辨率、以及用哪些小圖像來(lái)拼貼成大圖。如果當(dāng)前需要的分辨率不可用,程序就會(huì)暫時(shí)渲染一個(gè)低分辨率的樣子,同時(shí)等待網(wǎng)絡(luò)把高分辨率的內(nèi)容傳過(guò)來(lái)。
當(dāng)用戶進(jìn)入全景照片移動(dòng)手機(jī)和在屏幕上縮放觀看的時(shí)候,程序會(huì)不停地做這樣的全套計(jì)算。這樣,原來(lái)的用戶體驗(yàn)上不會(huì)有什么可感知的變化,卻實(shí)現(xiàn)了千萬(wàn)甚至上億像素的高分辨率全景圖像顯示。
用于全景照片的深度神經(jīng)網(wǎng)絡(luò)
用戶公開(kāi)上傳到Facebook的上千萬(wàn)張全景照片形成了一個(gè)強(qiáng)有力的新數(shù)據(jù)集,F(xiàn)acebook的研發(fā)人員們也就可以利用這個(gè)數(shù)據(jù)集改善自家的產(chǎn)品。這些數(shù)據(jù)可以和機(jī)器學(xué)習(xí)的方法聯(lián)合起來(lái),給用戶帶來(lái)更好的使用體驗(yàn)。
讓人覺(jué)得全景照片不夠真實(shí)的最常見(jiàn)的原因之一就是拍照的時(shí)候相機(jī)沒(méi)有端平,然后最終的照片中也沒(méi)有修復(fù)過(guò)來(lái)這些傾斜。比如下面就是照片傾斜的例子,拍照的時(shí)候相機(jī)拿歪了。呈現(xiàn)在照片里的地平線是傾斜的,完全破壞了照片的真實(shí)感。
對(duì)于傳統(tǒng)的照片,用照片編輯軟件修正這種傾斜是一件簡(jiǎn)單直接的事情,但是能夠用于全景照片的這類(lèi)工具并不多,而且修正球面上的傾斜旋轉(zhuǎn)相當(dāng)不直觀。在拍攝全景照片的過(guò)程中,相機(jī)的旋轉(zhuǎn)可以用x軸旋轉(zhuǎn)(tilt)和z軸旋轉(zhuǎn)(roll)兩個(gè)參數(shù)來(lái)描述,如下方示意圖所示。第三個(gè)方向的旋轉(zhuǎn),y軸旋轉(zhuǎn)(yaw),影響的是全景照片的起始點(diǎn),但是這個(gè)方向上的旋轉(zhuǎn)是不會(huì)造成照片內(nèi)容的傾斜的。
Facebook的研發(fā)人員們就想開(kāi)發(fā)出一種能夠自動(dòng)修正這些相機(jī)的旋轉(zhuǎn)帶來(lái)的照片傾斜旋轉(zhuǎn)問(wèn)題的方法。
為了解決這個(gè)問(wèn)題,F(xiàn)acebook的研究人員們使用了著名的深度神經(jīng)網(wǎng)絡(luò)架構(gòu)AlexNet,并對(duì)它做了一些相應(yīng)的修改。用于網(wǎng)絡(luò)訓(xùn)練的數(shù)據(jù)就是像前文中那樣的照片,它包含了360x180度的完整球面環(huán)境,然后用等距離長(zhǎng)方圓柱(equirectangular)投影轉(zhuǎn)換為了一張矩形的照片。
Facebook的研究人員們首先假設(shè)這個(gè)問(wèn)題的幾何本質(zhì)不需要顏色信息的參與,這樣訓(xùn)練數(shù)據(jù)就可以簡(jiǎn)化為256x128分辨率的黑白照片。AlexNet本來(lái)的設(shè)計(jì)是為了解決超過(guò)1000個(gè)類(lèi)別的圖像分類(lèi)問(wèn)題的,所以它最終的全連接層就有4096個(gè)輸入和1000個(gè)輸出。在Facebook的這個(gè)問(wèn)題中,他們要解決的是一個(gè)回歸問(wèn)題,所以他們修改后的網(wǎng)絡(luò)中,全連接層變成了4096個(gè)輸入和x軸旋轉(zhuǎn)、z軸旋轉(zhuǎn)兩個(gè)值的連續(xù)值輸出。
Facebook的研究人員們用帶有x軸和z軸旋轉(zhuǎn)標(biāo)簽的圖像訓(xùn)練了這個(gè)網(wǎng)絡(luò)模型。訓(xùn)練數(shù)據(jù)集中包含了五十萬(wàn)張投影轉(zhuǎn)換過(guò)的矩形照片,這些照片是研究人員們挑出來(lái),總體沒(méi)有旋轉(zhuǎn)、傾斜的;換句話說(shuō),這些照片的x軸和z軸旋轉(zhuǎn)全部都是0。
在訓(xùn)練過(guò)程中,研究人員們?nèi)斯さ赜秒S機(jī)生成的x軸和z軸旋轉(zhuǎn)值對(duì)訓(xùn)練樣本做旋轉(zhuǎn)。如下的這個(gè)損失函數(shù)就會(huì)測(cè)量出這些隨機(jī)生成的標(biāo)簽和網(wǎng)絡(luò)模型預(yù)測(cè)結(jié)果之間的差值,并把減小這個(gè)差值作為網(wǎng)絡(luò)的訓(xùn)練目標(biāo)。
為了測(cè)試訓(xùn)練效果,研究人員們用一組給定的x軸和z軸旋轉(zhuǎn)值對(duì)測(cè)試集中的圖像做合成旋轉(zhuǎn)。然后他們用訓(xùn)練過(guò)的網(wǎng)絡(luò)模型分析這些旋轉(zhuǎn)過(guò)的圖像并記錄模型給出的結(jié)果。
這些已知的旋轉(zhuǎn)值和模型給出的結(jié)果之間的差別可以歸結(jié)為兩個(gè)原因,1,模型沒(méi)能完全解決這個(gè)旋轉(zhuǎn)問(wèn)題;2,所用的數(shù)據(jù)集還有一些問(wèn)題,影響了模型的表現(xiàn)。這第二個(gè)原因也是真實(shí)存在的,F(xiàn)acebook的研究人員們假定了選用的數(shù)據(jù)集總體是平直的,但是單獨(dú)看其中的某個(gè)樣本都還是有一些固有的旋轉(zhuǎn)的。
所以,研究人員們用[-4,-2,0,2,4]度幾種x軸和z軸旋轉(zhuǎn)值中的所有組合在每一張照片都做了一遍,這就是用模型對(duì)每一張照片都過(guò)25遍。對(duì)于每一次所用的x軸和z軸旋轉(zhuǎn)值,他們都會(huì)計(jì)算對(duì)應(yīng)的旋轉(zhuǎn)量。表示這種旋轉(zhuǎn)量的最好的方法就是用3D圖像中的一個(gè)常用工具:四元數(shù)(quaternion)。然后,模型會(huì)根據(jù)圖像計(jì)算出另一個(gè)四元數(shù)旋轉(zhuǎn)量。如果模型和數(shù)據(jù)中都不存在剛才提到的兩個(gè)問(wèn)題,那么這兩個(gè)四元數(shù)就應(yīng)當(dāng)是相等的。實(shí)際中其實(shí)并不相等,所以在每一次計(jì)算中,他們都會(huì)把兩個(gè)四元數(shù)相除,計(jì)算兩者間的差值。最后,用以下公式算出每張圖像在所有組合的下的差值的平均值。
以上公式中的計(jì)算都使用了四元數(shù),因?yàn)樗鼈冇糜谟?jì)算差值和3D旋轉(zhuǎn)的均值時(shí)非常好用。但是,這樣就需要給每張圖片計(jì)算新的x軸和z軸旋轉(zhuǎn)值,因?yàn)閿?shù)據(jù)集中的圖像一開(kāi)始的時(shí)候并不是完全平直的。這種平均差值就是對(duì)每張訓(xùn)練圖像的真實(shí)方向的很好的預(yù)測(cè)。那么,研究人員們接下來(lái)簡(jiǎn)單地把四元數(shù)格式的平均差值轉(zhuǎn)換為x、y、z軸旋轉(zhuǎn)就可以更新圖像的標(biāo)簽了。
在圖像標(biāo)簽更新以后,就可以對(duì)模型做新一輪訓(xùn)練。模型一共經(jīng)歷了四輪訓(xùn)練和微調(diào)。在微調(diào)過(guò)程的最后,模型對(duì)全景照片算出的旋轉(zhuǎn)值誤差達(dá)到了0.1度的水平。
每個(gè)階段的訓(xùn)練都是從一個(gè)未經(jīng)初始化的模型開(kāi)始的,可以從下圖明顯地看到每個(gè)階段中模型都收斂到了更小的訓(xùn)練損失。在另一項(xiàng)對(duì)抗測(cè)試中,模型也表現(xiàn)出了類(lèi)似的收斂和誤差值水平。模型的收斂表現(xiàn)足以讓研究人員們得出結(jié)論:這樣的“訓(xùn)練-微調(diào)”循環(huán)確實(shí)讓模型學(xué)到了理想的旋轉(zhuǎn)方程。
如下是一些經(jīng)過(guò)旋轉(zhuǎn)的全景照片結(jié)果,而且都是訓(xùn)練集之外的照片。從幾組圖片中可以看到,模型對(duì)于不同的內(nèi)容類(lèi)別都有出色的表現(xiàn),不論有建筑這樣的人造景觀還是完全的自然風(fēng)光。
結(jié)論
Facebook的照片、視頻、直播產(chǎn)品中都已經(jīng)可以使用全景媒體。在這個(gè)過(guò)程中,具有沉浸感的內(nèi)容也會(huì)帶來(lái)一些特有的問(wèn)題。這篇文章僅僅介紹了Facebook的研究人員們解決的問(wèn)題里的幾個(gè)。隨著用戶往Facebook上傳這樣的具有沉浸感的內(nèi)容的速度越來(lái)越快,F(xiàn)acebook也對(duì)研究的前景充滿期待,他們相信類(lèi)似這樣的技術(shù)可以讓用戶用新的方式感受不同的地點(diǎn)和事件。
備注:數(shù)據(jù)僅供參考,不作為投資依據(jù)。
掃碼下載
免費(fèi)看價(jià)格