国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MMDetection3d對(duì)KITT數(shù)據(jù)集的訓(xùn)練與評(píng)估介紹

這篇具有很好參考價(jià)值的文章主要介紹了MMDetection3d對(duì)KITT數(shù)據(jù)集的訓(xùn)練與評(píng)估介紹。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


如有錯(cuò)誤,懇請(qǐng)指出。


在之后的時(shí)間內(nèi),可能會(huì)學(xué)習(xí)與點(diǎn)云相關(guān)的知識(shí),進(jìn)一步學(xué)習(xí)基于點(diǎn)云的3D目標(biāo)檢測(cè)。然后,為了快速入門這個(gè)領(lǐng)域,想使用mmdetection3d開源算法庫(kù)來(lái)嘗試訓(xùn)練一些經(jīng)典的3d目標(biāo)檢測(cè)模型,比如:SECOND,PointPillars,3D-SSD等等。之后重點(diǎn)是詳細(xì)介紹KITTI數(shù)據(jù)集的一系列評(píng)估標(biāo)準(zhǔn)。

1. mmdet3d安裝過(guò)程

其中,推薦安裝python=3.7的虛擬環(huán)境,因?yàn)樵趉itti數(shù)據(jù)集可視化過(guò)程中需要使用到mayavi包,而這個(gè)包的vtk依賴不支持python 3.8版本。

# 創(chuàng)建虛擬環(huán)境
conda create --name openmmlab python=3.7 -y
conda activate openmmlab

# 安裝深度學(xué)習(xí)框架
# Linux
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3
# Windows
pip install torch==1.11.0+cu102 torchvision==0.12.0+cu102 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu102

# 安裝mmdet3d開源算法庫(kù)
pip install openmim
mim install mmcv-full
mim install mmdet
mim install mmsegmentation
git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
pip install -e .

ps:在linux可能出現(xiàn)的問(wèn)題不會(huì)有太多,但是如果是window中安裝,出現(xiàn)pycocotools無(wú)法正常安裝的問(wèn)題,原因是沒有vc++的編譯器,安裝一個(gè)visual studio 2019的專業(yè)版就可以正常安裝了mmdet了,而mmdet的依賴就是pycocotools。

這個(gè)問(wèn)題的詳細(xì)解決方法見:error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“


2. KITTI數(shù)據(jù)集準(zhǔn)備

在官網(wǎng)下載對(duì)應(yīng)的數(shù)據(jù):http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d
安裝官方文檔對(duì)數(shù)據(jù)進(jìn)行組織:https://mmdetection3d.readthedocs.io/zh_CN/latest/datasets/kitti_det.html

ps:官方提供的數(shù)據(jù)切分指令如果wget無(wú)法正常下載訪問(wèn),可以在/etc/hosts中自行添加網(wǎng)頁(yè)的IP地址(IP地址的查詢服務(wù)鏈接:https://www.ip138.com/),例如:

wget -c  https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/test.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/test.txt

這個(gè)問(wèn)題的詳細(xì)解決方法,我也用博客貼出:Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|0.0.0.0|:443… failed

處理后的文件夾結(jié)構(gòu)應(yīng)該如下:

kitti
├── ImageSets
│   ├── test.txt
│   ├── train.txt
│   ├── trainval.txt
│   ├── val.txt
├── testing
│   ├── calib
│   ├── image_2
│   ├── velodyne
│   ├── velodyne_reduced
├── training
│   ├── calib
│   ├── image_2
│   ├── label_2
│   ├── velodyne
│   ├── velodyne_reduced
│   ├── planes (optional)
├── kitti_gt_database
│   ├── xxxxx.bin
├── kitti_infos_train.pkl
├── kitti_infos_val.pkl
├── kitti_dbinfos_train.pkl
├── kitti_infos_test.pkl
├── kitti_infos_trainval.pkl
├── kitti_infos_train_mono3d.coco.json
├── kitti_infos_trainval_mono3d.coco.json
├── kitti_infos_test_mono3d.coco.json
├── kitti_infos_val_mono3d.coco.json

這里我不太理解mmdet3d轉(zhuǎn)換出來(lái)的這些.pkl與.coco.json文件,所以下面寫了個(gè)測(cè)試代碼來(lái)對(duì)其進(jìn)行詳細(xì)了解。

2.1 了解 .coco.json 文件

對(duì)于 .coco.json 后綴的文件,可以通過(guò)兩種方式對(duì)其進(jìn)行讀取,如下所示:

# 方法1:
json_path = r'../data/kitti/kitti_infos_train_mono3d.coco.json'
with open(json_path, 'r') as fr:
    json_file = json.load(fr)

# 方法2:
cocojson_path = '../data/kitti/kitti_infos_train_mono3d.coco.json'
cocojson_file = mmcv.load(cocojson_path)

ps:如果由于某些原因?qū)е耲son文件的內(nèi)容被情況,也就是變成了一個(gè)空的.coco.json文件,這時(shí)候使用以上的兩種方法讀取數(shù)據(jù)是會(huì)報(bào)錯(cuò)的,這一點(diǎn)需要尤其注意。(在測(cè)試過(guò)程中我就是出現(xiàn)了這個(gè)題,還排查了許久的原因)

