1. 程式人生 > >3D Shape Retrieval using Volumetric and Image CNNs: A Meta Algorithmic Approach閱讀筆記

3D Shape Retrieval using Volumetric and Image CNNs: A Meta Algorithmic Approach閱讀筆記

1,該論文的網路組成:

一個網路用來處理二維多檢視得到的圖片,另外兩個網路用來處理體素表示的三維物體

2,3D物體的分類和識別的作用

  • 三維物體生成(3D object creation)
  • 3D列印(3D printing)
  • 數字製造(3D digital manufacturing)

舉例子:對於我們要用到的物體,第一步可以把它掃描成3D點雲(point cloud),然後比它轉換成CAD模型,然後再從設計精細的模型中尋找最像的用來我們特定的用途。如下圖所示:

(圖片來自於論文) 

3,實現3D物體分類的兩個策略

①,手工特徵(manually crafted features)

所謂手工特徵就是人工按照一定的人為制定的規則給原始的點雲新增特徵,又稱為形狀描述符。一般不同的描述符有不同的特徵引數設定。

形狀描述符按照作用域分為:

  • 全域性描述符(global descriptors)
  • 區域性描述符(local descriptors)

具體特徵型別:

  • 法向(normal)
  • 曲率(curvature)
  • 光場(Light Field Descriptor)
  • 傅立葉描述子(Fourier descriptor)
  • 熱核特徵(Heat Kernel Signature(HKS))
  • 尺度不變熱核特徵(Scale Invariant Heat Kernel Signature (SI-HKS))
  • etc.

接下來,利用這些手工特徵可以用傳統的機器學習(比如主成分分析法(PCA),支援向量機(SVM)等)方法來進行分類任務。

缺點:魯棒性不夠,不能適應複雜的真實世界中的3D物體。

②,自學習特徵(computer learned features)

所謂自學習特徵就是電腦以一定的方式從原始資料中自動抽取到的特徵。

2D影象的CNN已經算是比較成熟了,所以把2D-CNN應用到處理三維上面來是很自然的事情,但是從3D到2D轉化的過程中要保留充足的資訊。

為了克服手工特徵不能詳盡描述現實世界物體的特徵的缺陷,我們希望有自動提取特徵的方式,應用神經網路來處理就是很好的選擇。DeepSD方法率先用(HKS)對輸入的形狀進行預處理,然後把它們送進網路得到深層次的形狀描述,具體流程如下圖所示:

(圖片來自於論文)

MV-CNN(Multi-view Convolution Neural Network)是當下用的比較多的方式,大致原理就是對於每個3D物體都生成很多的2D或者2.5D(代表RGB-D型別資料)投影,這樣一個3D的物體就轉化成了多檢視下的圖片型別資料,然後就可以利用傳統的2D-CNN進行特徵提取,後續再進行分類檢索等任務,具體架構如下圖所示:

(圖片來自於論文)

4,本篇論文的主要貢獻

  • 資料增強(Data augmentation)-如何在低解析度和2D投影的情況下保留足夠多的資訊。

對於體素表示方法,儘管高解析度會保留很多細節資訊,但是會消耗巨大的計算機運算和記憶體資源。所以這裡採用30*30*30的體素解析度。

對於多檢視投影方法,隨機均勻球面取樣得到一定數量的觀察點(viewpoints),他們的中心點是網格的中心。觀察點的數量可以自己決定,一般選取30,60,90,120和360。如下圖所示:

圖中觀察點選取為360個(圖片來自於論文) 

  • 在分類和檢索任務中提供了可變的檢視數量-這和工業應用更近了一步
  • 多數投票機制(Majority vote)

這個文章受FusionNet的啟發,FusionNet也是採用類似的資料表示和網路設計,也嘗試結合三個不同的網路來提供分類準確度。但是FusionNet的缺點是網路一旦訓練好,那麼檢視的數量也就隨之確定了。在實踐當中,有可能檢視的數量收到限制,提供不了那麼多;也有可能需要更多的檢視來更好的識別物體。對於3D數字製造應用來說,不能直接應用FusionNet,所以本篇文章採用了投票機制,而不是最大池化(maxpooling)。具體來說就是對於每個檢視來說,我們都有他的檢視和對應的體素表示,然後使用CNN來處理它們。在網路融合之後使用投票機制,也就是說投票並不是對於三個網路的輸出結果來投票,而是三個網路融合之後得到一個確切的類別資訊,然後由於是有多個檢視,這些檢視中最多的那個類別將會作為最終的判定結果。通過這種方法,所需要的檢視的數量就不是固定的了,只需要某個類別資訊的票數最多就可以成為最終的“贏家”。另外需要訓練的超引數的數量也減少了(在池化層,需要大量的計算,消耗了計算資源)

