点云数据增强及预处理
數據增強:
1. random world flip:沿著x或者y軸,翻轉點云
點云的x或者y,要翻轉
3d box中心的x或者y,要翻轉
3d box的朝向要翻轉
point segmentation label,點云的相對順序沒有發生變化
2. random_world_rotation:沿著點云原點,旋轉點云
點,x,y,繞z軸旋轉
3d box,繞z軸旋轉,中心和朝向都要變化
point segmentation label,點云的相對順序沒有發生變化
3. random_world_scaling:沿著點云原點,縮放點云
點云,x,y,z 縮放
3d box,縮放,中心和尺寸都要變化
point segmentation label,點云的相對順序沒有發生變化
4. random_world_translation: 沿著x,y,z,軸線平移點云
點云的x,y,z,要平移
3d box的中心,沿著x,y,z,要平移
point segmentation label,點云的相對順序沒有發生變化
5. database sampler
從所有的scene中,采樣得到目標識別的3d box和points. 然后把這些box放回到訓練的frame中。
a. 確保采樣的box,和當前幀的box IOU = 0
b. 確保采樣的box之間,IOU = 0
c. 在放置采樣box的時候,需要提前刪除掉box所在位置的原先的點
d. 把采樣box的點,放回到scene中
如上的處理,可能會把box放在不合理的位置(雖然大部分是合理的);會破壞原有的points;會新增points;
需要如下條件:
a. 把database sampler放在roadplane上
b. database的采樣的時候,points中帶seg的標簽
從這一點出發,我覺得,應該把points和points label存到一起!!!
其他新增的數據增強方式
local rotation
local translation
local scaling
如上的local方式,針對每一個3d box篩選出對應的points,然后針對這些points和box,圍繞box的局部坐標系進行變換。針對挨著很近的box,可能會存在重疊等問題,而且semantic label也會不準確。所以這里針對語義分割就不用了。
點的特征:
point feature encoding, 這里沒有特殊操作,可以通過這個config,篩選輸入到后面的點云特征
x,y,z,intensity,enlongation,instance, seg class,timestamp
預處理:
1. mask points out of range
預設好預測范圍,voxel尺寸,進行voxel之后,grid size是固定的。這一步把范圍外的點去掉。
需要對seg label,進行同樣的操作。
在training,問題不大,因為loss的計算都是在范圍內的voxel的label來算的。
在validation時,也要對真值進行這個操作,而且要保證point的label的次序一樣。
2. shuffule points
打亂points的相對順序。
需要對seg labels進行同樣的操作。
3. transform points to voxel
劃分voxel
得到voxel中點的index,點對應的voxel coordinate
通過voxel中點的seg label,得到這個voxel的seg label
在validation和test的時候,把voxel的seg label,映射成voxel中點的label,用于結果的輸出和iou的計算
關于點云的處理:解析waymo數據集的時候,把seg_label作為點的一個feature,合并到pointcloud中,不用單獨分開為一個label文件。
總結
以上是生活随笔為你收集整理的点云数据增强及预处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QImage
- 下一篇: PHP,Mysql-根据一个给定经纬度的