close

用深度學習拯救手抖星人!Facebook詳解全景照片修復技巧


量子位 報道 | 公眾號 QbitAI

拍全景照片,重要的是手要穩,手要穩,手要穩……或者支個三角架。







上面視頻中這位小姐姐的水平,可以說是非常贊瞭,量子位就認識一些貨真價實、經常手抖的人類,經常拍成這樣:





心疼這張桌子一秒……





最近,Facebook為瞭拯救手殘星人、讓用戶們愉快地發更多的全景照片,開始研究用深度學習來調整360度全景照。



Facebook官方博客今天詳細介紹瞭這項技術,量子位編譯如下:



自去年Facebook發佈360度照片功能以來,用戶已經上傳瞭超過7000萬張360度照片。



Facebook提供瞭多種方式去拍攝360度照片和視頻,讓用戶可以與社區分享自己的沉浸式體驗。如果你有專門的360度相機,例如理光Tehta S或Giroptic iO,那麼可以將相機中的內容直接上傳至Facebook。目前,高端Android手機和iPhone也提供瞭全景相機功能,可以用於拍攝360度照片。



過去一年,Facebook開發並部署瞭多種技術,用於優化用戶制作並分享360度內容的方式,例如360度拍攝和360度視頻防抖,並重新開發瞭保存高清媒體內容的方式。



最近,我們開始探索,利用深度神經網絡自動調整360度照片的方向,給用戶的手機帶來更多真實的沉浸式體驗。



制作高分辨率360度照片

近期我們宣佈,在Facebook應用中直接加入一項新功能,通過無限制的創新用戶界面,幫助用戶拍攝完整的360度場景。文章開頭的視頻展示瞭Facebook應用的360度拍攝功能。



相對於傳統的照片,360度照片的文件體積往往更大。



因此我們面臨的挑戰之一在於,在消息流加入360度照片之後,如何幫助人們更快地瀏覽這些內容,同時確保當用戶停下來欣賞某張360度照片時,提供完整分辨率的版本,並支持旋轉、拖動和縮放等功能。



如果直接提供完整分辨率的版本,那麼會導致當用戶滾動消息流時其他內容加載緩慢,並占用大量內存去處理照片。



面對這些挑戰,我們重新設計瞭Facebook的照片基礎設施,實現照片內容的“平鋪”保存方式和展現方式。





每張360度照片都被轉換為立方體圖,這類似於我們早期對360度視頻的做法。這些立方體圖隨後被保存為多種分辨率,而每種分辨率都被進一步分拆為獨立的、更小的512x512圖片。



當360度照片被查看時,我們判斷在當前窗口中應當渲染什麼樣的分辨率和什麼樣的平鋪效果。如果當前分辨率不可用,我們就會臨時渲染較低分辨率的版本,同時等待網絡傳輸高分辨率版本。



隨著用戶在360度照片中的拖動和縮放,我們會重新進行這樣的計算。這種調整讓我們可以展示包含數億像素的照片,而不會對性能產生太大影響。



用於360度照片的深度神經網絡

上傳至Facebook平臺的數千萬公開360度照片提供瞭強大的新數據集,協助我們優化產品。360度數據本身可以與機器學習方法配合使用,給用戶帶來更好的體驗。



導致360度照片偏離實景的最基本問題之一在於,在拍攝360度照片時,如果相機不夠水平,那麼所產生照片的旋轉就會不正確。



可以看看下面的這個例子:



在拍攝這張照片時,手持相機的方式有問題。這導致瞭水平線的傾斜,照片的失真。



對於傳統照片,用編輯軟件可以很容易修正這種照片旋轉的問題。然而,同樣的工具並不適用於360度照片,在球面上修正旋轉問題看起來也很不直觀。

台中月子中心餐點

360度照片的旋轉問題由兩個參數來決定,分別為傾斜和滾動,如下圖所示:





第三個軸,即相機旋角,主要通過改變最初的相機俯仰角來影響照片,但其本身並不會造成場景的旋轉。我們希望開發一種技術,自動修復由這些運動引發的旋轉問題。



我們嘗試利用深度神經網絡(DNN)架構AlexNet,並在此基礎上進行一些改動,來解決這個問題。



前面那張拍殘瞭的圖是我們訓練數據集中的一張范例照片,包含完整的球形環境(360度x180度),並使用瞭等矩柱狀投影。



我們假定,問題的幾何特性不需要用到顏色信息,因此訓練數據集中都是黑白圖片,分辨率為256x128。