其中,查看kitti_infos_train_mono3d.coco.jsonkitti_infos_test_mono3d.coco.json內(nèi)容如下所示,有固定字段組成的字典形式,由annotation、images、categories組成,其中訓(xùn)練集有標(biāo)注信息,而驗(yàn)證集沒有標(biāo)注信息,其字段信息如下所示:

mmdetection3d讀入kitti,# 三維點(diǎn)云實(shí)踐,MMOpenLab,3d,深度學(xué)習(xí),kitti數(shù)據(jù)集,mmdetection3d,三維點(diǎn)云

其中的images又是由多個(gè)字典組成,如下所示:

mmdetection3d讀入kitti,# 三維點(diǎn)云實(shí)踐,MMOpenLab,3d,深度學(xué)習(xí),kitti數(shù)據(jù)集,mmdetection3d,三維點(diǎn)云

不過(guò)在訓(xùn)練的時(shí)候,我看見配置文件中其實(shí)使用的pkl文件,所以這里生成的.coco.json文件更多的可能是使用一些2D的經(jīng)典目標(biāo)檢測(cè)算法來(lái)訓(xùn)練kitti數(shù)據(jù)集的。也就是說(shuō),生成的.coco.json文件,使得我們可以使用mmdetection的開源算法庫(kù)(檢測(cè)2d的算法)來(lái)訓(xùn)練kitti數(shù)據(jù)集。

2.2 了解 .pkl 文件

使用一般的手段是不能正常讀取.pkl文件的,np.fromfile 與 json.load 都不能正常讀取,因?yàn)檫@是mmdet中獨(dú)特的數(shù)據(jù)存儲(chǔ)格式。對(duì)于網(wǎng)上沒有這種文件的詳細(xì)介紹,此時(shí)就可以轉(zhuǎn)換思路通過(guò)如何生成 .pkl 文件入手,知道了其如何生成就應(yīng)該知道其存儲(chǔ)的內(nèi)容是什么。

在代碼層面,首先在 tools/create_data.py 中的 kitti_data_pre 函數(shù)中,作為數(shù)據(jù)處理的入口。之后可以發(fā)現(xiàn),代碼中是通過(guò) mmcv.dump 與 mmcv.load 來(lái)進(jìn)行pkl格式數(shù)據(jù)與.coco.json格式數(shù)據(jù)的寫入與導(dǎo)出,但是數(shù)據(jù)本身就是一個(gè)字典形式。具體的構(gòu)造在 get_kitti_image_info 函數(shù)中,函數(shù)的相關(guān)注釋如下:

KITTI annotation format version 2:
{
    [optional]points: [N, 3+] point cloud
    [optional, for kitti]image: {
        image_idx: ...
        image_path: ...
        image_shape: ...
    }
    point_cloud: {
        num_features: 4
        velodyne_path: ...
    }
    [optional, for kitti]calib: {
        R0_rect: ...
        Tr_velo_to_cam: ...
        P2: ...
    }
    annos: {
        location: [num_gt, 3] array
        dimensions: [num_gt, 3] array
        rotation_y: [num_gt] angle array
        name: [num_gt] ground truth name array
        [optional]difficulty: kitti difficulty
        [optional]group_ids: used for multi-part object
    }
}

這里,直接利用 mmcv.load 來(lái)讀取 kitti_test.pkl 數(shù)據(jù),pkl_file = mmcv.load(file=pkl_path) ,其內(nèi)容如下所示:

mmdetection3d讀入kitti,# 三維點(diǎn)云實(shí)踐,MMOpenLab,3d,深度學(xué)習(xí),kitti數(shù)據(jù)集,mmdetection3d,三維點(diǎn)云

