0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何輸入3D網(wǎng)格物體(原始三角形和頂點(diǎn)),得到分類(lèi)概率的輸出

電子工程師 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-06-24 09:58 ? 次閱讀

2017 年 3 月,當(dāng)時(shí)我的老板說(shuō)自動(dòng)識(shí)別 3D 物體幾乎是不可能的,但大家一致反對(duì)。

因此,今天我要解決的問(wèn)題是:如何輸入 3D 網(wǎng)格物體(原始三角形和頂點(diǎn)),得到分類(lèi)概率的輸出。

我找到了如下幾種解決方案:

對(duì)物體進(jìn)行縮放并將其分割成體素。將體素給到神經(jīng)網(wǎng)絡(luò)中。

計(jì)算大量描述符,將其放入分類(lèi)器。

從多側(cè)進(jìn)行物體投射,嘗試用單獨(dú)的分類(lèi)器進(jìn)行識(shí)別,然后將其放到元分類(lèi)器中。

在這里我想詳細(xì)講述一下一種相對(duì)簡(jiǎn)單有效的方法,即 DeepPano 方法。

▌數(shù)據(jù)準(zhǔn)備

如今,圖像數(shù)據(jù)集包含大量樣本。但就 3D 模型數(shù)據(jù)集而言,并非如此。3D模型數(shù)據(jù)集中沒(méi)有成千上萬(wàn)的圖像,因此 3D 模型識(shí)別沒(méi)有得到深入研究,3D模型數(shù)據(jù)集也不均衡。大多數(shù)數(shù)據(jù)集包含有未進(jìn)行方向?qū)R的物體。

ModelNet10 是一個(gè)相對(duì)清晰的 3D 物體數(shù)據(jù)集。3D 物體在數(shù)據(jù)集中被存儲(chǔ)為包含點(diǎn)線面的.off文件。 .off文件格式不支持顯示布料、紋理以及其他材質(zhì)。

這里是物體種類(lèi)與樣本數(shù)量:

樣本總數(shù)約為 5000。當(dāng)然這個(gè)數(shù)據(jù)集也非常不均衡。

首先要做的是選擇分類(lèi)器類(lèi)型。由于如圖像、語(yǔ)音等重要數(shù)據(jù)的技術(shù)解決方案都是基于神經(jīng)網(wǎng)絡(luò)(或在 Kaggle 比賽中經(jīng)常使用的奇特組件),因此訓(xùn)練神經(jīng)網(wǎng)絡(luò)是合乎邏輯的。神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)集的均衡性很敏感。所以第二步需要做的是使數(shù)據(jù)集更均衡。

我決定使用從 3dWarehouse 中得到的模型獲取更多數(shù)據(jù)并創(chuàng)建擴(kuò)展數(shù)據(jù)集。這些模型是以.skp文件格式存儲(chǔ)的,因此必須進(jìn)行轉(zhuǎn)換。我使用SketchUp C Api創(chuàng)建了.skp - >.off轉(zhuǎn)換器來(lái)進(jìn)行轉(zhuǎn)換。

下一步是數(shù)據(jù)清理,完全相同的圖像已被刪除??梢赃@樣分配:

這樣數(shù)據(jù)集看起來(lái)就比較均衡了。除馬桶外,幾乎每個(gè)物體類(lèi)別都包含有近 1000 個(gè)樣本。其他物體類(lèi)型之間的不均衡可通過(guò)分類(lèi)權(quán)重進(jìn)行修正。

▌數(shù)據(jù)預(yù)處理

在之前的步驟中,我們已經(jīng)做了幾件重要的事情。

闡述問(wèn)題。

下載我們將要使用的基本數(shù)據(jù)集(ModelNet10)。

從最初的 10 類(lèi)物體中選出了7類(lèi)。

通過(guò)創(chuàng)建.skp - > .off 轉(zhuǎn)換器來(lái)轉(zhuǎn)換 3d warehouse.中的模型,數(shù)據(jù)集變得更加均衡。

現(xiàn)在開(kāi)始深入了解數(shù)據(jù)預(yù)處理。

在預(yù)處理過(guò)程中,數(shù)據(jù)預(yù)處理的最終結(jié)果是要用一種新的圖像來(lái)表示 3D 網(wǎng)格物體。我們將使用圓柱投影來(lái)創(chuàng)建圖像。

3D網(wǎng)格物體

此物體的轉(zhuǎn)換結(jié)果

