傳統的RCNN可以大致框出定位物體在圖片中的位置,但是如何將這個圖片中的位置轉化為物理世界的位置?
01-09
最近在做一個機器人智能抓取物品的項目,機器人可以用一個雙目攝像頭將他看到的圖片傳回來,這裡我們使用了RCNN處理圖片,識別圖片上的物體。但是RCNN只能在2d的圖片中框出來目標物體,我們可以利用雙目攝像頭,將rcnn框出來的那一部分的3d坐標都拿到,但是如何確定物體的中心具體在哪裡?
我理解的題主的問題應該是這樣的:
已經通過RCNN在雙目圖像中定位到了物體位置,並且通過雙目視覺方法得到了一個區域的3D點雲(一堆點),要怎麼通過這些點雲來獲取機器人的抓取姿態?也即Grasp posedetection in point clouds問題。不知道我的審題是否正確。如果正確的話,請繼續往下看我的答案;不正確的話,請修改問題,我重新答: )
因為機器人通過雙目視覺得到的點雲並不完整,所以直接把點雲坐標求平均找中心的方法並不可行。
先說比較傳統的做法:首先,機器人眼中的一片點雲大概長成下圖這樣:由於之前的物體識別模塊已經確定了這片點雲對應的物體,如果我們有物體的3D模型,便可以直接用ICP演算法將這片點雲與物體的3D模型對齊。既然知道3D模型的位姿那就好辦了。之後就是各種抓取姿態生成、力封閉之類的東西了:當然,我們也可以不用這樣的方法。
我博一的時候原本也想做類似方向的東西,當時已經完成了利用Bag-of-Features (BoF)原理做的圖像物體定位演算法。就類似題主現在做的利用RCNN在圖像中定位了物體的大概位置。於是就想,我能不能直接利用這樣的圖像粗定位,然後根據一堆點雲做抓取,而不用知道物體的3D模型。當然,後來,我換了方向,所以這方面沒繼續往下做。但是最近看到不少類似的研究工作。1、Using Geometry to Detect Grasp Poses in 3D
Point Clouds
最近,深度學習之類的東西這麼火,所以,今年出了個新的方法。
這篇論文採用卷積神經網路訓練一小片點雲的可抓取性,我們實驗室有同學也測試了這個方法,效果果然好不少:上圖按順序依次是:彩色圖片、點雲圖片、隨機生成的抓取姿態、CNN判斷可行的抓取姿態。謝邀,一會兒來答
額 一般camera都是先calibrate好吧。。就是拿張棋盤一樣的紙在上面踩點,然後拿來算你camera坐標系轉換到機器人坐標系的一個矩陣就好了。算好了就別亂動了哦 :p
按照我的想法,只要願意打標籤,然後一切交給網路自己去學習~~~事實上各種生活物品也就那麼多,設計的把手位置大同小異,
瀉藥
這個問題還是用傳統方法解決比較好了。既然你已經知道物體在雙攝像頭的位置了,那麼在你的空間的位置就是立刻可以知道的假設攝像頭的玻璃鏡片是理想透鏡構成的光學系統,那麼攝像頭的呈現其實就是一個仿射變換。你可以通過標定點求出攝像頭的變換矩陣,然後你要做的事情就是聯立求解還原點在空間中的位置了。
當然,猶豫時間有限以及手機不方便就只說以上的這些了,如果繼續了解還是參考專門搞三維場景還原的書籍和論文吧。如果目標是機器人抓取,基於圖像特徵的控制 比 基於位置測量的控制 更魯棒一些。如果關鍵問題是物體中心點的獲取,我覺得可以根據detection結果,再做一次中心位置的prediction。
1. camera calibration2. extract feature points3. triangulation
搞定。
推薦閱讀:
※深度學習(DNN)是逆向模擬了人類視覺皮層結構嗎? 還是訓練過程中自然演變成類似視覺皮層的結構?
※雙目視覺感測器和神經網路能否逼近人眼視覺?
※如何快速學習 MATLAB BP 神經網路?
※神經網路訓練時對輸入有什麼特別的要求嗎?