可以發(fā)現(xiàn),其作為一個(gè)列表元素,每個(gè)訓(xùn)練數(shù)據(jù)都被構(gòu)建成了一個(gè)字典。每個(gè)字典由4大部分組成:inage、point_cloud、calib、annos。其與注釋內(nèi)容是相符合的,其中可以使用 mmcv.track_iter_progress 可以按順序?qū)ψ值溥M(jìn)行提取:for info in mmcv.track_iter_progress(kitti_infos)

其中,對(duì)于這4個(gè)部分,官方資料中有解釋到:https://mmdetection3d.readthedocs.io/zh_CN/latest/datasets/kitti_det.html

mmdetection3d讀入kitti,# 三維點(diǎn)云實(shí)踐,MMOpenLab,3d,深度學(xué)習(xí),kitti數(shù)據(jù)集,mmdetection3d,三維點(diǎn)云

可以發(fā)現(xiàn),其實(shí)這里的annos就是kitti中的label文件的數(shù)據(jù)。而對(duì)于label_2的介紹,可以參考https://blog.csdn.net/qq_37534947/article/details/106628308,label文件是kitti中object的標(biāo)簽和評(píng)估數(shù)據(jù),以“000001.txt”文件為例,包含樣式如下:

mmdetection3d讀入kitti,# 三維點(diǎn)云實(shí)踐,MMOpenLab,3d,深度學(xué)習(xí),kitti數(shù)據(jù)集,mmdetection3d,三維點(diǎn)云

每一行代表一個(gè)object,每一行都有16列分別表示不同的含義,具體如下:

  • 第1列(字符串):代表物體類別(type)
    總共有9類,分別是:Car、Van、Truck、Pedestrian、Person_sitting、Cyclist、Tram、Misc、DontCare。其中DontCare標(biāo)簽表示該區(qū)域沒有被標(biāo)注,比如由于目標(biāo)物體距離激光雷達(dá)太遠(yuǎn)。為了防止在評(píng)估過(guò)程中(主要是計(jì)算precision),將本來(lái)是目標(biāo)物體但是因?yàn)槟承┰蚨鴽]有標(biāo)注的區(qū)域統(tǒng)計(jì)為假陽(yáng)性(false positives),評(píng)估腳本會(huì)自動(dòng)忽略DontCare區(qū)域的預(yù)測(cè)結(jié)果。
  • 第2列(浮點(diǎn)數(shù)):代表物體是否被截?cái)啵╰runcated)
    數(shù)值在0(非截?cái)啵┑?(截?cái)啵┲g浮動(dòng),數(shù)字表示指離開圖像邊界對(duì)象的程度。
  • 第3列(整數(shù)):代表物體是否被遮擋(occluded)
    整數(shù)0、1、2、3分別表示被遮擋的程度。
  • 第4列(弧度數(shù)):物體的觀察角度(alpha)
    取值范圍為:-pi ~ pi(單位:rad),它表示在相機(jī)坐標(biāo)系下,以相機(jī)原點(diǎn)為中心,相機(jī)原點(diǎn)到物體中心的連線為半徑,將物體繞相機(jī)y軸旋轉(zhuǎn)至相機(jī)z軸,此時(shí)物體方向與相機(jī)x軸的夾角,如圖1所示。
  • 第5~8列(浮點(diǎn)數(shù)):物體的2D邊界框大小(bbox)
    四個(gè)數(shù)分別是xmin、ymin、xmax、ymax(單位:pixel),表示2維邊界框的左上角和右下角的坐標(biāo)。
  • 第9~11列(浮點(diǎn)數(shù)):3D物體的尺寸(dimensions)分別是高、寬、長(zhǎng)(單位:米)
  • 第12-14列(整數(shù)):3D物體的位置(location)分別是x、y、z(單位:米),特別注意的是,這里的xyz是在相機(jī)坐標(biāo)系下3D物體的中心點(diǎn)位置。
  • 第15列(弧度數(shù)):3D物體的空間方向(rotation_y)取值范圍為:-pi ~ pi(單位:rad),它表示,在照相機(jī)坐標(biāo)系下,物體的全局方向角(物體前進(jìn)方向與相機(jī)坐標(biāo)系x軸的夾角)
  • 第16列(整數(shù)):檢測(cè)的置信度(score)要特別注意的是,這個(gè)數(shù)據(jù)只在測(cè)試集的數(shù)據(jù)中有。