投票機制的實驗結果舉例:120檢視的分類任務,沒有使用投票機制準確度是81.15%,使用投票機制之後就是93.03%。

5,資料集介紹(Dataset)

  • Princeton ModelNet dataset:包含127915個CAD模型,662個物體類別。以下是它的子集。
  • ModelNet10:3991個訓練資料,908個測試資料,一共10個物體類別。
  • ModelNet40:9843個訓練資料,2468個測試資料,40個物體類別。

ModelNet資料集是多邊形網格格式的,包含了座標系,所有的網格中的所有頂點和組成多邊形需要的標識資訊。

對於ModelNet10和ModelNet40,對於每個類別選取100個測試資料。

資料表示(Data Representation)

  • 圖片表示(Image representation):以一個固定的光源投影到投影到預定的觀察點。
  • 體素表示(Volumetric representation):用二元體素(binary voxels)表示,也就是1代表這個體素可用,0表示這個體素是空的。可以想象一下,這樣就可以一定解析度下準確度的描述整個物體。不同大小的多邊形網路資料將會有不同大小的體素解析度。

(圖片來源於論文) 在上圖中,(a)是圖片表示,解析度為244*244,(b)是體素表示,解析度為30*30*30

6,三個網路的介紹

影象CNN

本文使用的是AlexNet網路,修改一下使其更適於處理資料集。

因為CAD模型沒有顏色資訊,所以投影也是灰度圖。

光源的位置相對於觀察點是固定的。

Network 1: VCNNI

這個體素的卷積神經網路模仿X鐳射掃描的工作方式,所以說這和傳統的3D卷積是不同的,卷積核的大小是K*K*Length,其中K的選取和輸入的體素大小有關係,一般K取1,3或者5,length應該就是體積的邊長了,掃描的方向是固定的。這被作者稱為“各向異性”卷積層( ‘anisotropy’ convolution layers)。這個網路中有三個“各向異性層”,後面是兩個全連線層,最後一個層用來分類,所以大小和訓練集中的類別數目一樣。

Network 2: VCNNII

類似於FusionNet 的VCNNII,這個網路受到GoogleLeNet的啟發。它把不同大小的核的輸出連線起來,所以不同尺度的關鍵特徵就可以儲存下來(但是為什麼呢?)。這個網路包含2個inception模組,分別位於卷積層和兩個全連線層。

三個網路的整體結構圖如下:

(圖片來源於論文)

其中(a)代表基於影象的CNN,用來獲取形狀資訊;(b)代表處理體素的CNNI,用來模仿X光掃描,獲得3D物體的密度資訊;(c)代表處理體素的CNNII,應用了inception模型,用不同大小的卷積核來實現尺度不變性。

7,實驗結果

實驗用的是ModelNet10資料集

引數設定:

從120個視角來生成2D影象和對應的體素表示

以下是實驗結果:

#of viewing points Algorithm

ModelNet10

classification

(accuracy)

120

Meta-NN

(proposed method)

93.03%
N/A Panorama--NN 91.1%
N/A 3DShapeNets 83.5%
20Images & 60 voxels FusionNet 93.11%

可以看出網路的效果比Panorama--NN和3DShapeNets要好,和FusionNet類似。FusionNet使用了20張影象,60個voxels,而且需要人工的對齊到預定的姿態。

下面是具體的類別的混淆矩陣:

 (圖片來源於論文)

可以看到對table和desk的區分不好,實際上對一個英文不太好的人(我)來說,我也不知道這兩者的區別,然後我用谷歌圖片搜了一下,可以看看對比:

這是table

(圖片來源於網路)

這是desk

(圖片來源於網路) 

差別不是太大,貌似只是desk比table多了抽屜而已。所以分類效果不好是可以諒解的,畢竟人有時候可能也分不清。

