社群計算機視覺課程文件

使用 3D 渲染器生成合成資料

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

使用 3D 渲染器生成合成資料

當建立計算機生成影像用作合成訓練資料時,理想情況下我們希望影像看起來儘可能真實。基於物理的渲染器 (PBR),例如 Blender CyclesUnity,有助於建立超真實的影像,其外觀和感覺就像真實世界中的一樣。

想象一下您正在建立一張閃亮蘋果的影像。現在,當您為蘋果著色時,您希望它看起來真實,對嗎?這就是 PBR 的用武之地。

apple

好的,我們來分解一下

顏色和光線

  • 當光線照射到物體上時,它會以不同的方式與物體相互作用。PBR 試圖計算和模擬這種相互作用。
  • 想想光線是如何照射到蘋果上的。光線直接照射的部分可能更亮,而光線被阻擋或照射不到的部分可能更暗。

材質

  • 不同的材質對光的反應不同。例如,閃亮的金屬表面比柔軟的啞光織物反射更多的光線。
  • PBR 會考慮物體的材質,因此如果您正在渲染一個金屬花瓶,它會以與毛絨泰迪熊不同的方式反射光線。

紋理

  • PBR 使用紋理來新增細節,例如物體表面的凹凸、劃痕或微小凹槽。這使得事物看起來更真實,因為在現實世界中,很少有東西是完全光滑的。

真實感

  • PBR 旨在使事物看起來儘可能接近真實生活。它透過考慮光線在現實中的行為方式、不同材料與光的相互作用以及表面如何存在細微缺陷來實現這一點。

光線層

  • 想象一下您正在看一杯水。PBR 將嘗試模擬光線穿過水的方式以及它可能如何扭曲您所看到的東西。
  • 它考慮了光線如何與物體的不同部分進行多層相互作用,使渲染的影像更具真實感。

PBR 還簡化了工作流程。您可以使用一組標準化的材質和光照模型,而無需手動調整許多引數以獲得正確的外觀。這使得過程更加直觀和使用者友好。

現在,想想訓練用於計算機視覺的人工智慧模型。如果您正在教計算機識別影像中的物體,擁有多樣化的影像集以密切模仿現實世界場景將是有益的。PBR 有助於生成看起來非常真實的合成數據,可有效用於訓練計算機視覺模型。

有多種 3D 渲染引擎可用於 PBR,包括 Blender CyclesUnity。我們將重點關注 Blender,因為它是開源的,並且有大量的 Blender 相關資源。

Blender

Blender 是一款功能強大的開源 3D 計算機圖形軟體,用於建立動畫電影、視覺效果、藝術、3D 遊戲等。它包含廣泛的功能,使其成為藝術家、動畫師和開發人員的多功能工具。讓我們從渲染一張大象的合成影像的基本示例開始。

以下是基本步驟

  • 建立大象模型。下圖所示的模型是使用 Metascan 應用程式透過攝影測量建立的。攝影測量是一種將普通照片轉換為 3D 模型的方法。它就像從不同角度拍攝一堆玩具照片,然後使用這些照片製作它的計算機版本。
  • 建立背景——這是一個多步驟的過程。有關更詳細的解釋,請參見此處
  • 調整燈光和相機位置。
  • 固定大象的位置和旋轉,使其適合框架(或相機檢視)內。

以下是 Blender 中生成的大象影像

elephant image

它並非完全逼真,但可能足以訓練模型來監測大象種群。當然,為此我們需要建立大量合成大象影像資料集!您可以使用 Blender Python 環境 bpy 渲染大量影像,並隨機化大象的位置和旋轉。您還可以使用指令碼來幫助進行分割、深度、法線和姿態估計。

太棒了!我們如何開始呢?

不幸的是,Blender 的學習曲線相當陡峭。雖然步驟都不算太複雜,但如果我們可以不用費力地弄清楚所有這些,就能渲染資料集,那豈不是很好?幸運的是,有一個名為 BlenderProc 的庫,它包含了我們渲染逼真合成數據和標註所需的所有指令碼,而且它是基於 Blender 構建的。

BlenderProc

BlenderProc 管道在 BlenderProc, Denninger 等人的論文中被提出,是一個基於 Blender 構建的模組化管道。它可用於在各種用例中生成影像,包括分割、深度、法線和姿態估計。

它專門用於幫助生成逼真的影像,用於訓練卷積神經網路。
它具有以下特性,使其成為合成數據生成的一個絕佳選擇

  • 程式生成:透過程式技術實現複雜 3D 場景的自動化建立和變體。
  • 模擬:支援整合模擬,包括物理模擬,以增強真實感。
  • 大規模生成:旨在高效處理大規模場景生成,使其適用於各種應用。
  • 自動化與可擴充套件性
    • 指令碼:允許使用者透過使用 python 指令碼根據其特定需求定製 BlenderProc 並配置引數來自動化生成過程。
    • 並行處理:支援並行處理以實現可擴充套件性,從而高效生成大量場景。

您可以透過 pip 安裝 BlenderProc

pip install blenderProc

或者,您可以使用 Git 從 GitHub 克隆官方 BlenderProc 儲存庫

git clone https://github.com/DLR-RM/BlenderProc

BlenderProc 必須在 Blender Python 環境 (bpy) 中執行,因為這是訪問 Blender API 的唯一方法。

blenderproc run <your_python_script>

您可以檢視此 Notebook,在 Google Colab 中試用 BlenderProc,演示此處提供的基本示例。以下是使用基本示例渲染的一些影像

colors normals depth

Blender 資源

以下影片解釋瞭如何在 Blender 中渲染 3D 合成數據集:

以下影片解釋瞭如何使用攝影測量建立 3D 物件:

論文/部落格

BlenderProc 資源

以下影片提供了 BlenderProc 管道的概述:

論文

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.