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

400-6166692

Apache Spark:用于大规模数据处理的统一分析引擎

分类:开源 时间:2023-02-23 08:15 浏览:735
概述
内容

概述

Spark 是用于大规模数据处理的统一分析引擎。它提供了 Scala、Java、Python 和 R 的高级 API,以及支持用于数据分析的通用计算图的优化引擎。它还支持一组丰富的高级工具,包括用于 SQL 和 DataFrames 的 Spark SQL、用于 pandas 工作负载的 Spark 上的 pandas API、用于机器学习的 MLlib、用于图形处理的 GraphX 以及用于流处理的 Structured Streaming。

构建Apache Spark

  • Ubuntu 16.04, 20.04, and macOS(CPU only)
  • CUDA 11.0
  • Python 3.7.7
  • PyTorch 1.6.0

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

    • 我们建议使用Anaconda通过运行以下命令创建一个名为captradedicated for this repository 的环境:

      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

    Training

    • 从下面的原始 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

    Training

    • 下载并解压训练数据

      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]

     
微信客服
返回顶部