Pointcepte هي قاعدة كود قوية ومرنة لأبحاث تصور السحابة النقطة. إنه أيضًا تطبيق رسمي للورقة التالية:
محول النقطة V3: أبسط وأسرع وأقوى
Xiaoyang Wu ، Li Jiang ، Peng-Shuai Wang ، Zhijian Liu ، Xihui Liu ، Yu Qiao ، Wanli Ouyang ، Tong He ، Hengshuang Zhao
مؤتمر IEEE حول رؤية الكمبيوتر والتعرف على الأنماط ( CVPR ) 2024 - عن طريق الفم
[العمود الفقري] [PTV3] - [ARXIV] [BIB] [Project] → هنا
OA-CNNS: CNNs متناثرة في OA-Ad-Ad-Addract
Bohao Peng ، Xiaoyang Wu ، Li Jiang ، Yukang Chen ، Hengshuang Zhao ، Zhuotao Tian ، Jiaya Jia
مؤتمر IEEE حول رؤية الكمبيوتر والتعرف على الأنماط ( CVPR ) 2024
[العمود الفقري] [oa -cnns] - [arxiv] [bib] → هنا
نحو التعلم التمثيل ثلاثي الأبعاد على نطاق واسع مع تدريب موجه متعدد النقاط
Xiaoyang Wu ، Zhuotao Tian ، Xin Wen ، Bohao Peng ، Xihui Liu ، Kaicheng Yu ، Hengshuang Zhao
مؤتمر IEEE حول رؤية الكمبيوتر والتعرف على الأنماط ( CVPR ) 2024
[presrain] [ppt] - [arxiv] [bib] → هنا
التباين في المشهد المقنعة: إطار قابل للتطوير لتعلم التمثيل ثلاثي الأبعاد غير الخاضع للإشراف
Xiaoyang Wu ، Xin Wen ، Xihui Liu ، Hengshuang Zhao
مؤتمر IEEE حول رؤية الكمبيوتر والتعرف على الأنماط ( CVPR ) 2023
[presrain] [MSC] - [Arxiv] [bib] → هنا
مصنف التعلم السياق للتجزئة الدلالية (الجزء ثلاثي الأبعاد)
Zhuotao Tian ، Jiequan Cui ، Li Jiang ، Xiaojuan Qi ، Xin Lai ، Yixin Chen ، Shu Liu ، Jiaya Jia
مؤتمر AAAI للذكاء الاصطناعي ( AAAI ) 2023 - عن طريق الفم
[Semseg] [CAC] - [Arxiv] [Bib] [2d Part] → هنا
Point Transformer V2: انتباه المتجه المجمعة وتجميع القسم
Xiaoyang Wu ، Yixing Lao ، Li Jiang ، Xihui Liu ، Hengshuang Zhao
مؤتمر حول أنظمة معالجة المعلومات العصبية ( Neups ) 2022
[العمود الفقري] [PTV2] - [arxiv] [bib] → هنا
محول النقطة
Hengshuang Zhao ، Li Jiang ، Jiaya Jia ، Philip Torr ، Vladlen Koltun
مؤتمر IEEE الدولي حول رؤية الكمبيوتر ( ICCV ) 2021 - عن طريق الفم
[العمود الفقري] [PTV1] - [Arxiv] [Bib] → هنا
بالإضافة إلى ذلك ، يدمج Pointception العمل الممتاز التالي (يحتوي أعلاه):
العمود الفقري: Minkunet (هنا) ، Spunet (هنا) ، SPVCNN (هنا) ، OACNNS (هنا) ، PTV1 (هنا) ، PTV2 (هنا) ، PTV3 (هنا) ، طبقية (هنا) ، Octformer (هنا) ، SWIN3D (هنا) ؛
التجزئة الدلالية: MIX3D (هنا) ، CAC (هنا) ؛
تجزئة مثيل: pointgroup (هنا) ؛
ما قبل التدريب: بوينت مونترست (هنا) ، سياقات المشهد التباين (هنا) ، تباين المشهد المقنعة (هنا) ، تدريب موجه النقطة (هنا) ؛
مجموعات البيانات: Scannet (هنا) ، Scannet200 (هنا) ، Scannet ++ (هنا) ، S3dis (هنا) ، MatterPort3D (هنا) ، Arkitscene ، structured3d (هنا) ، semantickitti (هنا) ، nuscenes (هنا) ، modelnet40 (هنا) ، paymo (هنا).
إذا وجدت نقطة مفيدة لبحثك ، فيرجى الاستشهاد بعملنا كتشجيع. (੭ˊ꒳ˋ) ੭✧
@misc{pointcept2023,
title={Pointcept: A Codebase for Point Cloud Perception Research},
author={Pointcept Contributors},
howpublished = {url{https://github.com/Pointcept/Pointcept}},
year={2023}
}
conda create -n pointcept python=3.8 -y
conda activate pointcept
conda install ninja -y
# Choose version you want here: https://pytorch.org/get-started/previous-versions/
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch -y
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install torch-geometric
# spconv (SparseUNet)
# refer https://github.com/traveller59/spconv
pip install spconv-cu113
# PPT (clip)
pip install ftfy regex tqdm
pip install git+https://github.com/openai/CLIP.git
# PTv1 & PTv2 or precise eval
cd libs/pointops
# usual
python setup.py install
# docker & multi GPU arch
TORCH_CUDA_ARCH_LIST= " ARCH LIST " python setup.py install
# e.g. 7.5: RTX 3000; 8.0: a100 More available in: https://developer.nvidia.com/cuda-gpus
TORCH_CUDA_ARCH_LIST= " 7.5 8.0 " python setup.py install
cd ../..
# Open3D (visualization, optional)
pip install open3d تدعم المعالجة المسبقة تجزئة الدلالي والموافقات لكل من ScanNet20 و ScanNet200 و ScanNet Data Efficient .
قم بتنزيل مجموعة بيانات Scannet V2.
قم بتشغيل رمز المعالجة المسبقة للقرص الخام على النحو التالي:
# RAW_SCANNET_DIR: the directory of downloaded ScanNet v2 raw dataset.
# PROCESSED_SCANNET_DIR: the directory of the processed ScanNet dataset (output dir).
python pointcept/datasets/preprocessing/scannet/preprocess_scannet.py --dataset_root ${RAW_SCANNET_DIR} --output_root ${PROCESSED_SCANNET_DIR}(اختياري) قم بتنزيل ملفات Scannet Data فعالة:
# download-scannet.py is the official download script
# or follow instructions here: https://kaldir.vc.in.tum.de/scannet_benchmark/data_efficient/documentation#download
python download-scannet.py --data_efficient -o ${RAW_SCANNET_DIR}
# unzip downloads
cd ${RAW_SCANNET_DIR} /tasks
unzip limited-annotation-points.zip
unzip limited-reconstruction-scenes.zip
# copy files to processed dataset folder
mkdir ${PROCESSED_SCANNET_DIR} /tasks
cp -r ${RAW_SCANNET_DIR} /tasks/points ${PROCESSED_SCANNET_DIR} /tasks
cp -r ${RAW_SCANNET_DIR} /tasks/scenes ${PROCESSED_SCANNET_DIR} /tasks(بديل) يمكن تنزيل بياناتنا قبل المعالجة مباشرة [هنا] ، يرجى الموافقة على الترخيص الرسمي قبل تنزيله.
مجموعة البيانات التي تتم معالجتها إلى قاعدة البيانات:
# PROCESSED_SCANNET_DIR: the directory of the processed ScanNet dataset.
mkdir data
ln -s ${PROCESSED_SCANNET_DIR} ${CODEBASE_DIR} /data/scannet # RAW_SCANNETPP_DIR: the directory of downloaded ScanNet++ raw dataset.
# PROCESSED_SCANNETPP_DIR: the directory of the processed ScanNet++ dataset (output dir).
# NUM_WORKERS: the number of workers for parallel preprocessing.
python pointcept/datasets/preprocessing/scannetpp/preprocess_scannetpp.py --dataset_root ${RAW_SCANNETPP_DIR} --output_root ${PROCESSED_SCANNETPP_DIR} --num_workers ${NUM_WORKERS} # PROCESSED_SCANNETPP_DIR: the directory of the processed ScanNet++ dataset (output dir).
# NUM_WORKERS: the number of workers for parallel preprocessing.
python pointcept/datasets/preprocessing/sampling_chunking_data.py --dataset_root ${PROCESSED_SCANNETPP_DIR} --grid_size 0.01 --chunk_range 6 6 --chunk_stride 3 3 --split train --num_workers ${NUM_WORKERS}
python pointcept/datasets/preprocessing/sampling_chunking_data.py --dataset_root ${PROCESSED_SCANNETPP_DIR} --grid_size 0.01 --chunk_range 6 6 --chunk_stride 3 3 --split val --num_workers ${NUM_WORKERS} # PROCESSED_SCANNETPP_DIR: the directory of the processed ScanNet dataset.
mkdir data
ln -s ${PROCESSED_SCANNETPP_DIR} ${CODEBASE_DIR} /data/scannetpp قم بتنزيل بيانات S3DIS عن طريق ملء نموذج Google هذا. قم بتنزيل ملف Stanford3dDataset_v1.2.zip وفك ضغطه.
إصلاح خطأ في Area_5/office_19/Annotations/ceiling 323474 (103.0�0000 => 103.000000).
(اختياري) قم بتنزيل مجموعة بيانات 2D-3D S3DIS الكاملة (بدون XYZ) من هنا لتحليلها العادي.
قم بتشغيل رمز المعالجة المسبقة لـ S3DIS على النحو التالي:
# S3DIS_DIR: the directory of downloaded Stanford3dDataset_v1.2 dataset.
# RAW_S3DIS_DIR: the directory of Stanford2d3dDataset_noXYZ dataset. (optional, for parsing normal)
# PROCESSED_S3DIS_DIR: the directory of processed S3DIS dataset (output dir).
# S3DIS without aligned angle
python pointcept/datasets/preprocessing/s3dis/preprocess_s3dis.py --dataset_root ${S3DIS_DIR} --output_root ${PROCESSED_S3DIS_DIR}
# S3DIS with aligned angle
python pointcept/datasets/preprocessing/s3dis/preprocess_s3dis.py --dataset_root ${S3DIS_DIR} --output_root ${PROCESSED_S3DIS_DIR} --align_angle
# S3DIS with normal vector (recommended, normal is helpful)
python pointcept/datasets/preprocessing/s3dis/preprocess_s3dis.py --dataset_root ${S3DIS_DIR} --output_root ${PROCESSED_S3DIS_DIR} --raw_root ${RAW_S3DIS_DIR} --parse_normal
python pointcept/datasets/preprocessing/s3dis/preprocess_s3dis.py --dataset_root ${S3DIS_DIR} --output_root ${PROCESSED_S3DIS_DIR} --raw_root ${RAW_S3DIS_DIR} --align_angle --parse_normal(بديل) يمكن أيضًا تنزيل بياناتنا السابقة للمعالجة [هنا] (مع المتجه العادي والزاوية المحاذاة) ، يرجى الاتفاق على الترخيص الرسمي قبل تنزيله.
ارتباط مجموعة البيانات المعالجة إلى CodeBase.
# PROCESSED_S3DIS_DIR: the directory of processed S3DIS dataset.
mkdir data
ln -s ${PROCESSED_S3DIS_DIR} ${CODEBASE_DIR} /data/s3dis${STRUCT3D_DIR} ). # STRUCT3D_DIR: the directory of downloaded Structured3D dataset.
# PROCESSED_STRUCT3D_DIR: the directory of processed Structured3D dataset (output dir).
# NUM_WORKERS: Number for workers for preprocessing, default same as cpu count (might OOM).
export PYTHONPATH=./
python pointcept/datasets/preprocessing/structured3d/preprocess_structured3d.py --dataset_root ${STRUCT3D_DIR} --output_root ${PROCESSED_STRUCT3D_DIR} --num_workers ${NUM_WORKERS} --grid_size 0.01 --fuse_prsp --fuse_panoبعد تعليمات SWIN3D ، نحتفظ بـ 25 فئة بترددات تزيد عن 0.001 ، من بين الفئة الأربعين الأصلية.
(بديل) يمكن أيضًا تنزيل بيانات المعالجة المسبقة الخاصة بنا [هنا] (مع وجهات نظر المنظور و Panorama View ، 471.7g بعد فك الارتباط) ، يرجى الاتفاق على الترخيص الرسمي قبل تنزيله.
ارتباط مجموعة البيانات المعالجة إلى CodeBase.
# PROCESSED_STRUCT3D_DIR: the directory of processed Structured3D dataset (output dir).
mkdir data
ln -s ${PROCESSED_STRUCT3D_DIR} ${CODEBASE_DIR} /data/structured3d # download-mp.py is the official download script
# MATTERPORT3D_DIR: the directory of downloaded Matterport3D dataset.
python download-mp.py -o {MATTERPORT3D_DIR} --type region_segmentations # MATTERPORT3D_DIR: the directory of downloaded Matterport3D dataset.
python pointcept/datasets/preprocessing/matterport3d/unzip_matterport3d_region_segmentation.py --dataset_root {MATTERPORT3D_DIR} # MATTERPORT3D_DIR: the directory of downloaded Matterport3D dataset.
# PROCESSED_MATTERPORT3D_DIR: the directory of processed Matterport3D dataset (output dir).
# NUM_WORKERS: the number of workers for this preprocessing.
python pointcept/datasets/preprocessing/matterport3d/preprocess_matterport3d_mesh.py --dataset_root ${MATTERPORT3D_DIR} --output_root ${PROCESSED_MATTERPORT3D_DIR} --num_workers ${NUM_WORKERS} # PROCESSED_MATTERPORT3D_DIR: the directory of processed Matterport3D dataset (output dir).
mkdir data
ln -s ${PROCESSED_MATTERPORT3D_DIR} ${CODEBASE_DIR} /data/matterport3dبعد تعليمات OpenRooms ، قمنا بإعادة تجديد فئات MatterPort3D إلى فئة Scannet 20 الدلالية مع إضافة فئة السقف.
# SEMANTIC_KITTI_DIR: the directory of SemanticKITTI dataset.
# |- SEMANTIC_KITTI_DIR
# |- dataset
# |- sequences
# |- 00
# |- 01
# |- ...
mkdir -p data
ln -s ${SEMANTIC_KITTI_DIR} ${CODEBASE_DIR} /data/semantic_kittiقم بتنزيل مجموعة بيانات nuscene الرسمية (مع تجزئة lidar) وقم بتنظيم الملفات التي تم تنزيلها على النحو التالي:
NUSCENES_DIR
│── samples
│── sweeps
│── lidarseg
...
│── v1.0-trainval
│── v1.0-testقم بتشغيل رمز المعالجة المسبقة للمعلومات (تم تعديل
# NUSCENES_DIR: the directory of downloaded nuScenes dataset.
# PROCESSED_NUSCENES_DIR: the directory of processed nuScenes dataset (output dir).
# MAX_SWEEPS: Max number of sweeps. Default: 10.
pip install nuscenes-devkit pyquaternion
python pointcept/datasets/preprocessing/nuscenes/preprocess_nuscenes_info.py --dataset_root ${NUSCENES_DIR} --output_root ${PROCESSED_NUSCENES_DIR} --max_sweeps ${MAX_SWEEPS} --with_camera(بديل) يمكن أيضًا تنزيل بيانات معلومات Nuscenes الخاصة بنا [هنا] (المعلومات المعالجة فقط ، لا تزال بحاجة إلى تنزيل مجموعة البيانات الخام والربط إلى المجلد) ، يرجى الموافقة على الترخيص الرسمي قبل تنزيله.
ربط مجموعة بيانات البيانات الخام إلى مجلد مجموعة بيانات nuscens
# NUSCENES_DIR: the directory of downloaded nuScenes dataset.
# PROCESSED_NUSCENES_DIR: the directory of processed nuScenes dataset (output dir).
ln -s ${NUSCENES_DIR} {PROCESSED_NUSCENES_DIR}/rawثم يتم تنظيم مجلد Nuscenes المعالج على النحو التالي:
nuscene
| ── raw
│── samples
│── sweeps
│── lidarseg
...
│── v1.0-trainval
│── v1.0-test
| ── infoارتباط مجموعة البيانات المعالجة إلى CodeBase.
# PROCESSED_NUSCENES_DIR: the directory of processed nuScenes dataset (output dir).
mkdir data
ln -s ${PROCESSED_NUSCENES_DIR} ${CODEBASE_DIR} /data/nuscenesقم بتنزيل مجموعة بيانات Waymo الرسمية (v1.4.3) وتنظيم الملفات التي تم تنزيلها على النحو التالي:
WAYMO_RAW_DIR
│── training
│── validation
│── testingتثبيت الاعتماد التالي:
# If shows "No matching distribution found", download whl directly from Pypi and install the package.
conda create -n waymo python=3.10 -y
conda activate waymo
pip install waymo-open-dataset-tf-2-12-0قم بتشغيل رمز المعالجة المسبقة على النحو التالي:
# WAYMO_DIR: the directory of the downloaded Waymo dataset.
# PROCESSED_WAYMO_DIR: the directory of the processed Waymo dataset (output dir).
# NUM_WORKERS: num workers for preprocessing
python pointcept/datasets/preprocessing/waymo/preprocess_waymo.py --dataset_root ${WAYMO_DIR} --output_root ${PROCESSED_WAYMO_DIR} --splits training validation --num_workers ${NUM_WORKERS}ارتباط مجموعة البيانات المعالجة إلى قاعدة الشفرة.
# PROCESSED_WAYMO_DIR: the directory of the processed Waymo dataset (output dir).
mkdir data
ln -s ${PROCESSED_WAYMO_DIR} ${CODEBASE_DIR} /data/waymomkdir -p data
ln -s ${MODELNET_DIR} ${CODEBASE_DIR} /data/modelnet40_normal_resampled تدريب من الصفر. تعتمد معالجة التدريب على التكوينات في مجلد configs . سيقوم البرنامج النصي التدريبي بإنشاء مجلد تجربة في مجلد exp والرمز الأساسي للنسخ الاحتياطي في مجلد التجربة. سيتم أيضًا حفظ تكوين التدريب ، السجل ، Tensorboard ، ونقاط التفتيش في مجلد التجربة أثناء عملية التدريب.
export CUDA_VISIBLE_DEVICES= ${CUDA_VISIBLE_DEVICES}
# Script (Recommended)
sh scripts/train.sh -p ${INTERPRETER_PATH} -g ${NUM_GPU} -d ${DATASET_NAME} -c ${CONFIG_NAME} -n ${EXP_NAME}
# Direct
export PYTHONPATH=./
python tools/train.py --config-file ${CONFIG_PATH} --num-gpus ${NUM_GPU} --options save_path= ${SAVE_PATH}على سبيل المثال:
# By script (Recommended)
# -p is default set as python and can be ignored
sh scripts/train.sh -p python -d scannet -c semseg-pt-v2m2-0-base -n semseg-pt-v2m2-0-base
# Direct
export PYTHONPATH=./
python tools/train.py --config-file configs/scannet/semseg-pt-v2m2-0-base.py --options save_path=exp/scannet/semseg-pt-v2m2-0-baseاستئناف التدريب من نقطة التفتيش. إذا تمت مقاطعة عملية التدريب عن طريق الصدفة ، يمكن للنص التالي استئناف التدريب من نقطة تفتيش معينة.
export CUDA_VISIBLE_DEVICES= ${CUDA_VISIBLE_DEVICES}
# Script (Recommended)
# simply add "-r true"
sh scripts/train.sh -p ${INTERPRETER_PATH} -g ${NUM_GPU} -d ${DATASET_NAME} -c ${CONFIG_NAME} -n ${EXP_NAME} -r true
# Direct
export PYTHONPATH=./
python tools/train.py --config-file ${CONFIG_PATH} --num-gpus ${NUM_GPU} --options save_path= ${SAVE_PATH} resume=True weight= ${CHECKPOINT_PATH}أثناء التدريب ، يتم إجراء تقييم النموذج على السحب النقطية بعد أخذ عينات الشبكة (فوكسل) ، مما يوفر تقييمًا أوليًا لأداء النموذج. ومع ذلك ، للحصول على نتائج تقييم دقيقة ، فإن الاختبار ضروري . تتضمن عملية الاختبار أخذ عينات فرعية من السحابة الكثيفة في تسلسل من السحب النقطية الفوكيلية ، مما يضمن تغطية شاملة لجميع النقاط. ثم يتم التنبؤ بهذه النتائج الفرعية وجمعها لتشكيل تنبؤ كامل لسحابة النقطة بأكملها. يؤدي هذا النهج إلى ارتفاع نتائج التقييم مقارنةً ببساطة بتخطيط/تشكيل التنبؤ. بالإضافة إلى ذلك ، يدعم رمز الاختبار الخاص بنا اختبار TTA (تكبير وقت الاختبار) ، مما يعزز زيادة استقرار أداء التقييم.
# By script (Based on experiment folder created by training script)
sh scripts/test.sh -p ${INTERPRETER_PATH} -g ${NUM_GPU} -d ${DATASET_NAME} -n ${EXP_NAME} -w ${CHECKPOINT_NAME}
# Direct
export PYTHONPATH=./
python tools/test.py --config-file ${CONFIG_PATH} --num-gpus ${NUM_GPU} --options save_path= ${SAVE_PATH} weight= ${CHECKPOINT_PATH}على سبيل المثال:
# By script (Based on experiment folder created by training script)
# -p is default set as python and can be ignored
# -w is default set as model_best and can be ignored
sh scripts/test.sh -p python -d scannet -n semseg-pt-v2m2-0-base -w model_best
# Direct
export PYTHONPATH=./
python tools/test.py --config-file configs/scannet/semseg-pt-v2m2-0-base.py --options save_path=exp/scannet/semseg-pt-v2m2-0-base weight=exp/scannet/semseg-pt-v2m2-0-base/model/model_best.pth يمكن تعطيل TTA عن طريق استبدال data.test.test_cfg.aug_transform = [...] مع:
data = dict (
train = dict (...),
val = dict (...),
test = dict (
...,
test_cfg = dict (
...,
aug_transform = [
[ dict ( type = "RandomRotateTargetAngle" , angle = [ 0 ], axis = "z" , center = [ 0 , 0 , 0 ], p = 1 )]
]
)
)
) Offset هي فاصل السحب في بيانات الدُفعات ، وهو مشابه لمفهوم Batch في PYG. التوضيح المرئي للدُفعات والإزاحة هو كما يلي:
يوفر Pointcecept SparseUNet تنفذه SpConv و MinkowskiEngine . يوصى بإصدار SPConv نظرًا لأن SPConv سهل التثبيت وأسرع من MinkowskiEngine. وفي الوقت نفسه ، يتم تطبيق SPConv أيضًا على نطاق واسع في الإدراك في الهواء الطلق.
تم إعادة كتابة إصدار SparseUNet في قاعدة البيانات بالكامل من إصدار MinkowskiEngine ، مثال على ذلك النص النصي كما يلي:
# ScanNet val
sh scripts/train.sh -g 4 -d scannet -c semseg-spunet-v1m1-0-base -n semseg-spunet-v1m1-0-base
# ScanNet200
sh scripts/train.sh -g 4 -d scannet200 -c semseg-spunet-v1m1-0-base -n semseg-spunet-v1m1-0-base
# S3DIS
sh scripts/train.sh -g 4 -d s3dis -c semseg-spunet-v1m1-0-base -n semseg-spunet-v1m1-0-base
# S3DIS (with normal)
sh scripts/train.sh -g 4 -d s3dis -c semseg-spunet-v1m1-0-cn-base -n semseg-spunet-v1m1-0-cn-base
# SemanticKITTI
sh scripts/train.sh -g 4 -d semantic_kitti -c semseg-spunet-v1m1-0-base -n semseg-spunet-v1m1-0-base
# nuScenes
sh scripts/train.sh -g 4 -d nuscenes -c semseg-spunet-v1m1-0-base -n semseg-spunet-v1m1-0-base
# ModelNet40
sh scripts/train.sh -g 2 -d modelnet40 -c cls-spunet-v1m1-0-base -n cls-spunet-v1m1-0-base
# ScanNet Data Efficient
sh scripts/train.sh -g 4 -d scannet -c semseg-spunet-v1m1-2-efficient-la20 -n semseg-spunet-v1m1-2-efficient-la20
sh scripts/train.sh -g 4 -d scannet -c semseg-spunet-v1m1-2-efficient-la50 -n semseg-spunet-v1m1-2-efficient-la50
sh scripts/train.sh -g 4 -d scannet -c semseg-spunet-v1m1-2-efficient-la100 -n semseg-spunet-v1m1-2-efficient-la100
sh scripts/train.sh -g 4 -d scannet -c semseg-spunet-v1m1-2-efficient-la200 -n semseg-spunet-v1m1-2-efficient-la200
sh scripts/train.sh -g 4 -d scannet -c semseg-spunet-v1m1-2-efficient-lr1 -n semseg-spunet-v1m1-2-efficient-lr1
sh scripts/train.sh -g 4 -d scannet -c semseg-spunet-v1m1-2-efficient-lr5 -n semseg-spunet-v1m1-2-efficient-lr5
sh scripts/train.sh -g 4 -d scannet -c semseg-spunet-v1m1-2-efficient-lr10 -n semseg-spunet-v1m1-2-efficient-lr10
sh scripts/train.sh -g 4 -d scannet -c semseg-spunet-v1m1-2-efficient-lr20 -n semseg-spunet-v1m1-2-efficient-lr20
# Profile model run time
sh scripts/train.sh -g 4 -d scannet -c semseg-spunet-v1m1-0-enable-profiler -n semseg-spunet-v1m1-0-enable-profiler تم تعديل إصدار MinkowskiEngine SparseUNet في قاعدة الشفرات من ريبو Minkowskiengine الأصلي ، ومثال على تشغيل البرامج النصية هي كما يلي:
# Uncomment "# from .sparse_unet import *" in "pointcept/models/__init__.py"
# Uncomment "# from .mink_unet import *" in "pointcept/models/sparse_unet/__init__.py"
# ScanNet
sh scripts/train.sh -g 4 -d scannet -c semseg-minkunet34c-0-base -n semseg-minkunet34c-0-base
# ScanNet200
sh scripts/train.sh -g 4 -d scannet200 -c semseg-minkunet34c-0-base -n semseg-minkunet34c-0-base
# S3DIS
sh scripts/train.sh -g 4 -d s3dis -c semseg-minkunet34c-0-base -n semseg-minkunet34c-0-base
# SemanticKITTI
sh scripts/train.sh -g 2 -d semantic_kitti -c semseg-minkunet34c-0-base -n semseg-minkunet34c-0-baseإدخال CNNs Omni-Ad-Addpetive ( OA-CNNs ) ، وهي عائلة من الشبكات التي تدمج وحدة خفيفة الوزن لتعزيز التكيف بشكل كبير في CNNs المتفرقة بتكلفة حسابية الحد الأدنى. بدون أي وحدات الاهتمام الذاتي ، تتجاوز OA-CNNs محولات النقاط بشكل إيجابي من حيث الدقة في كل من المشاهد الداخلية والخارجية ، مع أقل بكثير من تكاليف الكمون والذاكرة. قضية تتعلق بـ OA-CNNS Canpbihao.
# ScanNet
sh scripts/train.sh -g 4 -d scannet -c semseg-oacnns-v1m1-0-base -n semseg-oacnns-v1m1-0-basePTV3 هو نموذج العمود الفقري الفعال يحقق عروض SOTA عبر السيناريوهات الداخلية والخارجية. يعتمد PTV3 الكامل على Flashattention ، في حين تعتمد Flashattention على CUDA 11.6 وما فوق ، تأكد من تلبية بيئة النقطة المحلية الخاصة بك للمتطلبات.
إذا لم تتمكن من ترقية بيئتك المحلية لتلبية المتطلبات (CUDA> = 11.6) ، فيمكنك تعطيل Flashattention عن طريق تعيين معلمة النموذج enable_flash إلى false وتقليل enc_patch_size و dec_patch_size إلى مستوى (مثل 128).
تعمل قوة Flashattention على تعطيل RPE وتجبر الدقة التي انخفضت إلى FP16. إذا كنت بحاجة إلى هذه الميزات ، فيرجى تعطيل enable_flash وضبط enable_rpe و upcast_attention و upcast_softmax .
تتوفر التعليمات التفصيلية وسجلات التجربة (التي تحتوي على أوزان) على مستودع المشروع. مثال على تشغيل البرامج النصية على النحو التالي:
# Scratched ScanNet
sh scripts/train.sh -g 4 -d scannet -c semseg-pt-v3m1-0-base -n semseg-pt-v3m1-0-base
# PPT joint training (ScanNet + Structured3D) and evaluate in ScanNet
sh scripts/train.sh -g 8 -d scannet -c semseg-pt-v3m1-1-ppt-extreme -n semseg-pt-v3m1-1-ppt-extreme
# Scratched ScanNet200
sh scripts/train.sh -g 4 -d scannet200 -c semseg-pt-v3m1-0-base -n semseg-pt-v3m1-0-base
# Fine-tuning from PPT joint training (ScanNet + Structured3D) with ScanNet200
# PTV3_PPT_WEIGHT_PATH: Path to model weight trained by PPT multi-dataset joint training
# e.g. exp/scannet/semseg-pt-v3m1-1-ppt-extreme/model/model_best.pth
sh scripts/train.sh -g 4 -d scannet200 -c semseg-pt-v3m1-1-ppt-ft -n semseg-pt-v3m1-1-ppt-ft -w ${PTV3_PPT_WEIGHT_PATH}
# Scratched ScanNet++
sh scripts/train.sh -g 4 -d scannetpp -c semseg-pt-v3m1-0-base -n semseg-pt-v3m1-0-base
# Scratched ScanNet++ test
sh scripts/train.sh -g 4 -d scannetpp -c semseg-pt-v3m1-1-submit -n semseg-pt-v3m1-1-submit
# Scratched S3DIS
sh scripts/train.sh -g 4 -d s3dis -c semseg-pt-v3m1-0-base -n semseg-pt-v3m1-0-base
# an example for disbale flash_attention and enable rpe.
sh scripts/train.sh -g 4 -d s3dis -c semseg-pt-v3m1-1-rpe -n semseg-pt-v3m1-0-rpe
# PPT joint training (ScanNet + S3DIS + Structured3D) and evaluate in ScanNet
sh scripts/train.sh -g 8 -d s3dis -c semseg-pt-v3m1-1-ppt-extreme -n semseg-pt-v3m1-1-ppt-extreme
# S3DIS 6-fold cross validation
# 1. The default configs are evaluated on Area_5, modify the "data.train.split", "data.val.split", and "data.test.split" to make the config evaluated on Area_1 ~ Area_6 respectively.
# 2. Train and evaluate the model on each split of areas and gather result files located in "exp/s3dis/EXP_NAME/result/Area_x.pth" in one single folder, noted as RECORD_FOLDER.
# 3. Run the following script to get S3DIS 6-fold cross validation performance:
export PYTHONPATH=./
python tools/test_s3dis_6fold.py --record_root ${RECORD_FOLDER}
# Scratched nuScenes
sh scripts/train.sh -g 4 -d nuscenes -c semseg-pt-v3m1-0-base -n semseg-pt-v3m1-0-base
# Scratched Waymo
sh scripts/train.sh -g 4 -d waymo -c semseg-pt-v3m1-0-base -n semseg-pt-v3m1-0-base
# More configs and exp records for PTv3 will be available soon.تجزئة دلالية داخلية
| نموذج | معيار | بيانات إضافية | NUM وحدات معالجة الرسومات | فال ميو | تكوين | Tensorboard | سجل EXP |
|---|---|---|---|---|---|---|---|
| PTV3 | سفن | ✗ | 4 | 77.6 ٪ | وصلة | وصلة | وصلة |
| PTV3 + PPT | سفن | ✓ | 8 | 78.5 ٪ | وصلة | وصلة | وصلة |
| PTV3 | Scannet200 | ✗ | 4 | 35.3 ٪ | وصلة | وصلة | وصلة |
| PTV3 + PPT | Scannet200 | ✓ (قدم) | 4 | ||||
| PTV3 | S3dis (Area5) | ✗ | 4 | 73.6 ٪ | وصلة | وصلة | وصلة |
| PTV3 + PPT | S3dis (Area5) | ✓ | 8 | 75.4 ٪ | وصلة | وصلة | وصلة |
تجزئة دلالية في الهواء الطلق
| نموذج | معيار | بيانات إضافية | NUM وحدات معالجة الرسومات | فال ميو | تكوين | Tensorboard | سجل EXP |
|---|---|---|---|---|---|---|---|
| PTV3 | nuscenes | ✗ | 4 | 80.3 | وصلة | وصلة | وصلة |
| PTV3 + PPT | nuscenes | ✓ | 8 | ||||
| PTV3 | semantickitti | ✗ | 4 | ||||
| PTV3 + PPT | semantickitti | ✓ | 8 | ||||
| PTV3 | وايمو | ✗ | 4 | 71.2 | وصلة | وصلة | رابط (سجل فقط) |
| PTV3 + PPT | وايمو | ✓ | 8 |
*يتم تدريب الأوزان النموذجية التي تم إصدارها على V1.5.1 ، أوزان لـ V1.5.2 وما زالت مستمرة لاحقًا.
تم تدريب PTV2 الأصلي على 4 * RTX A6000 (ذاكرة 48G). حتى تمكين AMP ، فإن تكلفة ذاكرة PTV2 الأصلية أكبر قليلاً من 24 جرام. بالنظر إلى أن وحدات معالجة الرسومات مع ذاكرة 24G يمكن الوصول إليها أكثر بكثير ، فقد قمت بضبط PTV2 على أحدث نقطة وجعلتها قابلة للتشغيل على آلات 4 * RTX 3090.
يمكّن PTv2 Mode2 AMP ويعطف الموضع المشفر وخطي تجميعه . خلال بحثنا الإضافي ، وجدنا أن الإحداثيات الدقيقة ليست ضرورية لفهم السحابة النقطة (استبدال الإحداثيات الدقيقة مع إحداثيات الشبكة لا تؤثر على الأداء. أما بالنسبة للخطية المجمعة ، يبدو أن تنفيذي للخطية المجمعة يكلف ذاكرة أكثر من الطبقة الخطية التي يوفرها Pytorch. الاستفادة من قاعدة كود وضبط المعلمة أفضل ، كما نخفف من مشكلة التغطية. أداء التكاثر أفضل من النتائج الواردة في ورقتنا.
مثال على تشغيل البرامج النصية على النحو التالي:
# ptv2m2: PTv2 mode2, disable PEM & Grouped Linear, GPU memory cost < 24G (recommend)
# ScanNet
sh scripts/train.sh -g 4 -d scannet -c semseg-pt-v2m2-0-base -n semseg-pt-v2m2-0-base
sh scripts/train.sh -g 4 -d scannet -c semseg-pt-v2m2-3-lovasz -n semseg-pt-v2m2-3-lovasz
# ScanNet test
sh scripts/train.sh -g 4 -d scannet -c semseg-pt-v2m2-1-submit -n semseg-pt-v2m2-1-submit
# ScanNet200
sh scripts/train.sh -g 4 -d scannet200 -c semseg-pt-v2m2-0-base -n semseg-pt-v2m2-0-base
# ScanNet++
sh scripts/train.sh -g 4 -d scannetpp -c semseg-pt-v2m2-0-base -n semseg-pt-v2m2-0-base
# ScanNet++ test
sh scripts/train.sh -g 4 -d scannetpp -c semseg-pt-v2m2-1-submit -n semseg-pt-v2m2-1-submit
# S3DIS
sh scripts/train.sh -g 4 -d s3dis -c semseg-pt-v2m2-0-base -n semseg-pt-v2m2-0-base
# SemanticKITTI
sh scripts/train.sh -g 4 -d semantic_kitti -c semseg-pt-v2m2-0-base -n semseg-pt-v2m2-0-base
# nuScenes
sh scripts/train.sh -g 4 -d nuscenes -c semseg-pt-v2m2-0-base -n semseg-pt-v2m2-0-base PTv2 mode1 هو PTV2 الأصلي الذي أبلغنا عنه في ورقنا ، مثال على تشغيل البرامج النصية على النحو التالي:
# ptv2m1: PTv2 mode1, Original PTv2, GPU memory cost > 24G
# ScanNet
sh scripts/train.sh -g 4 -d scannet -c semseg-pt-v2m1-0-base -n semseg-pt-v2m1-0-base
# ScanNet200
sh scripts/train.sh -g 4 -d scannet200 -c semseg-pt-v2m1-0-base -n semseg-pt-v2m1-0-base
# S3DIS
sh scripts/train.sh -g 4 -d s3dis -c semseg-pt-v2m1-0-base -n semseg-pt-v2m1-0-baseيتوفر PTV1 الأصلي أيضًا في قاعدة بياناتنا. لم أقم بتشغيل PTV1 لفترة طويلة ، لكنني تأكدت من أن النص النصي يعمل بشكل جيد.
# ScanNet
sh scripts/train.sh -g 4 -d scannet -c semseg-pt-v1-0-base -n semseg-pt-v1-0-base
# ScanNet200
sh scripts/train.sh -g 4 -d scannet200 -c semseg-pt-v1-0-base -n semseg-pt-v1-0-base
# S3DIS
sh scripts/train.sh -g 4 -d s3dis -c semseg-pt-v1-0-base -n semseg-pt-v1-0-basepip install torch-points3d
# Fix dependence, caused by installing torch-points3d
pip uninstall SharedArray
pip install SharedArray==3.2.1
cd libs/pointops2
python setup.py install
cd ../..# from .stratified_transformer import * in pointcept/models/__init__.py . # stv1m1: Stratified Transformer mode1, Modified from the original Stratified Transformer code.
# PTv2m2: Stratified Transformer mode2, My rewrite version (recommend).
# ScanNet
sh scripts/train.sh -g 4 -d scannet -c semseg-st-v1m2-0-refined -n semseg-st-v1m2-0-refined
sh scripts/train.sh -g 4 -d scannet -c semseg-st-v1m1-0-origin -n semseg-st-v1m1-0-origin
# ScanNet200
sh scripts/train.sh -g 4 -d scannet200 -c semseg-st-v1m2-0-refined -n semseg-st-v1m2-0-refined
# S3DIS
sh scripts/train.sh -g 4 -d s3dis -c semseg-st-v1m2-0-refined -n semseg-st-v1m2-0-refined SPVCNN هو نموذج أساسي لـ SPVNAs ، وهو أيضًا خط أساس عملي لمجموعات البيانات الخارجية.
# refer https://github.com/mit-han-lab/torchsparse
# install method without sudo apt install
conda install google-sparsehash -c bioconda
export C_INCLUDE_PATH= ${CONDA_PREFIX} /include: $C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH= ${CONDA_PREFIX} /include:CPLUS_INCLUDE_PATH
pip install --upgrade git+https://github.com/mit-han-lab/torchsparse.git # SemanticKITTI
sh scripts/train.sh -g 2 -d semantic_kitti -c semseg-spvcnn-v1m1-0-base -n semseg-spvcnn-v1m1-0-baseOctformer من Octformer: محولات قائمة على Octree لسحب النقطة ثلاثية الأبعاد .
cd libs
git clone https://github.com/octree-nn/dwconv.git
pip install ./dwconv
pip install ocnn# from .octformer import * in pointcept/models/__init__.py . # ScanNet
sh scripts/train.sh -g 4 -d scannet -c semseg-octformer-v1m1-0-base -n semseg-octformer-v1m1-0-baseSWIN3D من SWIN3D: العمود الفقري المحول المسبق لفهم المشهد الداخلي ثلاثي الأبعاد .
# 1. Install MinkEngine v0.5.4, follow readme in https://github.com/NVIDIA/MinkowskiEngine;
# 2. Install Swin3D, mainly for cuda operation:
cd libs
git clone https://github.com/microsoft/Swin3D.git
cd Swin3D
pip install ./# from .swin3d import * in pointcept/models/__init__.py . # Structured3D + Swin-S
sh scripts/train.sh -g 4 -d structured3d -c semseg-swin3d-v1m1-0-small -n semseg-swin3d-v1m1-0-small
# Structured3D + Swin-L
sh scripts/train.sh -g 4 -d structured3d -c semseg-swin3d-v1m1-1-large -n semseg-swin3d-v1m1-1-large
# Addition
# Structured3D + SpUNet
sh scripts/train.sh -g 4 -d structured3d -c semseg-spunet-v1m1-0-base -n semseg-spunet-v1m1-0-base
# Structured3D + PTv2
sh scripts/train.sh -g 4 -d structured3d -c semseg-pt-v2m2-0-base -n semseg-pt-v2m2-0-base # ScanNet + Swin-S
sh scripts/train.sh -g 4 -d scannet -w exp/structured3d/semseg-swin3d-v1m1-1-large/model/model_last.pth -c semseg-swin3d-v1m1-0-small -n semseg-swin3d-v1m1-0-small
# ScanNet + Swin-L
sh scripts/train.sh -g 4 -d scannet -w exp/structured3d/semseg-swin3d-v1m1-1-large/model/model_last.pth -c semseg-swin3d-v1m1-1-large -n semseg-swin3d-v1m1-1-large
# S3DIS + Swin-S (here we provide config support S3DIS normal vector)
sh scripts/train.sh -g 4 -d s3dis -w exp/structured3d/semseg-swin3d-v1m1-1-large/model/model_last.pth -c semseg-swin3d-v1m1-0-small -n semseg-swin3d-v1m1-0-small
# S3DIS + Swin-L (here we provide config support S3DIS normal vector)
sh scripts/train.sh -g 4 -d s3dis -w exp/structured3d/semseg-swin3d-v1m1-1-large/model/model_last.pth -c semseg-swin3d-v1m1-1-large -n semseg-swin3d-v1m1-1-large Context-Aware Classifier هو قطاع يمكنه زيادة أداء كل العمود الفقري ، كبديل Default Segmentor . التدريب مع المثال التالي البرامج النصية:
# ScanNet
sh scripts/train.sh -g 4 -d scannet -c semseg-cac-v1m1-0-spunet-base -n semseg-cac-v1m1-0-spunet-base
sh scripts/train.sh -g 4 -d scannet -c semseg-cac-v1m1-1-spunet-lovasz -n semseg-cac-v1m1-1-spunet-lovasz
sh scripts/train.sh -g 4 -d scannet -c semseg-cac-v1m1-2-ptv2-lovasz -n semseg-cac-v1m1-2-ptv2-lovasz
# ScanNet200
sh scripts/train.sh -g 4 -d scannet200 -c semseg-cac-v1m1-0-spunet-base -n semseg-cac-v1m1-0-spunet-base
sh scripts/train.sh -g 4 -d scannet200 -c semseg-cac-v1m1-1-spunet-lovasz -n semseg-cac-v1m1-1-spunet-lovasz
sh scripts/train.sh -g 4 -d scannet200 -c semseg-cac-v1m1-2-ptv2-lovasz -n semseg-cac-v1m1-2-ptv2-lovaszPointGroup هو إطار أساسي لتجزئة مثيل Cloud Point.
conda install -c bioconda google-sparsehash
cd libs/pointgroup_ops
python setup.py install --include_dirs= ${CONDA_PREFIX} /include
cd ../..# from .point_group import * in pointcept/models/__init__.py . # ScanNet
sh scripts/train.sh -g 4 -d scannet -c insseg-pointgroup-v1m1-0-spunet-base -n insseg-pointgroup-v1m1-0-spunet-base
# S3DIS
sh scripts/train.sh -g 4 -d scannet -c insseg-pointgroup-v1m1-0-spunet-base -n insseg-pointgroup-v1m1-0-spunet-base # ScanNet
sh scripts/train.sh -g 8 -d scannet -c pretrain-msc-v1m1-0-spunet-base -n pretrain-msc-v1m1-0-spunet-base # ScanNet20 Semantic Segmentation
sh scripts/train.sh -g 8 -d scannet -w exp/scannet/pretrain-msc-v1m1-0-spunet-base/model/model_last.pth -c semseg-spunet-v1m1-4-ft -n semseg-msc-v1m1-0f-spunet-base
# ScanNet20 Instance Segmentation (enable PointGroup before running the script)
sh scripts/train.sh -g 4 -d scannet -w exp/scannet/pretrain-msc-v1m1-0-spunet-base/model/model_last.pth -c insseg-pointgroup-v1m1-0-spunet-base -n insseg-msc-v1m1-0f-pointgroup-spunet-baseيقدم PPT إطارًا متعدد التدريب متعدد المسارات ، وهو متوافق مع مختلف الأطر المسبقة المسبقة والمبrophons.
# ScanNet + Structured3d, validate on ScanNet (S3DIS might cause long data time, w/o S3DIS for a quick validation) >= 3090 * 8
sh scripts/train.sh -g 8 -d scannet -c semseg-ppt-v1m1-0-sc-st-spunet -n semseg-ppt-v1m1-0-sc-st-spunet
sh scripts/train.sh -g 8 -d scannet -c semseg-ppt-v1m1-1-sc-st-spunet-submit -n semseg-ppt-v1m1-1-sc-st-spunet-submit
# ScanNet + S3DIS + Structured3d, validate on S3DIS (>= a100 * 8)
sh scripts/train.sh -g 8 -d s3dis -c semseg-ppt-v1m1-0-s3-sc-st-spunet -n semseg-ppt-v1m1-0-s3-sc-st-spunet
# SemanticKITTI + nuScenes + Waymo, validate on SemanticKITTI (bs12 >= 3090 * 4 >= 3090 * 8, v1m1-0 is still on tuning)
sh scripts/train.sh -g 4 -d semantic_kitti -c semseg-ppt-v1m1-0-nu-sk-wa-spunet -n semseg-ppt-v1m1-0-nu-sk-wa-spunet
sh scripts/train.sh -g 4 -d semantic_kitti -c semseg-ppt-v1m2-0-sk-nu-wa-spunet -n semseg-ppt-v1m2-0-sk-nu-wa-spunet
sh scripts/train.sh -g 4 -d semantic_kitti -c semseg-ppt-v1m2-1-sk-nu-wa-spunet-submit -n semseg-ppt-v1m2-1-sk-nu-wa-spunet-submit
# SemanticKITTI + nuScenes + Waymo, validate on nuScenes (bs12 >= 3090 * 4; bs24 >= 3090 * 8, v1m1-0 is still on tuning))
sh scripts/train.sh -g 4 -d nuscenes -c semseg-ppt-v1m1-0-nu-sk-wa-spunet -n semseg-ppt-v1m1-0-nu-sk-wa-spunet
sh scripts/train.sh -g 4 -d nuscenes -c semseg-ppt-v1m2-0-nu-sk-wa-spunet -n semseg-ppt-v1m2-0-nu-sk-wa-spunet
sh scripts/train.sh -g 4 -d nuscenes -c semseg-ppt-v1m2-1-nu-sk-wa-spunet-submit -n semseg-ppt-v1m2-1-nu-sk-wa-spunet-submit # RAW_SCANNET_DIR: the directory of downloaded ScanNet v2 raw dataset.
# PROCESSED_SCANNET_PAIR_DIR: the directory of processed ScanNet pair dataset (output dir).
python pointcept/datasets/preprocessing/scannet/scannet_pair/preprocess.py --dataset_root ${RAW_SCANNET_DIR} --output_root ${PROCESSED_SCANNET_PAIR_DIR}
ln -s ${PROCESSED_SCANNET_PAIR_DIR} ${CODEBASE_DIR} /data/scannet # ScanNet
sh scripts/train.sh -g 8 -d scannet -c pretrain-msc-v1m1-1-spunet-pointcontrast -n pretrain-msc-v1m1-1-spunet-pointcontrast # ScanNet
sh scripts/train.sh -g 8 -d scannet -c pretrain-msc-v1m2-0-spunet-csc -n pretrain-msc-v1m2-0-spunet-cscتم تصميم Pointcept بواسطة Xiaoyang ، الذي سميته Yixing والشعار الذي تم إنشاؤه بواسطة Yuechen. وهي مشتقة من Semseg من Hengshuang وإلهامها من قبل العديد من repos ، على سبيل المثال ، minkowskiengine ، pointnet2 ، MMCV ، و detectron2.