Entrenamiento basado en contenedores de OpenPCdet

Entrenamiento basado en contenedores de OpenPCdet

1. Primero extraiga una imagen en ejecución

docker pull djiajun1206/pcdet:pytorch1.6

2. Crea un contenedor basado en la imagen

nvidia-docker run -it --name pcdet --privileged --shm-size=15G -v
 /etc/localtime:/etc/localtime:ro -v /tmp/.X11-unix:/tmp/.X11-unix
 -e DISPLAY=unix\$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE 
-v /home/user/data/:/data b478940ec7f6 /bin/bash

3. Tire del código git para compilar e instalar

clon de git https://github.com/open-mmlab/OpenPCDet.git

Ingrese al directorio principal, ejecute setup.py, las instrucciones de compilación son las siguientes:

cd OpenPCDet 
python setup.py develop

4. Crear datos de entrenamiento

Ingrese al directorio OpenPCDet en el contenedor, cree su propio conjunto de datos en el subdirectorio de datos, la nube de puntos debe estar en formato .npy y la etiqueta debe estar en formato .txt. El contenido de la etiqueta es el siguiente: punto central, largo, ancho y alto, ángulo de rumbo, nombre de la categoría

1.50 1.46 0.10 5.12 1.85 4.13 1.56 Vehicle
5.54 0.57 0.41 1.08 0.74 1.95 1.57 Pedestrian

La ubicación de ubicación de datos es la siguiente, el directorio ImageSets coloca los archivos divididos de entrenamiento y prueba

OpenPCDet
├── data
│   ├── custom
│   │   │── ImageSets
│   │   │   │── train.txt
│   │   │   │── val.txt
│   │   │── points
│   │   │   │── 000000.npy
│   │   │   │── 999999.npy
│   │   │── labels
│   │   │   │── 000000.txt
│   │   │   │── 999999.txt
├── pcdet
├── tools

5. Configurar parámetros de entrenamiento

(1) Herramientas/cfgs/dataset_configs/custom_dataset.yaml

Modifique principalmente el rango de la nube de puntos, la categoría de detección (si su categoría de conjunto de entrenamiento es ['Vehículo', 'Peatón', 'Ciclista'], no necesita modificarlo), nombre de datos de entrenamiento, tamaño de vóxel

DATASET: 'CustomDataset'
DATA_PATH: '../data/custom'

POINT_CLOUD_RANGE: [-75.2, -75.2, -2, 75.2, 75.2, 4]

MAP_CLASS_TO_KITTI: {
    'Vehicle': 'Car',
    'Pedestrian': 'Pedestrian',
    'Cyclist': 'Cyclist',
}

DATA_SPLIT: {
    'train': train,
    'test': val
}

INFO_PATH: {
    'train': [custom_infos_train.pkl],
    'test': [custom_infos_val.pkl],
}

POINT_FEATURE_ENCODING: {
    encoding_type: absolute_coordinates_encoding,
    used_feature_list: ['x', 'y', 'z', 'intensity'],
    src_feature_list: ['x', 'y', 'z', 'intensity'],
}

DATA_AUGMENTOR:
    DISABLE_AUG_LIST: ['placeholder']
    AUG_CONFIG_LIST:
        - NAME: gt_sampling
          USE_ROAD_PLANE: False
          DB_INFO_PATH:
              - custom_dbinfos_train.pkl
          PREPARE: {
             filter_by_min_points: ['Vehicle:5', 'Pedestrian:5', 'Cyclist:5'],
          }

          SAMPLE_GROUPS: ['Vehicle:20', 'Pedestrian:15', 'Cyclist:15']
          NUM_POINT_FEATURES: 4
          DATABASE_WITH_FAKELIDAR: False
          REMOVE_EXTRA_WIDTH: [0.0, 0.0, 0.0]
          LIMIT_WHOLE_SCENE: True

        - NAME: random_world_flip
          ALONG_AXIS_LIST: ['x', 'y']

        - NAME: random_world_rotation
          WORLD_ROT_ANGLE: [-0.78539816, 0.78539816]

        - NAME: random_world_scaling
          WORLD_SCALE_RANGE: [0.95, 1.05]

DATA_PROCESSOR:
    - NAME: mask_points_and_boxes_outside_range
      REMOVE_OUTSIDE_BOXES: True

    - NAME: shuffle_points
      SHUFFLE_ENABLED: {
        'train': True,
        'test': False
      }

    - NAME: transform_points_to_voxels
      VOXEL_SIZE: [0.1, 0.1, 0.15]
      MAX_POINTS_PER_VOXEL: 5
      MAX_NUMBER_OF_VOXELS: {
        'train': 150000,
        'test': 150000
      }

(2) Categorías de detección, las modificaciones correspondientes deben realizarse en pcdet/datasets/custom.custom_dataset.py

create_custom_infos(
    dataset_cfg=dataset_cfg,
    class_names=['Vehicle', 'Pedestrian', 'Cyclist'],
    data_path=ROOT_DIR / 'data' / 'custom',
    save_path=ROOT_DIR / 'data' / 'custom',
)

6. Crea un conjunto de datos de entrenamiento