2.3 .bin文件、.pkl文件、.coco.json文件的查看代碼

如何查看KITTI數(shù)據(jù)集涉及的這些.bin文件,以及mmdetection3d統(tǒng)一的.pkl與.coco.json格式,以下我寫了個(gè)代碼已實(shí)現(xiàn)對(duì)這些文件的查看。

參考代碼:

import numpy as np
import os
import json

import mmcv

# os.chdir(path='')

root = os.getcwd()
print(root)

bin_path = '../data/kitti/kitti_gt_database/1000_Car_0.bin'
pkl_path = '../data/kitti/kitti_infos_train.pkl'
# 原來(lái)是 test_mono3d.coco.json由于名稱的問(wèn)題,讀取不了數(shù)據(jù)
json_path = r'../data/kitti/test.json'
os.path.exists(bin_path), "{} is not exists".format(bin_path)
os.path.exists(json_path), "{} is not exists".format(json_path)

bin_file = np.fromfile(file=bin_path, dtype=np.float32, count=-1)
pkl_file = np.fromfile(file=pkl_path, dtype=np.float32, count=-1)
print(bin_file.shape)
print(pkl_file.shape)

# with open(json_path, 'r') as fr:
#     json_file = json.load(fr)
# print(json_file)

pkl_path = '../data/kitti/kitti_infos_train.pkl'
kitti_infos = mmcv.load(file=pkl_path)
# print(pkl_file)

json_path = r'../data/kitti/kitti_infos_train_mono3d.coco.json'
with open(json_path, 'r') as fr:
    json_train_file = json.load(fr)
# print(json_file)

cocojson_path = '../data/kitti/kitti_infos_test_mono3d.coco.json'
json_test_file = mmcv.load(cocojson_path)

補(bǔ)充:使用 mmcv.load 不僅僅可以讀取,coco.json和.pkl文件,其一共支持5種格式的數(shù)據(jù)格式。如下所示:

file_handlers = {
    'json': JsonHandler(),
    'yaml': YamlHandler(),
    'yml': YamlHandler(),
    'pickle': PickleHandler(),
    'pkl': PickleHandler()
}

3. KITTI數(shù)據(jù)集訓(xùn)練

如果你在單個(gè)機(jī)器上啟動(dòng)多個(gè)任務(wù),比如,在具有8塊顯卡的機(jī)器上進(jìn)行2個(gè)4塊顯卡訓(xùn)練的任務(wù),你需要為每個(gè)任務(wù)指定不同的端口(默認(rèn)為29500)以避免通信沖突。

如果你使用 dist_train.sh 啟動(dòng)訓(xùn)練任務(wù),可以在命令中設(shè)置端口:

CUDA_VISIBLE_DEVICES=0,1,2,3 PORT=29500 ./tools/dist_train.sh ${CONFIG_FILE} 4
CUDA_VISIBLE_DEVICES=4,5,6,7 PORT=29501 ./tools/dist_train.sh ${CONFIG_FILE} 4

端口的設(shè)置還有另外的兩種方法:

# 方法1:通過(guò) --options 設(shè)置端口
CUDA_VISIBLE_DEVICES=0,1,2,3 GPUS=4 ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} config1.py ${WORK_DIR} --options 'dist_params.port=29500'
CUDA_VISIBLE_DEVICES=4,5,6,7 GPUS=4 ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} config2.py ${WORK_DIR} --options 'dist_params.port=29501'

# 方法2:通過(guò)修改配置文件(來(lái)設(shè)置不同的通信端口
dist_params = dict(backend='nccl', port=29500)
dist_params = dict(backend='nccl', port=29501)

詳細(xì)的訓(xùn)練過(guò)程這里就不貼出來(lái)的,和mmdetection、mmfewshot等的訓(xùn)練過(guò)程是一樣的。詳細(xì)可以參考:MMOpenLab使用專欄

經(jīng)過(guò)測(cè)試,出現(xiàn)的使用問(wèn)題:

1)訓(xùn)練MVXNET:彈出非法訪問(wèn)的問(wèn)題(解決方法是降低學(xué)習(xí)率,以實(shí)現(xiàn)單卡運(yùn)行的學(xué)習(xí)率配置)
2)訓(xùn)練Point RCNN:占用顯存不斷增加,最終溢出(官方還沒有修復(fù)這個(gè)問(wèn)題)

成功測(cè)試的算法:SECOND、3D-SSD、PointPillars、Part-A2、SASSD


