kitti rotation,label等細節相關

2021-10-16 05:18:57 字數 1925 閱讀 4238

kitti rotation

在sencond 和 det3d中,均是從kitti label資訊中讀取的在相機座標系下的rotation資訊,在訓練過程中也是回歸的camera座標系下的rotation,如果我想得到lidar座標系下的rotation公式為:

rotation_lidar_y = - (rotation_cam_y + pi/2),至於怎麼來的,抽出時間來講一下,經過網路後得到的輸出為(center_lidar(x,y,z),size_lidar(wlh),rotation_y_camera[弧度])。

在det3d的 wamoy 資料集和nuscens,裡面的資料格式都是先轉換到kitti格式,然後再去訓練,最後應該是再返回,這步沒看。

在openpcdet中,直接使用的就是lidar座標系,在讀取完kitti的label的pkl資訊後,直接就將相機座標系下的rotarion轉換到了lidar座標下,所以openpcdet的整個過程的座標都是在雷射雷達座標系下完成的,最終得到的格式也是(center_lidar(x,y,z),size_lidar(lwh),rotation_lidar)

在openpcdet中,kitti其實標註了8種類別,分別是car, van, truck, pedestrian, pedestrian(sitting), cyclist, tram以及misc,但是在測評的時候我們只測評car,ped,cyclist 那麼在**中我們是如何處理的呢?

首先在openpcdet中在生成各種pkl和gt base的時候 這些類別實際上依然都存在,比如pkl裡面的annation的name裡面是包含其他類別的,同樣的gt base裡面也是. 真正的處理是在pcdet->datasets->dataset.py 中的prepare_data函式裡面,也就是在kitti_dataset.py 裡面 的data_dict = self.prepare_data(data_dict=input_dict)進行呼叫, 在prepare_data 會檢視把傳進來的info裡面的gt names是否是[car,ped,cyclist]中的一類,然後生成乙個mask,比如gt裡面有10個obj,但是還有除了這三個類別以外的類別,那麼我們會生成[false,true,true…]的列表表示哪幾個gt是我們需要的.然後將這個mask傳進data_augmentor.forward 這個裡面首先做的事情是做資料增廣,往點雲裡面增加新的gt,首先要做的是計算兩個iou:iou3d_nms_utils.boxes_bev_iou_cpu(sampled_boxes[:, 0:7], existed_boxes[:, 0:7])和iou2 = iou3d_nms_utils.boxes_bev_iou_cpu(sampled_boxes[:, 0:7], sampled_boxes[:, 0:7]),即分別計算要加入的gt和現有gt和新加入的gts是否有重疊的現象.比如剛開始準備增加15個車,但是經過iou的計算後可能只剩下5個符合要求.在這個時候通過add_sampled_boxes_to_scene這個函式將新加入的gt增添到data_dict裡面,同時把不需要的類別的obj從gt_boxes裡面去除掉.這個時候我們資料的輸入裡面的gt是只包含[car,ped,cyclist]的gt了.

後續的是一些資料曾廣的步驟,比如xy flip,global rotation,

那什麼時候把這個類別對應成12345,這樣的數字的呢,我們知道在計算loss的時候肯定是數字的形式,所以這個時候會通過這個函式進一步的處理.self.data_processor.forward(data_dict=data_dict)首先這個函式先把一定距離外的gt去除掉,就是point_cloud_range外的gt,同時把距離外的點也會去掉.接下來的一種增廣是隨機變化點雲中點的idx.具體的類別轉到數字是通過gt_classes = np.array([self.class_names.index(n) + 1 for n in data_dict[『gt_names』]], dtype=np.int32)進行變化的.1->car,2->ped,3->cycylist.

C語言細節 va list, , , 等

c語言中va list用於引數可變的函式中,提供了讀取每個引數的方式.define valist typedef char va list storage alignment properties define aupbnd sizeof acpi native int 1 define adnbn...

Mysql 細節補充,約束 索引等

約束 顯示建表語句 show create table 表名 查詢表中的約束 select from information schema.table constraints where table name 表名 新增約束 alter table 表名 add unique key 約束名 列1 ...

1393 0和1相等串

給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。收起乙個字串,只包含01,長度不超過1000000。一行乙個整數,最長的0與1的個數相等的子串的長度。10112我發現腦洞一定要大,越大越好,不然有些辦法你想不出來,如果0和1的個數相等,我們要做的事情就是找到最長的區間 i 1...