元经纪 - 元宇宙与人工智能领域相关产品与服务一站式采购平台

400-6166692

CAPTRA:追踪物体的3D位置标注点

分类:开源 时间:2023-03-07 08:05 浏览:793
概述
内容

概述

物体追踪相信大家已经不会陌生,但普通的物体追踪只能标注出物体所在的坐标。 但今天介绍的CAPTRA可就厉害了,追踪物体的3D位置标注点!   安装环境:
  • 我们的代码已经过测试
    • Ubuntu 16.04, 20.04, and macOS(CPU only)
    • CUDA 11.0
    • Python 3.7.7
    • PyTorch 1.6.0
    • 我们建议使用Anaconda通过运行以下命令创建一个名为captradedicated for this repository 的环境:

      [hidecontent type="logged" desc="隐藏内容:登录后可查看"]

        • conda create -n captra python=3.7
          conda activate captra
        • 为代码、数据和实验检查点创建一个目录。

          mkdir captra && cd captra
        • 克隆存储库

          git clone https://github.com/HalfSummer11/CAPTRA.git
          cd CAPTRA
        • 安装依赖项。

          pip install -r requirements.txt
        • 为 PointNet++ 主干编译 CUDA 代码。

          cd network/models/pointnet_lib
          python setup.py install

        数据集

        • 为下面的所有数据集创建一个目录captra

          mkdir data && cd data
          • 如果将它放在不同的位置,请确保指向您的数据basepath集。CAPTRA/configs/obj_config/obj_info_*.yml

        NOCS-REAL275

        mkdir nocs_data && cd nocs_data

        测试

        • 下载并解压nocs_model_corners.tar,其中保存了标准化对象模型的 3D 边界框。

          wget http://download.cs.stanford.edu/orion/captra/nocs_model_corners.tar
          tar -xzvf nocs_real_corners.tar
        • 创建nocs_full以保存原始 NOCS 数据。从原始NOCS数据集中下载并解压“Real Dataset - Test” ,其中包含6个真实测试轨迹。

          mkdir nocs_full && cd nocs_full
          wget http://download.cs.stanford.edu/orion/nocs/real_test.zip
          unzip real_test.zip
        • 生成并运行预处理脚本

          cd CAPTRA/datasets/nocs_data/preproc_nocs
          # generate the script for data preprocessing
          # parallel & num_proc specifies the number of parallel processes in the following procedure
          python generate_all.py --data_path ../../../../data/nocs_data --data_type=test_only \
          			 --parallel --num_proc=10 > nocs_preproc.sh 
          # the actual data preprocessing
          bash nocs_preproc.sh
        • 经过上述步骤后,该文件夹应该看起来像File Structure - Dataset Folder Structure

        火车

        • 从下面的原始 NOCS 数据集中下载并解压“CAMERA Dataset - Training/Test”和“Real Dataset - Training ”nocs_data/nocs_full

          # current path relative to project root (captra): data/nocs_data/nocs_full
          wget http://download.cs.stanford.edu/orion/nocs/camera_train.zip
          unzip camera_train.zip
          wget http://download.cs.stanford.edu/orion/nocs/camera_val25K.zip
          unzip camera_val25K.zip
          wget http://download.cs.stanford.edu/orion/nocs/real_train.zip
          unzip real_train.zip
          • 到此为止,nocs_full结构应该如下。请注意,深度图像 (*_depth.png​​ ) 仅包含合成前景对象。出于我们的目的,我们需要一个包含合成前景和真实背景的完整深度图像。

            nocs_full
            ├── real_test
            ├── real_train 
            ├── train	
            │   ├── 00000
            │   │   ├── 0000_color.png, 0000_coord.png, 0000_depth.png, 0000_mask.png, 0000_meta.txt
            │   │   ├── 0001_color.png, ...
            │   │   └── ...
            │   ├── 00001
            │   └── ...
            └── val				# same structure as train
        • 从原始 NOCS 数据集中下载并解压“CAMERA Dataset - Composed_depths ” nocs_data

          cd ../ # current path relative to project root (captra): data/nocs_data
          wget http://download.cs.stanford.edu/orion/nocs/camera_composed_depth.zip
          unzip camera_composed_depth.zip

          这将生成一个名为 的文件夹camera_full_depths,其结构如下。

          camera_full_depths
          ├── train	
          │   ├── 00000
          │   │   ├── 0000_composed.png # depth image containing both synthetic foreground objects 
          │   │   │		        # and the real background
          │   │   ├── 0001_composed.png # rendered object normalized coordinates
          │   │   └── ...
          │   ├── 00001
          │   └── ...
          └── val				# same structure as train

          然后复制camera_full_depths合并nocs_full.

          # merge camera_full_depth/train/????? to nocs_full/train/?????
          rsync -arv camera_full_depths/ nocs_full/
          rm -r camera_full_depths
        • 生成并运行预处理脚本

          cd CAPTRA/datasets/nocs_data/preproc_nocs
          python generate_all.py --data_path ../../../../data/nocs_data --data_type=all --parallel --num_proc=10 > nocs_preproc_all.sh # generate the script for data preprocessing
          # parallel & num_proc specifies the number of parallel processes in the following procedure
          bash nocs_preproc_all.sh # the actual data preprocessing
        • 经过上述步骤后,文件夹应该看起来像[文件结构 - 数据集文件夹结构](#File Structure)。

        SAPIEN 合成铰接对象数据集

        mkdir sapien_data && cd sapien_data

        测试

        • 下载并解压对象 URDF 模型测试轨迹

          wget http://download.cs.stanford.edu/orion/captra/sapien_urdf.tar
          wget http://download.cs.stanford.edu/orion/captra/sapien_test.tar
          tar -xzvf sapien_urdf.tar # urdf
          tar -xzvf sapien_test.tar # render_seq

        火车

        • 下载并解压训练数据

          wget http://download.cs.stanford.edu/orion/captra/sapien_train.tar
          tar -xzvf sapien_train.tar # render

        测试与评估

        下载预训练模型检查点

        • runs在下面创建一个文件夹captra用于实验

          mkdir runs && cd runs
        • 下载我们的预训练模型检查点

        • 解压它们runs

          tar -xzvf nocs_ckpt.tar

          哪个应该给

          runs
          ├── 1_bottle_rot 	# RotationNet for the bottle category
          ├── 1_bottle_coord 	# CoordinateNet for the bottle category
          ├── 2_bowl_rot 
          └── ...

        测试

        • 要为某个类别生成姿势预测,请运行相应的脚本CAPTRA/scripts/track(没有进一步说明,所有脚本都从运行CAPTRA),例如,对于来自 NOCS-REAL275 的瓶子类别,

          bash scripts/track/nocs/1_bottle.sh
        • 预测的姿势将保存在实验文件夹下1_bottle_rot(参见文件结构 - 实验文件夹结构)。

        • 要测试 SAPIEN 中关节物体的跟踪速度,请务必--batch_size=1在脚本中进行设置。您可以使用--dataset_length=500to avoid running through the whole test set。

        评估

        • 要评估上一步中产生的姿势预测,请取消注释并运行中的相应行CAPTRA/scripts/eval.sh,例如,对于来自 NOCS-REAL275 的瓶子类别,相应行是

          python misc/eval/eval.py --config config_track.yml --obj_config obj_info_nocs.yml --obj_category=1 --experiment_dir=../runs/1_bottle_rot

        可视化

        • 要将姿势预测可视化为 3D 边界框,请运行 中的相应行CAPTRA/scripts/visualize.sh,例如对于 NOCS-REAL275,运行以下命令将为所有类别生成边界框。

          python misc/visualize/visualize_tracking_nocs.py --img_path ../data/nocs_data/nocs_full/real_test --exp_path ../runs --output_path ../nocs_viz --save_fig

        训练

        • 要为特定类别训练 CoordinateNet 和 RotationNet,请运行 中的相应脚本CAPTRA/scripts/train,例如对于来自 NOCS-REAL275 的瓶子类别,脚本可以在 中找到CAPTRA/scripts/train/nocs/1_bottle.sh

          # RotationNet
          python network/train.py --config=config_rotnet.yml --obj_config=obj_info_nocs.yml \
                                  --pose_perturb/r=5.0 --pose_perturb/t=0.03 --pose_perturb/s=0.02 \
                                  --batch_size=12 \
                                  --obj_category=1 \
                                  --experiment_dir=../runs/1_bottle_rot_new \
                                  --use_val=real_test \  
                                  --num_workers=2
          # CoordinateNet
          python network/train.py --config=config_coordnet.yml --obj_config=obj_info_nocs.yml \
                                  --pose_perturb/r=5.0 --pose_perturb/t=0.03 --pose_perturb/s=0.02 \
                                  --batch_size=12 \
                                  --obj_category=1 \
                                  --experiment_dir=../runs/1_bottle_coord_new \
                                  --use_val=real_test \
                                  --num_workers=2
        • 输出日志和检查点将分别保存在1_bottle_rot_new/log1_bottle_rot_new/ckpt。(参见 [文件结构 - 实验文件夹结构](#File Structure))。

        • 对于 NOCS 数据集,在使用合成数据训练模型后,我们可以使用真实训练数据进一步微调它们。为此,只需在训练脚本中替换train.py为。train_nocs_finetune.py使用--syn_n--real_only调整每个时期使用的真实/合成训练数据的比例。

        文件结构

        总体结构

        工作目录应按如下方式组织。

        captra
        ├── CAPTRA		# this repository
        ├── data			# datasets
        │   ├── nocs_data		# NOCS-REAL275
        │   └── sapien_data	# synthetic dataset of articulated objects from SAPIEN
        └── runs			# folders for individual experiments
            ├── 1_bottle_coord
            ├── 1_bottle_rot
            └── ...

      [/hidecontent]

       
 
微信客服
返回顶部