然後...dresser和night stand的區分也不太好,我又谷歌了一下,第一眼根本區別不了。仔細對比了一下,發現是night stand一般是每層有一個抽屜,而dresser一般每層有兩個或者多個抽屜,整體也長一些。

對於ModelNet資料集,作者實驗了不同數量的觀察點(viewpoints)的組合方式(組合是對於訓練和測試來說的)對分類準確度的影響。最後發現測試和訓練都採用120個觀察點效果最好。如果要處理的資料集比較精細的化可以採用更多的觀察點,這樣可以捕捉更多的結構資訊。

下面是具體組合的結果:

# of 
viewpoints
Test
36 120 360
Train 36 91.59% 87.61% 87.61%
120 91.92% 93.03% 92.37%
360 90.93% 91.92% 91.84%

更進一步的,作者實驗了在3維形狀檢索上的表現。對浴缸(bathtub)的檢索精度是87.13%。

8,總結和展望

總結:

越來越多的方法直接處理3D資料,本文提出的方法突破了對檢視數量的約束(通過投票機制實現的),也不需要對三維物體的手動對齊(應該是和x光掃描的方式還有網路融合有關)。

展望:

  • 採用其他型別的自網路來處理2D影象或者3D物體。
  • 假如得到的資料只是物體的一部分怎麼處理?
  • 處理不同解析度下體素表示的三維物體。

歡迎指正!

相關推薦

3D Shape Retrieval using Volumetric and Image CNNs: A Meta Algorithmic Approach閱讀筆記

