cv.cm

AI · AI 圖片

深度圖是什麼?AI 如何從一張照片產生深度圖?

閱讀約 6 分鐘

簡答

深度圖是一張灰階影像,每個像素的亮度代表與鏡頭的距離,而不是顏色。Depth Anything 等 AI 模型能憑藉形狀、透視和遮擋關係,從單張照片估計出深度圖。多數模型輸出的是相對深度(哪些部分比較近),而不是真實的公尺數,但這已足以用於 3D 視差、背景模糊和 ControlNet。

開啟深度圖產生器

一張圖看懂深度圖

拍一張人站在大樓前的照片。這張照片的深度圖與原圖寬高相同,但每個像素只存一個數字:該點與鏡頭的距離。顯示成影像時,人是一種灰階、大樓是另一種,天空則是最極端的灰階。

哪種灰階代表近並沒有統一規則。請確認你所用的每個工具採用什麼慣例:

慣例近處的物體看起來遠處的物體看起來常見於
反深度(類似視差)亮暗大多數 AI 深度估計器、ControlNet 深度圖
距離(z 深度)暗亮3D 算圖通道、霧效、部分遊戲引擎
公制深度數字小(公尺)數字大機器人、AR、光達(LiDAR)、16 位元或浮點數檔案
色彩對應(Turbo、Magma)色盤的一端色盤的另一端僅供視覺預覽,不適合進一步處理

如果 3D 效果看起來像反了過來,背景朝你彈出,代表深度圖採用了相反的慣例。把影像反相(白變黑)通常就能解決。

AI 如何從單張照片估計深度

雙鏡頭手機或光達感測器能量測深度,但一張普通照片辦不到:同一張畫面可能是近距離的小玩具車,也可能是遠處的真車。單眼深度估計(monocular depth estimation)用的方法和人一樣,靠學到的線索來判斷。

  • 透視:道路、鐵軌等平行線在遠方交會。
  • 已知尺寸:人臉、門或汽車有典型大小,所以它在影像中的大小暗示了距離。
  • 遮擋:遮住另一個物體的物體,位於前方。
  • 紋理密度與霧氣:越遠,草地和磁磚看起來越細緻,顏色也越淡。
  • 明暗與對焦模糊,它們提供了表面形狀的線索。

深度網路是用數百萬張已知或估計答案的影像訓練出來的。截至撰文時許多工具採用的 Depth Anything V2,先從精確的合成(算圖)影像學習,再用一個更大的教師模型標註的海量真實照片繼續學習。作者選擇合成資料的部分原因是,真實的深度感測器無法正確量測透明與反光表面,因此真實標籤恰好在照片最難處理的地方雜訊最多。

模型處理的是縮放後的影像副本(Depth Anything V2 訓練時短邊為 518 像素),為每個像素輸出一個值。工具再把它放大回照片尺寸,並對應到 8 位元影像的 0 到 255。

相對深度與公制深度

大多數通用深度模型預測的是相對深度。以 Depth Anything V2 的基礎模型為例,它預測的是仿射不變(affine-invariant)的反深度。白話來說,順序和比例是有意義的,但尺度和偏移量未知。深度圖能告訴你人在大樓前面,卻不能告訴你人離鏡頭 3.2 公尺。

這種設計來自於用許多不同相機與單位的資料集來訓練。MiDaS 的研究顯示,採用忽略尺度的損失函數,可以讓模型同時從所有資料集學習,使它在網路上各式各樣的照片上穩健得多。

公制深度模型是針對公尺單位微調的版本,通常只針對一類場景(室內房間或街道行車)。測量或機器人應用請用它。創作用途則適合相對深度,因為泛化能力更好,而且特效只需要正確的遠近順序。

深度圖能做什麼

用途深度如何使用訣竅
2.5D 視差影片虛擬攝影機移動時,近處像素比遠處移動得多運鏡幅度要小,才能隱藏被拉伸的邊緣
人像模式般的模糊與對焦平面的距離越遠,模糊越強邊緣要羽化;頭髮常常和背景一起被模糊
ControlNet 深度控制深度圖引導新生成圖片的版面配置使用近亮遠暗的深度圖;降低控制權重可獲得更多自由度
3D 與 AR把像素推出去形成網格或點雲相對深度提供形狀,而不是真實尺寸
霧效、重新打光、合成深度可作為依距離套用特效的遮罩工具若提供 16 位元匯出,就用它

例如,cv.cm 的深度圖工具能在瀏覽器中把照片轉成灰階深度圖(近處為亮)或彩色預覽;cv.cm 的照片轉影片工具則用同類的深度圖,讓虛擬攝影機穿越一張靜態照片。第二種情況是攝影機在動、主體不動:那是視差效果,不是讓人物動起來的模型。

ControlNet 證明,擴散模型可以用邊緣、姿勢、分割和深度等條件來引導。深度條件能保留構圖(前景與背景的位置),同時讓提示詞改變風格、光線或材質。

AI 深度估計哪裡會出錯

  • 玻璃、鏡子和水面:模型可能給出倒影的深度,或玻璃後方物體的深度。
  • 天空和極遠處:全部落在遠端,所以那裡的視差是平的。
  • 細小結構:頭髮、圍欄、樹枝和電線,在模型的工作解析度下會與背景糊在一起。
  • 畫作、海報和螢幕:一張圖片的照片可能被賦予虛假的 3D 深度,因為其中的內容看起來像一個場景。
  • 特殊視角:垂直俯拍的空拍照、微距照和魚眼影像在訓練資料中比較少見。
  • 遠近交界的邊緣:深度圖在那裡是平滑的,所以視差效果會把像素拉成一條橡皮筋般的帶狀。

如何得到更好的深度圖

  1. 選擇前景、中景、背景分明的照片。平坦的場景,例如臉部佔滿畫面、背後是一面牆,能提供的深度很少。
  2. 避開你在意的區域中強烈的反光和大片窗戶。
  3. 確認下一個工具讀取的是相同慣例。如果近處該亮卻是暗的,就把深度圖反相。
  4. 深度圖要與照片保持相同的尺寸與裁切。裁切或縮放方式不同的深度圖,會對不上。
  5. 做視差之前,稍微模糊或擴張深度圖,可減少邊緣撕裂,並讓運鏡保持輕柔。

常見問題

深度圖和法線貼圖一樣嗎?

不一樣。深度圖儲存每個像素的距離;法線貼圖則以 RGB 顏色儲存每個表面所朝的方向,用於打光。你可以從深度圖大致推導出法線,但反過來則會失去尺度。

AI 能對任何照片產生深度圖嗎?

可以,單眼模型一定會產生深度圖,但品質取決於場景。遠近物體層次分明時效果好;玻璃、鏡子、平坦牆面和圖片的照片則不行。

深度圖和視差圖有什麼不同?

視差是同一個點在兩張立體影像之間的位移量,近處物體的視差較大,所以行為類似反深度。許多 AI 模型輸出的是類似視差的反深度,這就是近處物體看起來較亮的原因。

為什麼我的視差影片在主體邊緣會被拉伸?

虛擬攝影機移動時,會露出原照片中被主體擋住的背景。那裡沒有任何像素,算圖器只好拉伸相鄰的像素。縮小運鏡幅度並柔化深度圖邊緣,可以減輕這個現象。

iPhone 的人像模式有用到深度圖嗎?

有。配有雙鏡頭或深度感測器的手機會記錄深度圖或視差圖,並用它來模糊背景;許多機型還會用機器學習來精修。深度資訊可以和影像一起存在照片檔案裡。

全部 AI 教學