El conjunto de datos personalizado se hace de la siguiente manera

python -m pcdet.datasets.custom.custom_dataset create_custom_infos tools/cfgs/dataset_configs/custom_dataset.yaml

Si desea utilizar la colección pública de KITT, puede ir al sitio web oficial para descargar los datos, o hay una dirección de disco de red en Internet, cree el siguiente directorio después de la descarga y extraiga los datos al directorio correspondiente:

root@04f4d304ce39:/data# mkdir OpenPCDet/data/kitti/training root@04f4d304ce39:/data# mkdir OpenPCDet/data/kitti/training/calib 
root@04f4d304ce39:/data# mkdir OpenPCDet/data/kitti/training/velodyne 
root@04f4d304ce39:/data# mkdir OpenPCDet/data/kitti/training/label_2 
root@04f4d304ce39:/data# mkdir OpenPCDet/data/kitti/training/image_2 

#解压 unzip velodyne_training_1.zip -d OpenPCDet/data/kitti/training/velodyne/ ....

hacer un conjunto de datos

python -m pcdet.datasets.kitti.kitti_dataset 
create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml

7. Empieza a entrenar

#CUDA_VISIBLE_DEVICES=0 python train.py --cfg_file ${CONFIG_FILE} 
CUDA_VISIBLE_DEVICES=1 python train.py --cfg_file ./cfgs/kitti_models/pointpillar.yaml

Si la biblioteca de convolución dispersa informa un error, reinstale spconv

git clone -b v1.2.1 https://github.com/djiajunustc/spconv spconv --recursive 
cd spconv 
python setup.py bdist_wheel 
cd ./dist 
pip install *.whl

empezar a entrenar

2022-12-08 09:36:45,180   INFO  **********************
Start training cfgs/kitti_models/pointpillar
(default)**********************
epochs:   0%|                                                                                                                                           | 0/80 [00:00<?, ?it/s2022-12-08 09:36:49,308   
INFO  epoch: 0/80, acc_iter=1, cur_iter=0/928, batch_size=4, time_cost(epoch): 00:03/49:01, time_cost(all): 00:04/65:22:11, loss=3.2621874809265137, d_time=1.18(1.18), f_time=1.99(1.99), b_time=3.17(3.17), lr=0.0002999999999999999
2022-12-08 09:37:13,825   
INFO  epoch: 0/80, acc_iter=50, cur_iter=49/928, batch_size=4, time_cost(epoch): 00:27/08:06, time_cost(all): 00:28/11:24:42, loss=1.8049968481063843, d_time=0.00(0.03), f_time=0.38(0.53), b_time=0.38(0.55), lr=0.00030001813839255174

8, prueba visual

python demo.py --cfg_file ./cfgs/kitti_models/pointpillar.yaml --data_path kitti/testing/velodyne/ --ckpt pointpillar/default/ckpt/checkpoint_epoch_80.pth

Pregunta 1:

root@04f4d304ce39:/data/wyf/OpenPCDet# pip install torch==1.9 https://pypi.tuna.tsinghua.edu.cn/simple Collecting https://pypi.tuna.tsinghua.edu.cn/simple Downloading https://pypi.tuna.tsinghua.edu.cn/simple (24.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.7/24.7 MB 52.7 kB/s eta 0:00:00 

ERROR: Cannot unpack file /tmp/pip-unpack-cp2uotjr/simple.html 
(downloaded from /tmp/pip-req-build-b3e8cmaa, content-type: text/html);
 cannot detect archive format ERROR: Cannot determine archive format 
of /tmp/pip-req-build-b3e8cmaa 
root@04f4d304ce39:/data/wyf/OpenPCDet
root@04f4d304ce39:/data/wyf/OpenPCDet

# Solución:

pip install -i https://pypi.douban.com/simple --trusted-host pypi.douban.com torch==1.9

Pregunta 2:

File "../pcdet/datasets/augmentor/database_sampler.py", line 498, in call

data_dict, sampled_gt_boxes, total_valid_sampled_dict, sampled_mv_height, sampled_gt_boxes2d

File "../pcdet/datasets/augmentor/database_sampler.py", line 372, in add_sampled_boxes_to_scene

sampled_gt_boxes, data_dict['road_plane'], data_dict['calib']

KeyError: 'road_plane'

Establezca USE_ROAD_PLANE en False en la sección de aumento de datos del archivo de configuración

 DATA_AUGMENTOR:
        DISABLE_AUG_LIST: ['placeholder']
        AUG_CONFIG_LIST:
            - NAME: gt_sampling
              USE_ROAD_PLANE: False
              DB_INFO_PATH:
                  - kitti_dbinfos_train.pkl
              PREPARE: {
                 filter_by_min_points: ['Car:5', 'Pedestrian:5', 'Cyclist:5'],
                 filter_by_difficulty: [-1],
              }

Pregunta 3:

nvcc fatal: la arquitectura gpu no compatible 'compute_80' es que la potencia informática de la tarjeta gráfica no coincide con la versión de pytorch, actualice pytorch

 

Supongo que te gusta

Origin blog.csdn.net/qq_34106574/article/details/128312128
Recomendado
Clasificación