1,該論文的網路組成: 一個網路用來處理二維多檢視得到的圖片,另外兩個網路用來處理體素表示的三維物體 2,3D物體的分類和識別的作用 三維物體生成(3D object creation) 3D列印(3D printing) 數字製造(3D digital manuf

Image Retrieval using Scene Graphs ——基於場景圖的影象檢索 讀書筆記

未完待續,以及今天圖片上傳一直失敗 Abstract (摘要) 這篇文章基於場景圖的概念,提出了一種新的語義影象檢索框架。場景圖表示了物件(“人”,“船”),物件的屬性(“船是白色的”),物件之間的關係(“人站在船上”)。我們使用這些場景圖來檢索與場景圖語義相關的影象

Show, Attend and Tell: Neural Image Caption Generation with Visual Attention 閱讀筆記

0 模型在做什麼 圖0-0 Image Caption效果簡介 本文介紹的模型,將圖片資訊與相應的文字資訊進行結合,在預測文字中相應單詞的時候不同的影象區域被啟用 如在圖0-0 第一對圖片中,當用於生成句子中的dog單詞時,圖片中狗相關的區域變的高亮 類似的第二張

Squeeze-and-Excitation Networks(SE network)閱讀筆記

SE Block詳解 SE Block通過學習通道之間的關係,調節特徵圖通道之間的權重,從而達到attention集中的目的,改善網路的表達能力。 SE Block可以替代任意的卷積操作。 上圖為SE Block描述圖。可以看到,通過SE Block以後特

How do I resize an image using PIL and maintain its aspect ratio?

我有一個資料夾,裡的圖檔是 96×96, 我希望在這一個資料夾下的檔案被異動時,會自動產生縮圖(64×64)到其他的資料夾下。 PIL 是 Python 下最有名的影像處理套件。 這個套件,似乎在升級改版本,把一些比較少人用的屬性或方法在新版本裡拿掉,新版本也加入了更多新的功能。一般人應該都只會使用基本

Advanced Imaging and Image Analysis Services: Digital Pathology, Machine Learning and 3D Cell Culture Models

Three major opportunities for improvement in early-stage in vitro and animal model studies are to improve the predictive capability of in vitro models them

閱讀論文《LOW-LIGHT IMAGE ENHANCEMENT USING CNN AND BRIGHT CHANNEL PRIOR》

  這是2017年ICIP的一篇論文,使用一個聯合架構對影象進行增強。首先,是一個去噪網路;然後使用可以自動根據通道亮度優先設定轉換函式的增強網路;此外,還設定了一個額外的估測周圍環境亮度的過濾器。   過去的方法包括基於retinex理論的方法,這個方法假定

[TypeScript] Type check JavaScript files using JSDoc and Typescript 2.5

tro wrong check this sta clas sudo ons assertion Typescript 2.5 adds JSDoc type assertion support for javascript file via ts-check servic

3D Computer Grapihcs Using OpenGL - 07 Passing Data from Vertex to Fragment Shader

vertex 一致性 表示 變量 width src log 兩個 image 上節的最後我們實現了兩個綠色的三角形,而綠色是直接在Fragment Shader中指定的。 這節我們將為這兩個三角形進行更加自由的著色——五個頂點各自使用不同的顏色。 要實現這個目的,我們分兩

3D Computer Grapihcs Using OpenGL - 10 Color Buffer

_array info 點擊切換 arr triangle short 分享圖片 window 沒有 本節我們將嘗試利用三角形制作一個“走馬燈”效果。 一個三角形如圖示方式,從左向右依次移動。 先看一下代碼: MyGlWindow.cpp 1 #include <

3D Computer Grapihcs Using OpenGL - 18 相機移動

傾斜 col def 成員 clas osi 可能 帶來 編譯 移動相機需要用到鍵盤按鍵,按鍵事件的引入需要包含頭文件 #include <Qt3DInput\qkeyevent.h> 並實現QWidget中定義的虛函數keyPressEvent 我們首先在My

3D Computer Grapihcs Using OpenGL - 19 Vertex Array Object(頂點數組對象)

mvp moved body 體重 transform mode 創建 unsigned ray 大部分OpenGL教程都會在一開始就講解VAO,但是該教程的作者認為這是很不合理的,因為要理解它的作用需要建立在我們此前學過的知識基礎上。因此直到教程已經進行了一大半,作者才引

論文閱讀計劃2(Deep Joint Rain Detection and Removal from a Single Image)

rem 領域 深度學習 conf mage 圖片 多任務 RoCE deep Deep Joint Rain Detection and Removal from a Single Image[1] 簡介:多任務全卷積從單張圖片中去除雨跡。本文在現有的模型上,開發了一種多

HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL DEEP CONVOLUTIONAL NEURAL NETWORK閱讀筆記

數據 eight 說明 enter 像素點 維數 tran vertica 通用 HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL DEEP CONVOLUTIONAL NEURAL NETWORK 論文地址:h

論文閱讀筆記 DeepLabv1:SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS

bar pro 依賴性 後處理 主題 處理 分配 位置 平滑 論文鏈接:https://arxiv.org/abs/1412.7062 摘要 該文將DCNN與概率模型結合進行語義分割,並指出DCNN的最後一層feature map不足以進行準確的語義分割

論文閱讀筆記《Gated Context Aggregation Network for Image Dehazing and Deraining》WACV19

輸出 每一個 為什麽 作用 導致 作者 ont 而不是 簡單的 目錄: 相關鏈接 方法亮點 方法細節 實驗結果 總結與收獲 相關鏈接: 論文:https://arxiv.org/abs/1811.08747 源碼:暫無 方法亮點: 提出端到端的去霧網絡,不

End-to-end recovery of human shape and pose閱讀筆記

本文講了如何從單張RGB圖片重建人體的mesh,這個方法為Human Mesh Recovery(HMR)。 關於從圖片或視訊重建人體的meshes可以分為兩類方法:兩階段法,直接估計法。 兩階段法: 1)用2Dpose檢測,預測2D關節位置 2)通過迴歸分析和model

Multi-modal Sentence Summarization with Modality Attention and Image Filtering 論文筆記

五個月沒寫部落格了,不熟悉我的人大概以為我掛了…… 總之呢這段時間還是成長了很多,在加拿大實習的兩個多月來,我在編碼能力和眼界上都有了極大長進。當然,我也點上了烹飪技能點。 廢話不多說,我們來看一篇論文,就是標題所說的使用模態注意力和影象過濾機制的多模態句子摘要。 ====================

閱讀筆記——《FFDNet Toward a Fast and Flexible Solution for CNN based Image Denoising》

本博文屬於閱讀筆記,僅供本人學習理解用 論文連結:https://ieeexplore.ieee.org/abstract/document/8365806 給出程式碼(https://github.com/cszn/FFDNet)   Many methods mos

The bug about using hooks and MirroredStrategy in tf.estimator.Estimator

When I was using MirroedStrategy in my tf.estimator.Estimator: Python distribution = tf.contrib.distribute.MirroredStrat