4. KITTI數(shù)據(jù)集評(píng)估標(biāo)準(zhǔn)

以PointPillars為例,訓(xùn)練完之后會(huì)有一個(gè)評(píng)估結(jié)果(以下結(jié)果是截取了Car這個(gè)類的結(jié)果,還有另外兩個(gè)類的結(jié)果沒有放上來(lái))

----------- AP11 Results ------------
Car AP11@0.70, 0.70, 0.70:
bbox AP11:90.5385, 89.3699, 86.2703
bev  AP11:89.6290, 86.8373, 79.6047
3d   AP11:85.9857, 76.4022, 73.5934
aos  AP11:90.38, 88.89, 85.46
Car AP11@0.70, 0.50, 0.50:
bbox AP11:90.5385, 89.3699, 86.2703
bev  AP11:90.6688, 89.9088, 89.0676
3d   AP11:90.6654, 89.8380, 88.8712
aos  AP11:90.38, 88.89, 85.46

Overall AP11@easy, moderate, hard:
bbox AP11:79.9252, 74.4630, 71.3123
bev  AP11:77.1720, 68.2989, 63.5469
3d   AP11:73.1700, 62.1137, 58.4967
aos  AP11:74.50, 68.65, 65.49

----------- AP40 Results ------------
Car AP40@0.70, 0.70, 0.70:
bbox AP40:95.6966, 92.1547, 87.4279
bev  AP40:92.4469, 88.1739, 83.6487
3d   AP40:87.8139, 76.5133, 73.3604
aos  AP40:95.51, 91.61, 86.58
Car AP40@0.70, 0.50, 0.50:
bbox AP40:95.6966, 92.1547, 87.4279
bev  AP40:95.9824, 94.8116, 91.7013
3d   AP40:95.9314, 94.6114, 90.0106
aos  AP40:95.51, 91.61, 86.58

Overall AP40@easy, moderate, hard:
bbox AP40:82.7911, 75.4843, 71.5740
bev  AP40:78.7391, 68.7362, 64.2875
3d   AP40:74.1775, 61.6529, 57.5156
aos  AP40:76.47, 68.73, 64.88

對(duì)于上述的結(jié)果,下面分別對(duì)特定的名詞進(jìn)行解釋說(shuō)明:

4.1 bbox、bev、3d、aos

深度學(xué)習(xí)算法的檢測(cè)指標(biāo)通常由bbox、bev、3d、aos四個(gè)檢測(cè)指標(biāo),其含義分別如下所示:

  • bbox:2D檢測(cè)框的準(zhǔn)確率
  • bev:BEV視圖下檢測(cè)框的準(zhǔn)確率
  • 3d:3D檢測(cè)框的準(zhǔn)確率
  • aos:檢測(cè)目標(biāo)旋轉(zhuǎn)角度的準(zhǔn)確率

4.2 AP11與AP40

  • AP11:表示11點(diǎn)插值平均精度,在kitti 3D中R11={0,0.1,0.2,……,1},是等間距的recall level
  • AP40:表示40點(diǎn)插值平均精度,將R11修改為R40={1/40,2/40,3/40,……,1},同樣是等間距的recall level

ps:論文《Disentangling Monocular 3D Object Detection》證明AP11是不準(zhǔn)確的,因?yàn)楫?dāng)模型可以提供一個(gè)精度極小,僅僅是>0的一個(gè)單一目標(biāo),此時(shí)R=0時(shí)的精度即為1,那么AP11的平均精度即為1/11,這個(gè)精度已經(jīng)超過(guò)了很多的方法,所以是不合理的。所以后續(xù)修改為AP40。

4.3 Car AP11@0.70, 0.70, 0.70與Car AP11@0.70, 0.50, 0.50

  • AP11@0.70, 0.70, 0.70分別代表bbox,bev,3d在0.70閾值下的平均精度
  • AP11@0.70, 0.50, 0.50分別代表bbox,bev,3d在0.70,0.50,0.50不同閾值下的平均精度

這里可以發(fā)現(xiàn),評(píng)估bbox只有0.70這個(gè)閾值,所以可以發(fā)現(xiàn)bbox的兩行數(shù)據(jù)都是一樣的,而對(duì)于bev與3d來(lái)說(shuō),0.50的閾值比0.70的閾值要寬松,所以第二組的結(jié)果(閾值0.50)一般要比第一組的結(jié)果(閾值0.70)要高。

4.4 bbox AP11:90.5385, 89.3699, 86.2703

