python 3d重建_3D点云重建原理及Pytorch实现
3D點(diǎn)云重建原理及Pytorch實(shí)現(xiàn)
Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction
一種Pytorch實(shí)現(xiàn)方法:學(xué)習(xí)高效的點(diǎn)云生成方法用于稠密三維物體重建
一.論文概要
傳統(tǒng)的三維對象生成建模方法是利用三維卷積運(yùn)算的深度網(wǎng)絡(luò)來訓(xùn)練3D預(yù)測,這與經(jīng)典的二維方法是直接類似的。然而,這些方法在試圖預(yù)測三維形狀時(shí)計(jì)算上是浪費(fèi)的,因?yàn)橹挥斜砻嫔系男畔⒉攀秦S富的。本文提出了一種新的三維生成模型框架,以有效地生成密集點(diǎn)云形式的目標(biāo)形狀。使用二維卷積運(yùn)算從多個(gè)角度預(yù)測三維結(jié)構(gòu),并將幾何推理與二維投影優(yōu)化相結(jié)合。引入偽渲染器(pseudo renderer)這一可微模塊來近似真實(shí)的渲染操作,以合成新的深度圖進(jìn)行優(yōu)化。對單圖像三維物體重建任務(wù)的實(shí)驗(yàn)結(jié)果表明,在形狀相似性和預(yù)測密度方面,優(yōu)于最新的方法。
神經(jīng)網(wǎng)絡(luò)pipeline
二.貢獻(xiàn)總結(jié)如下:
?主張具有二維卷積運(yùn)算的深網(wǎng)絡(luò)能夠生成密集的點(diǎn)云,從而在未加密的三維空間中塑造三維物體的表面。
?引入一個(gè)偽渲染管道作為真實(shí)渲染的可微近似。進(jìn)一步利用偽渲染深度圖像進(jìn)行二維投影優(yōu)化,以學(xué)習(xí)生成密集的三維形狀。
?展示了的方法在單圖像三維重建問題上的有效性,這顯著優(yōu)于最新方法。
三.主要原理
1. Pseudo-rendering概念
前向繪制是計(jì)算機(jī)圖形學(xué)中一個(gè)古老而成熟的概念。真實(shí)渲染通常是通過在每個(gè)像素位置使用Z緩沖區(qū)來保持相機(jī)的有效可見值(RGB或深度)來實(shí)現(xiàn)的。雖然這是可并行的,可以在gpu上有效地運(yùn)行,但通常是不可微的,不能直接利用和納入深度學(xué)習(xí)框架。在這里,給出了這種操作的可微逼近的一個(gè)解。
2. 實(shí)驗(yàn)
1)進(jìn)行二維優(yōu)化。
從新的角度論證了第二階段網(wǎng)絡(luò)優(yōu)化訓(xùn)練的必要性。比較了表3中聯(lián)合2D投影優(yōu)化步驟前后網(wǎng)絡(luò)的性能??吹?#xff0c;雖然只在固定視點(diǎn)上進(jìn)行優(yōu)化會(huì)導(dǎo)致更多生成的點(diǎn)更接近真值曲面,但也會(huì)在形狀精度損失中創(chuàng)建大量噪聲點(diǎn)。圖7展示了進(jìn)行優(yōu)化消除大部分噪聲點(diǎn)的效果,說明了這種額外步驟的必要性。
變形過渡是平滑的,并且具有合理的插值形狀,這表明結(jié)構(gòu)生成可以從編碼潛在向量的凸組合中生成有意義的三維預(yù)測。結(jié)構(gòu)生成還能夠根據(jù)潛在空間中的算法結(jié)果生成合理的新形狀-從圖6觀察到桌子高度/形狀以及椅子扶手/靠背的語義特征替換。結(jié)果表明,在潛在向量中編碼的高層語義信息是可操作的,可以通過結(jié)構(gòu)生成對生成的稠密點(diǎn)云進(jìn)行解析。
2)生成表征分析
通過觀察潛在空間中操作的三維預(yù)測來分析學(xué)習(xí)到的生成表示。以前的研究已經(jīng)證明,深度生成網(wǎng)絡(luò)可以通過在潛在空間中執(zhí)行線性操作來生成有意義的像素/體素預(yù)測(Radford、Metz和Chintala 2015;Dosovitskiy,To bias Spring enberg,and Brox2015;Wu etal.2016);這里,探索在未加密空間中對稠密點(diǎn)云進(jìn)行這種操作的可能性。在圖5中顯示了由嵌入在潛在空間中的嵌入向量生成的密集形狀。
3)主要實(shí)驗(yàn)數(shù)據(jù)
表2中列出了量化結(jié)果,其中按類別顯示數(shù)據(jù)。本文方法在兩個(gè)指標(biāo)上都達(dá)到了較低的總體誤差
四. 代碼實(shí)施步驟
訓(xùn)練/評估網(wǎng)絡(luò)
必要條件
此代碼是用Python3(Python3)開發(fā)的。需要Pythorch 0.4+。
數(shù)據(jù)集
(在TF的repo中提供)可以通過運(yùn)行命令下載數(shù)據(jù)集(8.8GB)
此文件包括:
訓(xùn)練/測試分割文件(從透視變換網(wǎng)絡(luò))
輸入RGB圖像(從透視變換網(wǎng)絡(luò))
用于訓(xùn)練的預(yù)渲染深度圖像
測試分離的地面真值點(diǎn)云(密度為100K點(diǎn))
下載后,在主目錄下運(yùn)行
run tar -zxf s4lkm5ej7sh4px72vesr17b1gxam4hgy.gz
文件將被提取到data目錄。(使用此數(shù)據(jù)集包,可引用相關(guān)論文。)
運(yùn)行代碼
以下腳本提供了運(yùn)行代碼的示例。
網(wǎng)絡(luò)預(yù)訓(xùn)練:scripts/train-stg1.sh
進(jìn)行二維優(yōu)化微調(diào):scripts/train-stg2.sh
在測試集上求值:scripts/evaluate.sh
計(jì)算錯(cuò)誤度量:scripts/evaluate_dist.sh
檢查點(diǎn)存儲(chǔ)在models/${experiments}中,摘要存儲(chǔ)在runs/${experiments}中,計(jì)算的點(diǎn)云存儲(chǔ)在results{GROUP}中。執(zhí)行python3 train-stg1.py--help可以找到可選參數(shù)列表。
繪制真實(shí)深度圖像
(在TF的repo中提供)提供了用于呈現(xiàn)深度圖像的代碼以供監(jiān)督。
先決條件
此代碼要求以下內(nèi)容:
Blender作為渲染引擎。此代碼是使用Blender 2.78開發(fā)的。安裝后,請確保該命令blender是可調(diào)用的(用于which blender檢查安裝)。
用于將
數(shù)據(jù)集
原始ShapeNet數(shù)據(jù)集可以在這里下載。此呈現(xiàn)代碼是為使用ShapeNetCore v2開發(fā)的。(提供的深度圖像是從ShapeNetCore v1渲染的。)
運(yùn)行代碼
在渲染中,運(yùn)行/運(yùn)行.sh03001627 8為固定和任意視點(diǎn)渲染深度圖像,并將其轉(zhuǎn)換為.mat文件。這將轉(zhuǎn)換ShapeNet椅子類別(03001627)中具有8個(gè)固定視點(diǎn)的所有對象。呈現(xiàn)的文件將存儲(chǔ)在輸出目錄中。
評估CAD模型密集點(diǎn)云的生成
(在TF的repo中提供)還提供了代碼來將CAD模型的頂點(diǎn)加密到指定的數(shù)字。此代碼可以獨(dú)立運(yùn)行;只需要ShapeNet數(shù)據(jù)集。重復(fù)將頂點(diǎn)添加到三角形網(wǎng)格最長邊的中心,然后重新對網(wǎng)格進(jìn)行三角剖分的過程。這將創(chuàng)建(通常)均勻致密的CAD模型。
運(yùn)行代碼
在致密下,運(yùn)行
run ./run.sh 03001627
進(jìn)行加密,加密的CAD模型將存儲(chǔ)在output目錄中。
總結(jié)
以上是生活随笔為你收集整理的python 3d重建_3D点云重建原理及Pytorch实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天天基金定期宝和活期宝有什么区别?表现在
- 下一篇: 个人日常理财知识,有哪些实用的理财小常识