首先,我們需要讀入 3D 網(wǎng)格物體并進(jìn)行存儲(chǔ)。這可以通過(guò)功能強(qiáng)大的 trimesh 庫(kù)來(lái)完成。它不僅提供讀/寫(xiě)功能,而且有大量其他有用的功能,如網(wǎng)格變換,光線追蹤等。

第二步是計(jì)算圓柱投影。圓柱投影是什么呢?假設(shè)一個(gè)立方體位于 XoY 平面的中心,且原點(diǎn)有一條垂直軸。

注意:如果物體的主軸不垂直,則需要在進(jìn)行物體識(shí)別前應(yīng)用方向?qū)R算法。這是一個(gè)完全不同的領(lǐng)域,因此在這里不對(duì)此主題進(jìn)行探討。

立方體和主軸

現(xiàn)在假設(shè)有一個(gè)包裹立方體的最小圓柱體。

現(xiàn)在將圓柱體的側(cè)面切割成 M×N 的網(wǎng)格。

現(xiàn)在將每個(gè)網(wǎng)格節(jié)點(diǎn)垂直投影到主軸上并獲取一組投影點(diǎn)。投影點(diǎn)集合由P表示。投影線集合由 S 表示。

綠色是主軸,紅色是網(wǎng)格,黃色是幾何投影線。

現(xiàn)在將 S 集合中的每段與網(wǎng)格體,即該立方體相交。你將從每條射線獲得一個(gè)交點(diǎn)。將該點(diǎn)分配給相應(yīng)的網(wǎng)格節(jié)點(diǎn)。

其實(shí)這是一個(gè)特例。一般情況下,S 中的一個(gè)投影線可以有多個(gè)交點(diǎn),或者根本沒(méi)有交點(diǎn)。下面就是一個(gè)例子。

因此,通常這個(gè)過(guò)程的結(jié)果是在每個(gè)單元中都有一個(gè) M×N 矩陣,其中可能具有交點(diǎn)數(shù)組,也可能是空的。對(duì)于立方體,每個(gè)單元格將包含具有單個(gè)元素的數(shù)組。

下一步是從每個(gè)單元格的交點(diǎn)中選取離對(duì)應(yīng)的 M 中的點(diǎn)距離最遠(yuǎn)的點(diǎn),并將它們之間的距離寫(xiě)入 M×N 矩陣 R。矩陣(或圖像)R 稱(chēng)為全景圖。

我們?yōu)槭裁匆x取最遠(yuǎn)的點(diǎn)?最遠(yuǎn)的點(diǎn)通常集中于物體的外表面。我們將其用全景圖表示,可用于識(shí)別模塊。當(dāng)然,有人可能會(huì)說(shuō):“圓環(huán)和高度相同的圓柱體會(huì)呈現(xiàn)出完全相同的全景圖”或者“中心有一個(gè)球形孔的立方體和沒(méi)有孔的立方體會(huì)呈現(xiàn)出完全相同的全景圖”,這是正確的。

以全景圖來(lái)呈現(xiàn) 3D 物體并不完美,但如果是用體素來(lái)呈現(xiàn)則沒(méi)有這樣的缺點(diǎn)。幸運(yùn)的是,像椅子、床、汽車(chē)或飛機(jī)這些真實(shí)存在的物體由于其復(fù)雜性,很少有相同的全景圖。

最后一步是通過(guò)將單元格的值縮放到[0,1]區(qū)間,對(duì)R矩陣進(jìn)行歸一化。如果單元格沒(méi)有交點(diǎn),則該單元格的值為零。

現(xiàn)在我們可以將矩陣 R 視為灰度圖像。這里是所描述過(guò)程的 Python 代碼和全景圖計(jì)算的一個(gè)例子。

混凝土床(左上)、椅子(右上)和馬桶(中)的全景圖。

我們總結(jié)一下到目前為止已經(jīng)完成的步驟。

現(xiàn)在我們已經(jīng)將 3D 網(wǎng)格物體表示為灰度圖像。

3D 物體必須正確對(duì)齊。如果沒(méi)有正確對(duì)齊,那么我們首先需要使用方向?qū)R算法。

兩個(gè)不同的物體有可能具有相同的全景圖,但這種可能性很小。

現(xiàn)在我們準(zhǔn)備創(chuàng)建卷積神經(jīng)網(wǎng)絡(luò)并解決識(shí)別問(wèn)題。

▌開(kāi)始識(shí)別!

我們?cè)谏弦徊街凶隽艘患浅V匾氖虑?,即找到一種合適的方法將 3D 物體轉(zhuǎn)換成圖像,我們可以將其提供給神經(jīng)網(wǎng)絡(luò)(NN)。