無(wú)論是bbox,還是bev、3d、aos,每個(gè)評(píng)價(jià)指標(biāo)在某一個(gè)閾值下都會(huì)有3組結(jié)果,這三組結(jié)果分別對(duì)應(yīng)的是easy、moderate和hard下的評(píng)估結(jié)果。難度越來(lái)越大,所以數(shù)值也越來(lái)越小,所以這三組數(shù)值一般是呈遞減狀態(tài)。

4.5 mAP

mmdetection3d讀入kitti,# 三維點(diǎn)云實(shí)踐,MMOpenLab,3d,深度學(xué)習(xí),kitti數(shù)據(jù)集,mmdetection3d,三維點(diǎn)云

一般論文中的實(shí)驗(yàn)結(jié)果都會(huì)貼上一個(gè)mAP的最終結(jié)果,這個(gè)結(jié)果就是moderate mAP的結(jié)果。比如,在剛剛的PointPillars實(shí)驗(yàn)結(jié)果中,對(duì)于car類別的AP11結(jié)果如下所示,其中76.4022就是作為car這個(gè)類基準(zhǔn)排名的主要指標(biāo)。

Car AP11@0.70, 0.70, 0.70:
3d   AP11:85.9857, 76.4022, 73.5934

而對(duì)于全部3個(gè)類別的AP11結(jié)果如下所示,那么62.1137就是作為3類(3 Class)基準(zhǔn)排名的主要指標(biāo)。

Overall AP11@easy, moderate, hard:
3d   AP11:73.1700, 62.1137, 58.4967

現(xiàn)在,來(lái)查看mmdetection3d中PointPillars的結(jié)果:

mmdetection3d讀入kitti,# 三維點(diǎn)云實(shí)踐,MMOpenLab,3d,深度學(xué)習(xí),kitti數(shù)據(jù)集,mmdetection3d,三維點(diǎn)云

可以發(fā)現(xiàn),其實(shí)剛剛我跑出來(lái)的結(jié)果Class的AP是76.4022,而3 Class的AP是62.137。這個(gè)結(jié)果和官方跑出來(lái)的77.6和64.07差不多。使用以下指令,來(lái)測(cè)試剛剛訓(xùn)練好的PointPillars的最新模型:

python tools/test.py configs/pointpillars/hv_pointpillars_secfpn_6x8_160e_kitti-3d-3class.py \
                     work_dirs/hv_pointpillars_secfpn_6x8_160e_kitti-3d-3class/latest.pth \
                     --eval mAP

輸出結(jié)果:
mmdetection3d讀入kitti,# 三維點(diǎn)云實(shí)踐,MMOpenLab,3d,深度學(xué)習(xí),kitti數(shù)據(jù)集,mmdetection3d,三維點(diǎn)云

可以看見,無(wú)論是Car=76.4022還是3 Class=62.1137,都與訓(xùn)練時(shí)期的驗(yàn)證結(jié)果差不多,所以訓(xùn)練期間的驗(yàn)證結(jié)果還是可信的。

4.6 aos(Average Orientation Similarity)

aos的名稱為平均方向相似性(這里是利用了AP11來(lái)進(jìn)行計(jì)算),計(jì)算公式如下:
mmdetection3d讀入kitti,# 三維點(diǎn)云實(shí)踐,MMOpenLab,3d,深度學(xué)習(xí),kitti數(shù)據(jù)集,mmdetection3d,三維點(diǎn)云

其中,r代表物體檢測(cè)的召回率。在因變量r下,方向相似性s∈[0,1]被定義為所有預(yù)測(cè)樣本與ground truth余弦距離的歸一化
mmdetection3d讀入kitti,# 三維點(diǎn)云實(shí)踐,MMOpenLab,3d,深度學(xué)習(xí),kitti數(shù)據(jù)集,mmdetection3d,三維點(diǎn)云

其中D?表示在召回率r下所有預(yù)測(cè)為正樣本的集合,?θ(i) 表示檢出物體i的預(yù)測(cè)角度與ground truth的差。為了懲罰多個(gè)檢出匹配到同一個(gè)ground truth,如果檢出i已經(jīng)匹配到ground truth設(shè)置δi = 1,否則δi = 0。

