日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 目标检测 >内容正文

目标检测

KITTI 3D目标检测数据集解析(完整版)

發布時間:2023/12/31 目标检测 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KITTI 3D目标检测数据集解析(完整版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • KITTI官網
  • Vision meets Robotics: The KITTI Dataset

  • 1. KITTI數據集概述

    1.1 傳感器配置

    ??由于彩色相機成像過程中的拜耳陣列(Bayer Pattern)插值處理過程,彩色圖像分辨率較低,而且對于光照敏感性不高,所以采集車配備了兩組雙目相機,一組灰度的,一組彩色的。個人猜測為了增加相機的水平視場角,每個相機鏡頭前又各安裝了一個光學鏡頭。

    傳感器類型詳細信息
    灰度相機2臺140像素的PointGray Flea2灰度相機, FL2-14S3M-C
    彩色相機2臺140萬像素PointGray Flea2彩色相機, FL2-14S3C-C
    光學鏡頭4個Edmund光學鏡頭,焦距4mm,90°水平孔徑,35°垂直孔徑角
    激光雷達1臺Velodyne HDL-64E激光,掃描頻率10Hz,64線,0.09°角度分辨率,2cm探測精度,每秒130萬點數,探測距離120m
    GPS/IMU慣導系統1個OXTS TR3003慣導,6軸,采集頻率100Hz,L1/L2信號波段,0.02m和0.1°的精度

    ??傳感器車身排布如下圖所示。

    1.2 數據采集

    ??KITTI整個數據集是在德國卡爾斯魯厄采集的,采集時長6小時。KITTI官網放出的數據大約占采集全部的25%,去除了測試集中相關的數據片段,按場景可以分為“道路”、“城市”、“住宅區”、“校園”和“行人”5類。
    ??采集車形式路徑如下圖所示,用紅藍黑區分GPS信號的質量,紅色是精度最高的,有RTK矯正;藍色無矯正信號;黑色缺失GPS信號,該部分數據已從數據集中剔除。

  • 圖像:采用8bit PNG格式保存。裁剪掉了原始圖像的引擎蓋和天空部分,并且根據相機參數進行了畸變矯正,最終圖片為50萬像素左右。
  • 激光:逆時針旋轉,采用浮點數二進制文件保存。保存了激光點(x,y,z)(x,y,z)(x,y,z)坐標和反射率rrr信息,每一幀平均12萬個激光點。
  • 圖像和激光同步:相機曝光時機是由激光控制的,當激光掃描到正前方(即相機朝向角度)時,會觸發相機快門,KITTI會記錄激光3個時間戳,旋轉起始和結束的時刻,以及觸發相機曝光的時刻。
  • 1.3 數據標注

    ??對于相機視野內的每個動態目標,KITTI都提供了基于激光坐標系的3D標注信息,定義了小車、面包車、 卡車、行人、坐著的人、自行車、有軌電車7種目標類型,其他比如拖車、代步車的小眾類型目標統一歸為“Misc”類別。3D標注信息包括目標尺寸、世界坐標以及偏航角(翻滾角和俯仰角默認等于0)。

    1.4 傳感器標定

    ??為了盡可能降低時間來帶的系統偏差,KITTI每天采集完數據后,都會對所有傳感器重新進行一次標定。

    傳感器同步
    ??使用激光雷達的時間戳作為基準類同步其他傳感器。對于相機,通過激光雷達觸發相機快門的方式來最小化動態目標帶來的偏差。GPS/IMU無法進行同步,但是由于采集頻率較高,最大的時間誤差也只有5ms。所有傳感器的時間戳使用系統時鐘記錄。

    相機標定
    ??4個相機光心均對齊到同一平面上。由于成像存在枕形畸變,畸變矯正圖像均從1392×5121392\times5121392×512裁剪到1224×3701224\times3701224×370像素大小。

    激光標定
    ??首先根據左側灰度相機的位置安裝激光雷達,然后基于選擇50個手工選點的標定誤差進行最優化,并根據KITTI立體視覺榜單Top3方法的性能變化來保證標定的魯棒性。


    2. 3D目標檢測數據集概述

    2.1 數據下載

    ??3D目標檢測數據集包含7481張訓練圖片,7518張測試圖片,以及相應的點云數據,共包含80256個標注目標。對應的官方下載路徑如下(建議復制鏈接用迅雷下載):

  • Download left color images of object data set (12 GB)
  • Download the 3 temporally preceding frames (left color) (36 GB) (非必需)
  • Download Velodyne point clouds, if you want to use laser information (29 GB)
  • Download camera calibration matrices of object data set (16 MB)
  • Download training labels of object data set (5 MB)
  • Download object development kit (1 MB) (including 3D object detection and bird’s eye view evaluation code)
  • 圖片、激光點云、標注真值、標定參數通過圖片序號一一對應。

    2.2 數據解析

    2.2.1 3D框標注

    字段字段長度單位含義
    Type1-目標類型
    Truncated1-目標截斷程度:0~1之間的浮點數
    表示目標距離圖像邊界的程度
    Occluded1-目標遮擋程度:0~3之間的整數
    0:完全可見 1:部分遮擋 2:大部分遮擋 3:未知
    Alpha1弧度目標觀測角:[?pi,pi][-pi, pi][?pi,pi]
    Bbox4像素目標2D檢測框位置:左上頂點和右下頂點的像素坐標
    Dimensions33D目標尺寸:高、寬、長
    Location3目標3D框底面中心坐標:(x,y,z)(x, y,z)(x,y,z),相機坐標系,
    Rotation_y1弧度目標朝向角:[?pi,pi][-pi, pi][?pi,pi]

    ??3D框標注信息格式如下,這里說明一下Alpha和Rotaion_y的區別和聯系:

    • Rotation_y是目標的朝向角,即車頭方向和相機xxx軸正方向的夾角(順時針方向為正),描述的是目標在現實世界中的朝向,不隨目標位置的變化而變化,如圖∠BOC\angle BOCBOC所示。
    • Alpha是目標觀測角,描述的是目標相對于相機視角的朝向,隨目標方位角theta變化而變化,如圖∠BOD\angle BODBOD所示。
    • Rotation_y和Alpha之間可以相互轉換。因為∠AOC=90°?theta\angle AOC=90°-thetaAOC=90°?theta,所以有∠AOB=∠AOC?∠BOC=90°?theta?rotaion_y\angle AOB=\angle AOC-\angle BOC=90°-theta-rotaion\_yAOB=AOC?BOC=90°?theta?rotaion_y又因為∠AOB+∠BOD=90°\angle AOB+ \angle BOD=90°AOB+BOD=90°可得alpha=∠BOD=90°?∠AOB=theta+rotation_yalpha=\angle BOD=90°-\angle AOB=theta + rotation\_yalpha=BOD=90°?AOB=theta+rotation_y考慮到rotation_y和alpha都是逆時針方向為負,所以有?alpha=theta?rotation_y-alpha=theta-rotation\_y?alpha=theta?rotation_yalpha=rotation_y?thetaalpha=rotation\_y-thetaalpha=rotation_y?theta有興趣的同學也可以自己用KITTI標簽數據驗證一下,會發現總是會有零點幾度的偏差,估計是KITTI保存有效位數造成的數據損失。

    2.2.2 激光點云

    ??激光點云數據采用二進制存儲,逐點保存,每個激光點對應4個float數據(x,y,z,r)(x,y,z,r)(x,y,z,r),依次解析即可,python解析代碼如下:

    import numpy as np import structdef read_lidar_info(file_path):size = os.path.getsize(file_path)point_num = int(size / 16)assert point_num * 16 == sizelidar_pt_list = np.zeros((point_num, 4), np.float)with open(file_path, 'rb') as f:for i in range(point_num * 4):data = f.read(4)val = struct.unpack('f', data)row = int(i / 4)col = i % 4lidar_pt_list[row][col] = val[0]lidar_pt_list = lidar_pt_list.transpose()return lidar_pt_list

    2.2.3 標定數據

    ??為了盡可能減少標定的系統誤差,KITTI每天都會重新對傳感器進行一次標定,因此每張圖片都有一個對應的txt標定參數文件,如下圖所示。

    參數名稱含義
    P0~P33×43 \times 43×4的相機投影矩陣,0~3分別對應左側灰度相機、右側灰度相機、左側彩色相機、右側彩色相機
    R0_rect3×33 \times 33×3的旋轉修正矩陣
    Tr_velo_to_cam3×43 \times 43×4的激光坐標系到Cam 0坐標系的變換矩陣
    Tr_imu_to_velo3×43 \times 43×4的IMU坐標系到激光坐標系的變換矩陣

    目標3D框到圖像的投影

    ??目標在相機坐標系下的坐標X=(x,y,z,1)TX=(x,y,z,1)^TX=(x,y,z,1)T到圖像像素坐標系Y=(u,v,1)TY=(u,v,1)^TY=(u,v,1)T的投影遵循:Y=Prect(i)XY=P^{(i)}_{rect}XY=Prect(i)?X激光點云到圖像的投影

    ??目標在激光坐標系下的坐標X=(x,y,z,1)TX=(x,y,z,1)^TX=(x,y,z,1)T到圖像像素坐標系Y=(u,v,1)TY=(u,v,1)^TY=(u,v,1)T的投影遵循:Y=Prect(i)Rrect(0)TvelocamXY=P^{(i)}_{rect}R^{(0)}_{rect}T^{cam}_{velo}XY=Prect(i)?Rrect(0)?Tvelocam?X其中Prect(i)P^{(i)}_{rect}Prect(i)?對應標定參數的P0~P3,因為這里使用的左側彩色相機,所以用的是P2投影矩陣。另外,Rrect(0)R^{(0)}_{rect}Rrect(0)?TvelocamT^{cam}_{velo}Tvelocam?在標定文件中是3×33\times 33×3的矩陣,實際使用時需要用0擴充到4×44\times44×4大小,并賦值Rrect(0)(3,3)=1R^{(0)}_{rect}(3, 3)=1Rrect(0)?(3,3)=1,Tvelocam(3,3)=1T^{cam}_{velo}(3,3)=1Tvelocam?(3,3)=1
    ??最終效果如下:

    總結

    以上是生活随笔為你收集整理的KITTI 3D目标检测数据集解析(完整版)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。