這個CV數(shù)據(jù)集生成器火了,支持13類CV任務(wù),DeepMind等打造
本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。
這年頭,AI玩家們想找到合適的圖像數(shù)據(jù)集,簡直是越來越難了。
不僅數(shù)據(jù)質(zhì)量參差不齊,合適的數(shù)據(jù)類型也難找(如光流圖、深度圖等)。
為了解決這些問題,來自谷歌、MIT、DeepMind、MILA和劍橋大學等11家機構(gòu)的34名研究人員,聯(lián)手打造了一個名叫Kubric的數(shù)據(jù)集生成器,不僅能自己渲染,而且圖像效果也非常真實。
不僅各種圖像數(shù)據(jù)都能做,像語義分割、深度圖或光流圖這種“特殊數(shù)據(jù)”都能一鍵生成:
還能控制渲染的真實度,渲染出的視頻可以達到以假亂真的效果:
據(jù)作者們表示,目前Kubric支持13類CV任務(wù)的數(shù)據(jù)類型生成,效果也不比用已有數(shù)據(jù)集訓練出來的差。
這樣的一個數(shù)據(jù)集生成器,到底要怎么上手?
可生成13類CV任務(wù)所需數(shù)據(jù)
先來看看這個Kubric數(shù)據(jù)集生成器究竟是個啥。
簡單來說,它有點像是一個專為圖像AI打造的“數(shù)據(jù)車間”,基于跨平臺開源物理引擎PyBullet和3D圖像渲染軟件Blender打造。
其中,PyBullet給用戶提供了一個模擬3D物體運動的平臺,例如兩個球之間的彈性碰撞參數(shù)就可以用它來模擬。(當然,除了PyBullet以外,也可以擴展到其他物理引擎如MuJoCo上)
Blender則是一個渲染3D動畫的平臺,但它的優(yōu)勢在于操作方便,而且既可以做出照片級逼真的渲染圖像,也可以輸出3D動畫效果。(例如有設(shè)計師拿它設(shè)計服裝紋理)
可能這時候你會問,Kubric相比自己手動渲染視頻或圖像數(shù)據(jù)集,方便在哪?
一方面,Kubric自帶一系列預(yù)處理的基礎(chǔ)圖像數(shù)據(jù)庫。
除了11個基礎(chǔ)3D模型以外:
還內(nèi)置了Google Scanned Objects(GSO)室內(nèi)家具物品數(shù)據(jù)集中的一系列模型,以及包含背景、光照、材料紋理等參數(shù)的Polyhaven數(shù)據(jù)集,還有ShapeNet數(shù)據(jù)集等(包含55種常見的物品類型及51300個3D模型)。
也就是說,如果你對渲染不太了解,也能利用內(nèi)置的數(shù)據(jù)庫快速生成想要的圖像。
另一方面,Kubric直接提供了從“渲染數(shù)據(jù)”到輸出“AI訓練數(shù)據(jù)”的管道,省去了將渲染圖像轉(zhuǎn)成特殊數(shù)據(jù)(如深度圖、光流圖)、或是額外收集如視場、相機參數(shù)、光照等數(shù)據(jù)的麻煩。
這也使得Kubric支持生成13類CV任務(wù)所需的圖像數(shù)據(jù),具體包括光流、NeRF、姿態(tài)估計、3D重建等。
沒錯,即使這些生成的圖像中有2D也有3D類型,需要的數(shù)據(jù)量也從MB到TB級別不等,但Kubric都能滿足。
嗯,作者們還專門針對各種視覺任務(wù),用Kubric生成的數(shù)據(jù)集一個個試了試,強調(diào)“用他們生成的數(shù)據(jù)集效果更好”。
△Kubric生成的光流圖
那么,這樣的數(shù)據(jù)集生成器究竟要怎么用呢?
自帶Python接口
作者提供了一些簡單的操作流程。
在安裝之后,第一步就是創(chuàng)建默認場景:
然后,再通過這兩步,分別創(chuàng)建一塊地板、和一個球體(也可以換成其他形狀):
接下來就是在場景中加一個照明,以及渲染攝像頭采集圖像:
導出文件后,就能獲取一個3D球體的圖像了:
△Blender中的效果
如果需要深度圖、灰度圖等特殊圖層的話,也是幾行代碼就能搞定:
比自己手動導出要更方便一些:
當然,如果還是感覺上手較難,作者也直接提供了示例代碼,改改參數(shù)就能用:
在原基礎(chǔ)上,再加5行代碼就能直接運行出動態(tài)視頻版:
看起來,做完數(shù)據(jù)集后,即使不懂渲染的也能成為半個行家了(doge)
目前新的一批內(nèi)置數(shù)據(jù)集還在施工中,感興趣的小伙伴可以先上手試玩~
項目地址:
??https://github.com/google-research/kubric??
論文地址:
??https://arxiv.org/abs/2203.03570??