簡(jiǎn)要分析:我們希望aos的值越大越好,越大也就說(shuō)明預(yù)測(cè)角度與ground truth的值越相似,那么這個(gè)是如何實(shí)現(xiàn)的呢。在余弦函數(shù)中,如果預(yù)測(cè)角度與ground turth的值越接近,那么它們差值就越接近0,余弦值是越靠近1,也就是余弦越大,那么整個(gè)公式的求和平均也是越大的。而如果預(yù)測(cè)值與ground truth不像,嚴(yán)重預(yù)測(cè)錯(cuò)誤,那么其差值就會(huì)變大,一個(gè)比較大的差值在余弦公式中是比較小的,甚至可能是負(fù)數(shù),導(dǎo)致1+cos的結(jié)果很小,從而使得整體的結(jié)果偏小。所以aos公式可以一定程度的判斷方向的預(yù)測(cè)正確性。

4.7 easy、moderate、hard的定義

KITTI數(shù)據(jù)集中easy、moderate、hard根據(jù)標(biāo)注框是否被遮擋、遮擋程度和框的高度進(jìn)行定義的,具體數(shù)據(jù)如下:

  • 簡(jiǎn)單:最小邊界框高度:40像素,最大遮擋級(jí)別:完全可見,最大截?cái)啵?5%
  • 中等:最小邊界框高度:25像素,最大遮擋水平:部分遮擋,最大截?cái)啵?0%
  • 困難:最小邊界框高度:25像素,最大遮擋級(jí)別:難以看到,最大截?cái)啵?0%

參考資料:

1. MMDet3d官方文檔

2. What is the resuls meaning? #185

3. KITTI數(shù)據(jù)集3d目標(biāo)檢測(cè)的評(píng)價(jià)的含義

4. 機(jī)器學(xué)習(xí)算法評(píng)估指標(biāo)——3D目標(biāo)檢測(cè)

5. 點(diǎn)云感知算法面試知識(shí)點(diǎn)(一)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-787458.html