步驟如下所示:

我們之前已經(jīng)完成了第 1 步,所以現(xiàn)在我們開(kāi)始第 2 步和第 3 步。

讓我們從模型創(chuàng)建開(kāi)始。

你可以在架構(gòu)中看到 RWMP 層。根據(jù)DeepPano論文,RWMP層的作用在于, 在 3D 物體圍繞主軸旋轉(zhuǎn)的情況下,保持識(shí)別精度不變。從技術(shù)上講,RWMP 只是一個(gè)行式的 MaxPooling。

模型準(zhǔn)備就緒并編譯完成后,讀取數(shù)據(jù),然后將其刷新,并通過(guò)圖像尺寸調(diào)節(jié)創(chuàng)建 ImageDataGenerator。請(qǐng)注意,數(shù)據(jù)預(yù)先按照 70:15:15 的比例進(jìn)行了訓(xùn)練、驗(yàn)證和測(cè)試。由于圖像是合成的,并且代表了 3D 物體,因此數(shù)據(jù)無(wú)法進(jìn)行擴(kuò)增,因?yàn)椋?/p>

由于圖像是灰度的,所以不能進(jìn)行顏色增強(qiáng)。

由于 RWMP 的存在,不能進(jìn)行水平翻轉(zhuǎn)。

垂直翻轉(zhuǎn)意味著將物體顛倒。

由于圖像的合成性質(zhì),無(wú)法使用ZCA白化。

隨機(jī)旋轉(zhuǎn)會(huì)損失寶貴的物體邊角信息,我無(wú)法確定這會(huì)對(duì)3D物體轉(zhuǎn)換產(chǎn)生什么影響。

所以我想不出任何可以應(yīng)用在這里的數(shù)據(jù)擴(kuò)增方法。

現(xiàn)在開(kāi)始訓(xùn)練模型。

讓我們看看結(jié)果。

訓(xùn)練絕對(duì)準(zhǔn)確度和驗(yàn)證絕對(duì)準(zhǔn)確度

正如你所看到的,該模型驗(yàn)證的準(zhǔn)確度達(dá)到了92%,訓(xùn)練的準(zhǔn)確度達(dá)到了95%,所以沒(méi)有過(guò)度擬合。該模型數(shù)據(jù)集測(cè)試的整體準(zhǔn)確度度為 0.895。

分類(lèi)報(bào)告:

測(cè)試數(shù)據(jù)集的混淆矩陣

我們也可以自行排列這個(gè)模型。

來(lái)自上面的代碼片段

結(jié)果看起來(lái)不錯(cuò),一切都進(jìn)行得都很順利,只是有些桌子被錯(cuò)誤地識(shí)別為梳妝臺(tái)了。我不確定為什么會(huì)發(fā)生這種情況。這可能是未來(lái)需要改進(jìn)的步驟之一。

讓我們列出可能需要改進(jìn)的地方。

識(shí)別時(shí)要考慮材料、紋理和幾何尺寸等因素,否則會(huì)形成致無(wú)序模型。

提高數(shù)據(jù)集的均衡性或至少使用分類(lèi)權(quán)重。生成模型(例如VAE)可使數(shù)據(jù)集更均衡。

添加更多的物體類(lèi)別。

基于全景圖和不同的表示形式創(chuàng)建元模型,例如體素。這可能很昂貴。

目前為止,所有步驟介紹完畢。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:一文教會(huì)你三維網(wǎng)格物體識(shí)別