AlexNet最初被用於解決包含1000多個類的分類問題,最終完全連接的層包含4096個輸入和1000個輸出。而我們將問題定義為回歸問題,因此最終層有4096個輸入,以及兩個連續值輸出,分別為傾斜和滾動。





我們用帶有傾斜值和滾動值的帶標簽旋轉圖片去訓練DNN。我們的訓練數據集包含瞭50萬張等矩柱狀投影圖片。



我們假定這些圖片平均來看是沒有旋轉的,換句話說傾斜值和滾動值為0。在訓練過程中,我們用隨機生成的傾斜值和滾動值去人工旋轉每個訓練樣圖。



如下方公式所示,損失函數衡量瞭隨機生成的標簽值與DNN估計的結果值之間的差距:





為瞭測試訓練結果,我們利用一組已知的傾斜值和滾動值來旋轉數據集中的每張照片。隨後,我們運行受過訓練的DNN,並記錄結果值。

台中五星級月子中心

已知值和計算結果之間的差異可以歸結為兩種因素;1)DNN並沒有完全解決照片旋轉問題,2)數據集照片一開始就不夠豎直。



第二個問題的出現可能是由於,我們假定數據集中的照片平均來看是豎直的,但對於特定的某張照片,情況可能並非如此。



對於每張照片,我們掃描一組傾斜值和滾動值[–4deg, –2deg, 0deg, 2deg, 4deg]。



這意味著對於每張照片,DNN需要運行25次。台中市月子中心利用每次運行中得到的傾斜值和滾動值,我們計算此前應用至照片的旋轉。



表達這種旋轉的最有效方式是使用3D圖像中常用的一種工具:四元數。我們隨後計算另一組四元數,以表達該網絡計算出的旋轉。如果網絡和數據不存在上述的兩種問題,那麼四元數將會是一致的。



然而在實際情況下,情況並非如此,因此對於每次運行,我們都會通過相除來計算兩者之間的不同。最後,用這裡展示的技術去計算差異的平均值。





以上計算方法利用瞭四元數,因為這是計算3D旋轉中差異和平均值的有效方法。

台中產後護理之家介紹

不過,我們現在需要給每張照片貼上新的傾斜值和滾動值,因為數據集照片最開始可能並不是準確豎直的。這種平均差異可以很好地估計每張訓練照片的真實方向。



因此在四元數和相機旋角、傾斜和滾動之間我們可以采用簡單的轉換技術,從平均值得到更準確的標簽值。



在數據集重新打標簽之後,我們展開瞭新一輪訓練。我們反復進行4輪的訓練和優化。到優化過程的最後,我們的DNN對360度旋轉的計算平均可以精確到0.1度。如下圖所示:



台中坐月子中心價格表

每個訓練階段從未初始化的模型開始,我們看到每個階段都收斂到較小的損失。利用留出測試集也可以得到類似的收斂和錯誤值。



這樣的收斂行為令我們相信,訓練/優化循環正在學習我們試圖實現的旋轉功能。



以下是對某些旋轉後360度照片取得的結果。這些並不是訓練集的一部分。



△修正前

△修正後

△修正前

△修正後

△修正前

△修正後

每一對照片中的前一張是原始照片,第二章是DNN修正過的照片。請註意,這個DNN對於不同類型的內容都有很好的效果。照片中的內容可以是人造物體,例如建築物,也可以是自然風景。



我們已經在Facebook的照片、視頻和直播產品中部署瞭360度媒體技術。在這一過程中,挑戰也越來越明顯。



這篇文章介紹瞭我們過去一年解決的挑戰之一。隨著Facebook平臺上沉浸式媒體內容上傳量越來越大,我們將關註這些研究帶來什麼樣的前景,以及這些技術如何幫助人們以全新方式體驗活動和地點。



原文地址:https://code.facebook.com/posts/129055711052260/optimizing-360-photos-at-scale/



— 完 —



加入社群



量子位AI社群8群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot2入群;



此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。



進群請加小助手微信號qbitbot2,並務必備註相應群的關鍵詞~通過審核後我們將邀請進群。(專業群審核較嚴,敬請諒解)


用深度學習拯救手抖星人!Facebook詳解全景照片修復技巧

http://p0.ifengimg.com/pmop/2017/09/01/inter453_5914973_0_151403.jpg

台灣電動床工廠 電動床

台灣電動床工廠 電動床

AUGI SPORTS|重機車靴|重機車靴推薦|重機專用車靴|重機防摔鞋|重機防摔鞋推薦|重機防摔鞋

AUGI SPORTS|augisports|racing boots|urban boots|motorcycle boots

arrow
arrow

    tcj56xbn66 發表在 痞客邦 留言(0) 人氣()