到了這里,關(guān)于MMDetection3d對(duì)KITT數(shù)據(jù)集的訓(xùn)練與評(píng)估介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 熟悉mmdetection3d數(shù)據(jù)在模型中的處理流程

    熟悉mmdetection3d數(shù)據(jù)在模型中的處理流程

    本圖文數(shù)據(jù)集采取KITTI數(shù)據(jù)集 配置文件的介紹可以參考博主上一篇圖文 本圖文旨在利用一條數(shù)據(jù),走完整個(gè)多模態(tài)數(shù)據(jù)處理分支,獲得bbox,并可視化在圖像上 本次教程選用的模型為MVXNet,是一個(gè)多模態(tài)融合的3D目標(biāo)檢測(cè)模型 配置文件: mmdetection3d/configs/mvxnet/dv_mvx-fpn_second_

    2024年02月12日
    瀏覽(20)
  • mmdetection3d SUN RGB-D數(shù)據(jù)集預(yù)處理

    mmdetection3d SUN RGB-D數(shù)據(jù)集預(yù)處理

    本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 本文為專欄《python三維點(diǎn)云從基礎(chǔ)到深度學(xué)習(xí)》系列文章,地址為“https://blog.csdn.net/suiyingy/article/details/124017716”。 ????????SUN RGB-D是普林斯頓大學(xué)發(fā)布的一種關(guān)于室內(nèi)場(chǎng)景理解的數(shù)據(jù)集,共包含了10335個(gè)樣本,其中訓(xùn)練樣本

    2023年04月15日
    瀏覽(18)
  • MMDetection3D簡(jiǎn)單學(xué)習(xí)

    我們通常把模型的各個(gè)組成成分分成 6 種類型: 編碼器(encoder):包括 voxel encoder 和 middle encoder 等進(jìn)入 backbone 前所使用的基于體素的方法,如? HardVFE ?和? PointPillarsScatter 。 骨干網(wǎng)絡(luò)(backbone):通常采用 FCN 網(wǎng)絡(luò)來(lái)提取特征圖,如? ResNet ?和? SECOND 。 頸部網(wǎng)絡(luò)(neck):

    2024年02月13日
    瀏覽(22)
  • MMDetection3D框架環(huán)境配置

    MMDetection3D框架環(huán)境配置

    MMDetection3D是一個(gè)基于PyTorch的開源3D目標(biāo)檢測(cè)框架。下面是MMDetection3D的環(huán)境配置步驟: 安裝Anaconda,教程很多不在說(shuō)明。 1.創(chuàng)建Python環(huán)境 使用以下命令創(chuàng)建一個(gè)Python 3.8環(huán)境: 使用以下命令激活Python環(huán)境:? 2.安裝gpu版本的torch、torchvision 2.1 下載對(duì)應(yīng)的torch、torchvision安裝包:

    2024年02月09日
    瀏覽(25)
  • mmdetection3d nuScenes (持續(xù)更新)

    本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 本文為專欄《python三維點(diǎn)云從基礎(chǔ)到深度學(xué)習(xí)》系列文章,地址為“https://blog.csdn.net/suiyingy/article/details/124017716”。 ????????Mmdetection3d集成了大量3D深度學(xué)習(xí)算法,其中很大一部分可以在智能駕駛nuScenes數(shù)據(jù)集上運(yùn)行。在算法

    2023年04月15日
    瀏覽(19)
  • win10 mmdetection3d環(huán)境搭建

    win10 mmdetection3d環(huán)境搭建

    官網(wǎng):mmdetection3d/README_zh-CN.md at master · open-mmlab/mmdetection3d · GitHub 安裝過(guò)程參照:win10 mmdetection3d 訓(xùn)練KITTI_樹和貓的博客-CSDN博客_pointnet訓(xùn)練kitti 官網(wǎng)安裝過(guò)程 3D目標(biāo)檢測(cè)框架綜述-知乎中描述了當(dāng)前3D目標(biāo)檢測(cè)的數(shù)據(jù)和模型狀況,為了能將數(shù)據(jù)和評(píng)價(jià)標(biāo)準(zhǔn)等統(tǒng)一,介紹了4個(gè)比

    2023年04月18日
    瀏覽(22)
  • 【MMDetection3D】MVXNet踩坑筆記

    【MMDetection3D】MVXNet踩坑筆記

    原文 代碼 MVXNet(CVPR2019) 最近許多關(guān)于3D target detection的工作都集中在設(shè)計(jì)能夠使用點(diǎn)云數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)架構(gòu)上。雖然這些方法表現(xiàn)出令人鼓舞的性能,但它們通?;趩我荒B(tài),無(wú)法利用其他模態(tài)(如攝像頭和激光雷達(dá))的信息。盡管一些方法融合了來(lái)自不同模式的數(shù)據(jù),這些方

    2024年01月18日
    瀏覽(44)
  • 新版mmdetection3d將3D bbox繪制到圖像

    新版mmdetection3d將3D bbox繪制到圖像

    使用 python mmdet3d/utils/collect_env.py 收集環(huán)境信息 以前寫過(guò)mmdetection3d中的可視化,但mmdetection3d更新后代碼已經(jīng)不適用了,正好我把我的工作全轉(zhuǎn)移到新版mmdetection3d上來(lái)了,因此重新寫了一下推理結(jié)果可視化。整體思路還是構(gòu)建模型、構(gòu)建數(shù)據(jù)、推理、繪制,下面分步講解 我用

    2024年04月15日
    瀏覽(25)
  • MMdetection3D學(xué)習(xí)系列(一)——環(huán)境配置安裝

    MMdetection3D學(xué)習(xí)系列(一)——環(huán)境配置安裝

    MMdetion3D是是mmlab在3d目標(biāo)檢測(cè)方面提供的相關(guān)檢測(cè)模型,可以實(shí)現(xiàn)點(diǎn)云、圖像或者多模態(tài)數(shù)據(jù)上的3D目標(biāo)檢測(cè)以及點(diǎn)云語(yǔ)義分割。 GitHub地址:https://github.com/open-mmlab/mmdetection3d/ 目前mmdetection3d 支持21種不同的算法,100多個(gè)預(yù)訓(xùn)練模型,7個(gè)數(shù)據(jù)集: mmdetection3D安裝比較簡(jiǎn)單,之前

    2024年02月01日
    瀏覽(19)
  • mmdetection3d系列--(1)安裝步驟(無(wú)坑版)

    mmdetection3d系列--(1)安裝步驟(無(wú)坑版)

    ? 最近在看一些基于點(diǎn)云3d目標(biāo)檢測(cè)的文章,需要復(fù)現(xiàn)甚至修改一些算法,就找到了mmlab開源的mmdetection3d目標(biāo)檢測(cè)框架,方便后續(xù)學(xué)習(xí)。 ??? 在安裝的時(shí)候遇到一點(diǎn)坑,比如環(huán)境問(wèn)題,安裝完能跑demo但是不能跑訓(xùn)練測(cè)試問(wèn)題等。在解決問(wèn)題后還是完成了安裝。在這里記錄一

    2024年02月02日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包