文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    三角形和星形電機(jī)參數(shù)怎么確定?

    請(qǐng)教一下 三角形和星形電機(jī)怎么確定,通過(guò)測(cè)量 ------- 線電阻=2*相電阻 星形 線電阻=2/3*相電阻 三角形 這個(gè)說(shuō)法對(duì)嗎
    發(fā)表于 03-07 06:57

    三角形網(wǎng)格球面參數(shù)化研究

    三角形網(wǎng)格映射到單位球面上,接著利用球面均值迭代調(diào)整調(diào)和能量,使其向最小化方法演化,最后通過(guò)坐標(biāo)轉(zhuǎn)換計(jì)算得到三角形網(wǎng)格的球面參數(shù)。實(shí)驗(yàn)證明改
    發(fā)表于 04-24 09:55

    三角形柵格矩形徑向線螺旋陣列天線的設(shè)計(jì)與實(shí)驗(yàn)研究

    三角形柵格矩形徑向線螺旋陣列天線的設(shè)計(jì)與實(shí)驗(yàn)研究:介紹了三角形柵格矩形徑向線螺旋陣列天線的工作原理,設(shè)計(jì)并數(shù)值模擬了中心頻率為4.0 GHz的三角形柵格矩形徑
    發(fā)表于 10-27 10:27 ?24次下載

    相負(fù)載三角形連接

    實(shí)驗(yàn)  相負(fù)載三角形連接 一、實(shí)驗(yàn)?zāi)康模?.熟悉相負(fù)載作三角形連接的方法。2.驗(yàn)證負(fù)載作
    發(fā)表于 09-24 14:09 ?3w次閱讀
    <b class='flag-5'>三</b>相負(fù)載<b class='flag-5'>三角形</b>連接

    三角形

    三角形目前的多分辨率算法(LOD)大多采用三角形作為最小的渲染圖元,綜合該算法的主要思想,使用一種更加復(fù)雜的圖元:以“宏三角形”為最小
    發(fā)表于 03-02 11:17 ?991次閱讀
    宏<b class='flag-5'>三角形</b>

    相負(fù)載的三角形連接方法

    相負(fù)載的三角形連接方法 將相負(fù)載Zuv、Zvw、Zwu接成三角形后與電源相連,如圖3.10所示,就構(gòu)成三角形連接的
    發(fā)表于 04-15 09:01 ?1.5w次閱讀
    <b class='flag-5'>三</b>相負(fù)載的<b class='flag-5'>三角形</b>連接方法

    C語(yǔ)言教程之輸出一個(gè)三角形

    C語(yǔ)言教程之輸出一個(gè)三角形,很好的GD32資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-21 17:55 ?0次下載

    C語(yǔ)言教程之利用#輸出三角形

    C語(yǔ)言教程之利用#輸出三角形,很好的C語(yǔ)言資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-22 11:06 ?0次下載

    基于貪心優(yōu)化策略的三角形排布算法

    改進(jìn)的代價(jià)函數(shù)選擇代價(jià)度量最小的頂點(diǎn)作為活動(dòng)頂點(diǎn);然后繪制(即輸出)其所有未繪制的鄰接三角形,并將相鄰頂點(diǎn)壓入緩存,算法迭代執(zhí)行直到所有
    發(fā)表于 12-15 14:09 ?0次下載

    星形/三角形的變換法介紹

    星形-三角形變換法與三角形-星形變換法原則上是等效的。為了簡(jiǎn)化計(jì)算,可以把星形連接的電路變換成等效三角形,也可以把三角形連接的電路變換為等效星形。即電路等效化簡(jiǎn)后,對(duì)電路未進(jìn)行變換的部
    的頭像 發(fā)表于 05-15 17:37 ?3w次閱讀
    星形/<b class='flag-5'>三角形</b>的變換法介紹

    Shell腳本之打印一個(gè)正三角形

    需求:打印一個(gè)正三角形,要求用戶輸入一個(gè)數(shù)字n,然后打印邊長(zhǎng)為n個(gè)*字符的正三角形
    的頭像 發(fā)表于 10-24 09:13 ?1621次閱讀

    三角形接法的作用

    三角形接法的作用 三角形接法是將各相電源或負(fù)載依次首尾相連,并將每個(gè)相連的點(diǎn)引出,作為相電的個(gè)相線。因接線形狀似三角形,所以這種接法叫做
    發(fā)表于 04-03 14:23 ?2446次閱讀

    三角形繞組的兩種連線方式介紹

    三角形繞組中,有兩種常見(jiàn)的連線方式,分別是星型連接和三角形連接。
    的頭像 發(fā)表于 11-21 16:59 ?1405次閱讀
    <b class='flag-5'>三角形</b>繞組的兩種連線方式介紹

    變壓器“三角形接線”和“星形接線”接法詳解

    變壓器“三角形接線”和“星形接線”接法詳解? 變壓器的三角形接線和星形接線是常見(jiàn)的兩種接法,它們?cè)诓煌膽?yīng)用場(chǎng)景中具有不同的優(yōu)勢(shì)和特點(diǎn)。 一、三角形接線 三角形接線也被稱(chēng)為Delta接
    的頭像 發(fā)表于 02-18 18:17 ?9552次閱讀

    三角形連接和星形連接的基本概念和特點(diǎn)

    和星形連接的基本概念 三角形連接 三角形連接,又稱(chēng)為Δ連接,是指將電機(jī)的個(gè)繞組首尾相接,形成一個(gè)閉合的三角形。在三角形連接中,每個(gè)繞組承受
    的頭像 發(fā)表于 07-17 10:35 ?777次閱讀