我們直接使用 Faster RCNN model，因為它的效果相 對其他 model 來說較精確，計算時間也不會太長，符合 我們的需求。它總共可以辨識出 20 種物體，其中比較感 興趣的是 dining table、chair、sofa、TVmonitor 這些屬 於室內房間中常見的物體。
在辨識出物體後，它會用 bounding box 圈選出物體 在圖片中的位置，並附上辨識出此物體的機率，bounding box 所提供的 2D 資訊可以幫助我們之後計算該物件在房間中的 3D 位置。
這裡我們參考 Seeing3dchairs 這篇論文的方法，將我們經由上一步辨識出的 object 圖片跟 其他各種形狀的現成 3D 模型的圖片做計算比對，得出 最相似的物體 3D 模型。
(1). 首先須準備好各種形狀的物體 3D 模型，從 3dwarehouse 上下載後，先在 Visual Studio 中將模 型的 pivot 點手動改到模型正中心，以便之後旋轉。
(2). 接著將調整好的模型傳入 Unity 中，固定攝影機位 置，設定物體每旋轉 10 度就拍攝一張，由於前一步 驟已經調整過旋轉軸心，因此只要讓它以 Y 軸為方 向旋轉即可產生各種常見角度的照片了，同時將當 下旋轉角度記錄在該圖片的檔名上，以便之後要擺 入房間時使用。
(3). 完成模型的準備工作後，接著從模型所有圖片中分 別取得其 Descriminative Elements 後存成 mat 檔， 並將 object 的圖片檔與 mat 檔中的 DE 做計算， 代入該論文的一些公式後計算配對出最相似的圖 片，而從圖片中除了可以知道它原本所對應的模型 外，還能透過檔名知道最後擺入房間中的旋轉角度 是多少，完成 object alignment。
我們使用 Deeproom model，Deeproom model 主要預 測的東西有兩種，一種是房間的牆角(corner)，另一種則 是 corner 的分佈所對應房間型態，他預設有 11 種房間 型態(下圖一)，兩個一起預測的好處是，如果有些 corner 被傢俱或者其他東西擋住的時候，可以透過房間型態去 進行補正，房間型態也可以輔助 corner 的偵測，使之更 加精準。有了 corner 之後就可以找到 edge 並對房間做 segmentation 的動作，又或者把 corner 投影回以 camera 去製造的 word space 當中，這樣就可以讓 layout 有 3D 的效果，不過我們主要使用這個 model 是因為 corner 的偵測做的相當好。corner 的預測型態為 mixture gaussian(下圖二)，我們可以使用像是 k-means 的方法去 精煉出一個點，即可找出 corner 的座標。有了 corner 座標後就可以搭配實際房間大小用來計算 pixel 與 pixel 間對應的實際距離，pixel 間的實際距離可以用做我們之 後使用相似形估算 object 在房間的位置。
到這一步為止，我們統整一下我們擁有的數據，我 們有房間跟 object 的實際大小，我們有 corner 在圖片 中的座標，有了座標之後，我們就可以利用房間的實際 大小找出 pixel 與 pixel 之間所對應的實際距離，還有 依據 object detection 所找出的 bounding box 及其 2D 資訊。有了上述的這些數據，我們就可以使用相似形去 推測 object 在房間當中的位置，以下圖為基礎去解釋我 們所使用的相似形。最下面的水平直線是牆壁往上下左 右做無限延伸，接著如果我們單看這個 object 我們無從 得知他是一幅壁畫還是真的 object，因此我們做了一個 假設，將找到的 object bounding box 當作投影在牆壁延 伸面上的一幅畫，因為影像本身就是投影的結果，object 投影長度可以用 pixel 之間的距離去推出來，有了這個 假設之後，我們就可以使用下面的相似形公式去找出圖 中的 X 也就是 object 的位置。