From c62c4f5f05fdbe6f254774a4a27fa7eab3d270cd Mon Sep 17 00:00:00 2001
From: He Zhizhou <2670226747@qq.com>
Date: Tue, 24 Oct 2023 02:52:38 +0800
Subject: [PATCH 1/3] Replace colon with dash in timestamp variables (#620)
Prevent OS errors when running the Semantic Segmentation program on exFAT SSD.
---
ml3d/tf/pipelines/object_detection.py | 6 +++---
ml3d/tf/pipelines/semantic_segmentation.py | 4 ++--
ml3d/torch/pipelines/object_detection.py | 6 +++---
ml3d/torch/pipelines/semantic_segmentation.py | 4 ++--
4 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/ml3d/tf/pipelines/object_detection.py b/ml3d/tf/pipelines/object_detection.py
index cf0688e17..2cefc07a7 100644
--- a/ml3d/tf/pipelines/object_detection.py
+++ b/ml3d/tf/pipelines/object_detection.py
@@ -62,7 +62,7 @@ def run_test(self):
dataset = self.dataset
cfg = self.cfg
- timestamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
+ timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log_file_path = join(cfg.logs_dir, 'log_test_' + timestamp + '.txt')
log.info("Logging in file : {}".format(log_file_path))
@@ -111,7 +111,7 @@ def run_valid(self, epoch=0):
dataset = self.dataset
cfg = self.cfg
- timestamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
+ timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log_file_path = join(cfg.logs_dir, 'log_valid_' + timestamp + '.txt')
log.info("Logging in file : {}".format(log_file_path))
@@ -212,7 +212,7 @@ def run_train(self):
cfg = self.cfg
- timestamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
+ timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log_file_path = join(cfg.logs_dir, 'log_train_' + timestamp + '.txt')
log.info("Logging in file : {}".format(log_file_path))
log.addHandler(logging.FileHandler(log_file_path))
diff --git a/ml3d/tf/pipelines/semantic_segmentation.py b/ml3d/tf/pipelines/semantic_segmentation.py
index c1baab7cf..7a5b1e6bb 100644
--- a/ml3d/tf/pipelines/semantic_segmentation.py
+++ b/ml3d/tf/pipelines/semantic_segmentation.py
@@ -147,7 +147,7 @@ def run_test(self):
cfg = self.cfg
self.load_ckpt(model.cfg.ckpt_path)
- timestamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
+ timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log_file_path = join(cfg.logs_dir, 'log_test_' + timestamp + '.txt')
log.info("Logging in file : {}".format(log_file_path))
@@ -192,7 +192,7 @@ def run_train(self):
cfg = self.cfg
log.info(model)
- timestamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
+ timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log_file_path = join(cfg.logs_dir, 'log_train_' + timestamp + '.txt')
log.info("Logging in file : {}".format(log_file_path))
log.addHandler(logging.FileHandler(log_file_path))
diff --git a/ml3d/torch/pipelines/object_detection.py b/ml3d/torch/pipelines/object_detection.py
index 593494fea..892d86154 100644
--- a/ml3d/torch/pipelines/object_detection.py
+++ b/ml3d/torch/pipelines/object_detection.py
@@ -85,7 +85,7 @@ def run_test(self):
model.eval()
- timestamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
+ timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log.info("DEVICE : {}".format(device))
log_file_path = join(cfg.logs_dir, 'log_test_' + timestamp + '.txt')
@@ -145,7 +145,7 @@ def run_valid(self, epoch=0):
model.eval()
- timestamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
+ timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log.info("DEVICE : {}".format(device))
log_file_path = join(cfg.logs_dir, 'log_valid_' + timestamp + '.txt')
@@ -282,7 +282,7 @@ def run_train(self):
if rank == 0:
log.info("DEVICE : {}".format(device))
- timestamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
+ timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log_file_path = join(cfg.logs_dir,
'log_train_' + timestamp + '.txt')
diff --git a/ml3d/torch/pipelines/semantic_segmentation.py b/ml3d/torch/pipelines/semantic_segmentation.py
index 6f6767ecf..aa918cc7d 100644
--- a/ml3d/torch/pipelines/semantic_segmentation.py
+++ b/ml3d/torch/pipelines/semantic_segmentation.py
@@ -190,7 +190,7 @@ def run_test(self):
model.eval()
self.metric_test = SemSegMetric()
- timestamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
+ timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log.info("DEVICE : {}".format(device))
log_file_path = join(cfg.logs_dir, 'log_test_' + timestamp + '.txt')
@@ -320,7 +320,7 @@ def run_train(self):
model.to(device)
log.info("DEVICE : {}".format(device))
- timestamp = datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
+ timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
log_file_path = join(cfg.logs_dir, 'log_train_' + timestamp + '.txt')
log.info("Logging in file : {}".format(log_file_path))
From 25a27d1722571d36fac5c8d977227487e7a57344 Mon Sep 17 00:00:00 2001
From: Sameer Sheorey <41028320+ssheorey@users.noreply.github.com>
Date: Tue, 24 Oct 2023 21:27:52 +0530
Subject: [PATCH 2/3] Support python 311 (#619)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Companion Open3D PR: https://github.com/isl-org/Open3D/pull/6288
- Add support for python3.11.
-️ Upgrade pytorch to 2.0.1 with cuda 11.7
- Upgrade tensorflow / tensorboard to 2.13.
- Disable building tensorflow ops on Linux. Keep old cxx11_abi.
- Update CI to use requirements files instead of manually specified versions.
- Add instructions to build with new cxx11_abi with tensorflow ops support.
---
.github/workflows/ubuntu.yml | 4 +-
README.md | 200 +++++++++++++++++++----------------
ci/run_ci.sh | 53 ++++------
requirements-tensorflow.txt | 3 +-
requirements-torch-cuda.txt | 4 +-
requirements-torch.txt | 8 +-
requirements.txt | 2 +-
tests/test_integration.py | 18 ++--
tests/test_models.py | 30 ++++--
9 files changed, 167 insertions(+), 155 deletions(-)
diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml
index b7aa7f3ae..0362236f0 100644
--- a/.github/workflows/ubuntu.yml
+++ b/.github/workflows/ubuntu.yml
@@ -16,7 +16,7 @@ jobs:
NPROC: 2
steps:
- name: Checkout source code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup cache
uses: actions/cache@v3
with:
@@ -33,7 +33,7 @@ jobs:
- name: Set up Python version
uses: actions/setup-python@v4
with:
- python-version: "3.10"
+ python-version: "3.11"
# Pre-installed packages: https://github.com/actions/runner-images/tree/main/images
- name: Install ccache
run: |
diff --git a/README.md b/README.md
index 489173630..f565eb5bb 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,3 @@
-
ML
@@ -9,7 +8,7 @@
![PyTorch badge](https://img.shields.io/badge/PyTorch-supported-brightgreen?style=flat&logo=pytorch)
![TensorFlow badge](https://img.shields.io/badge/TensorFlow-supported-brightgreen?style=flat&logo=tensorflow)
-[**Installation**](#installation) | [**Get started**](#getting-started) | [**Structure**](#repository-structure) | [**Tasks & Algorithms**](#tasks-and-algorithms) | [**Model Zoo**](model_zoo.md) | [**Datasets**](#datasets) | [**How-tos**](#how-tos) | [**Contribute**](#contribute)
+[**Installation**](#installation) \| [**Get started**](#getting-started) \| [**Structure**](#repository-structure) \| [**Tasks & Algorithms**](#tasks-and-algorithms) \| [**Model Zoo**](model_zoo.md) \| [**Datasets**](#datasets) \| [**How-tos**](#how-tos) \| [**Contribute**](#contribute)
Open3D-ML is an extension of Open3D for 3D machine learning tasks.
It builds on top of the Open3D core library and extends it with machine learning
@@ -21,7 +20,6 @@ Open3D-ML works with **TensorFlow** and **PyTorch** to integrate easily into
existing projects and also provides general functionality independent of
ML frameworks such as data visualization.
-
## Installation
### Users
@@ -29,11 +27,12 @@ ML frameworks such as data visualization.
Open3D-ML is integrated in the Open3D v0.11+ python distribution and is
compatible with the following versions of ML frameworks.
- * PyTorch 1.8.2
- * TensorFlow 2.5.2
- * CUDA 10.1, 11.* (On `GNU/Linux x86_64`, optional)
+- PyTorch 2.0.\*
+- TensorFlow 2.13.\* (macOS, see below for Linux)
+- CUDA 10.1, 11.\* (On `GNU/Linux x86_64`, optional)
You can install Open3D with
+
```bash
# make sure you have the latest pip version
pip install --upgrade pip
@@ -43,6 +42,7 @@ pip install open3d
To install a compatible version of PyTorch or TensorFlow you can use the
respective requirements files:
+
```bash
# To install a compatible version of TensorFlow
pip install -r requirements-tensorflow.txt
@@ -63,7 +63,22 @@ $ python -c "import open3d.ml.tf as ml3d"
If you need to use different versions of the ML frameworks or CUDA we recommend
to
-[build Open3D from source](http://www.open3d.org/docs/release/compilation.html).
+[build Open3D from source](http://www.open3d.org/docs/release/compilation.html)
+ or [build Open3D in docker](http://www.open3d.org/docs/release/docker.html#building-open3d-in-docker).
+
+From v0.18 onwards on Linux, the PyPI Open3D wheel does not have native support
+for Tensorflow due to build incompatibilities between PyTorch and Tensorflow
+\[See [Python 3.11 support PR](https://github.com/isl-org/Open3D/pull/6288)] for
+details. If you'd like to use Open3D with Tensorflow on Linux, you can
+[build Open3D wheel from source in docker](http://www.open3d.org/docs/release/docker.html#building-open3d-in-docker)
+with support for Tensorflow (but not PyTorch) as:
+
+```bash
+cd docker
+# Build open3d and open3d-cpu wheels for Python 3.10 with Tensorflow support
+export BUILD_PYTORCH_OPS=OFF BUILD_TENSORFLOW_OPS=ON
+./docker_build.sh cuda_wheel_py310
+```
## Getting started
@@ -91,10 +106,13 @@ print(all_split.get_data(0)['point'].shape)
vis = ml3d.vis.Visualizer()
vis.visualize_dataset(dataset, 'all', indices=range(100))
```
+
![Visualizer GIF](docs/images/getting_started_ml_visualizer.gif)
### Loading a config file
+
Configs of models, datasets, and pipelines are stored in `ml3d/configs`. Users can also construct their own yaml files to keep record of their customized configurations. Here is an example of reading a config file and constructing modules from it.
+
```python
import open3d.ml as _ml3d
import open3d.ml.torch as ml3d # or open3d.ml.tf as ml3d
@@ -123,6 +141,7 @@ Building on the previous example we can instantiate a pipeline with a
pretrained model for semantic segmentation and run it on a point cloud of our
dataset. See the [model zoo](#model-zoo) for obtaining the weights of the
pretrained model.
+
```python
import os
import open3d.ml as _ml3d
@@ -158,8 +177,8 @@ result = pipeline.run_inference(data)
# evaluate performance on the test set; this will write logs to './logs'.
pipeline.run_test()
```
-Users can also [use predefined scripts](README.md#using-predefined-scripts) to load pretrained weights and run testing.
+Users can also [use predefined scripts](README.md#using-predefined-scripts) to load pretrained weights and run testing.
#### Training a model for semantic segmentation
@@ -191,7 +210,9 @@ for details.
### 3D Object Detection
#### Running a pretrained model for 3D object detection
+
The 3D object detection model is similar to a semantic segmentation model. We can instantiate a pipeline with a pretrained model for Object Detection and run it on a point cloud of our dataset. See the [model zoo](#model-zoo) for obtaining the weights of the pretrained model.
+
```python
import os
import open3d.ml as _ml3d
@@ -227,10 +248,11 @@ result = pipeline.run_inference(data)
# evaluate performance on the test set; this will write logs to './logs'.
pipeline.run_test()
```
-Users can also [use predefined scripts](README.md#using-predefined-scripts) to load pretrained weights and run testing.
+Users can also [use predefined scripts](README.md#using-predefined-scripts) to load pretrained weights and run testing.
#### Training a model for 3D object detection
+
Similar as for inference, pipelines provide an interface for training a model on
a dataset.
@@ -252,7 +274,6 @@ Below is an example of visualization using KITTI. The example shows the use of b
-
For more examples see [`examples/`](https://github.com/isl-org/Open3D-ML/tree/master/examples)
and the [`scripts/`](https://github.com/isl-org/Open3D-ML/tree/master/scripts) directories. You
can also enable saving training summaries in the config file and visualize ground truth and
@@ -274,8 +295,8 @@ either SemanticSegmentation or ObjectDetection in the `pipeline` parameter.
Note that `extra args` will be prioritized over the same parameter present in the configuration file.
So instead of changing param in config file, you may pass the same as a command line argument while launching the script.
-
For eg.
+
```
# Launch training for RandLANet on SemanticKITTI with torch.
python scripts/run_pipeline.py torch -c ml3d/configs/randlanet_semantickitti.yml --dataset.dataset_path --pipeline SemanticSegmentation --dataset.use_cache True
@@ -284,35 +305,34 @@ python scripts/run_pipeline.py torch -c ml3d/configs/randlanet_semantickitti.yml
python scripts/run_pipeline.py torch -c ml3d/configs/pointpillars_kitti.yml --split test --dataset.dataset_path --pipeline ObjectDetection --dataset.use_cache True
```
+
For further help, run `python scripts/run_pipeline.py --help`.
## Repository structure
+
The core part of Open3D-ML lives in the `ml3d` subfolder, which is integrated
into Open3D in the `ml` namespace. In addition to the core part, the directories
`examples` and `scripts` provide supporting scripts for getting started with
setting up a training pipeline or running a network on a dataset.
-```
-├─ docs # Markdown and rst files for documentation
-├─ examples # Place for example scripts and notebooks
-├─ ml3d # Package root dir that is integrated in open3d
- ├─ configs # Model configuration files
- ├─ datasets # Generic dataset code; will be integratede as open3d.ml.{tf,torch}.datasets
- ├─ metrics # Metrics available for evaluating ML models
- ├─ utils # Framework independent utilities; available as open3d.ml.{tf,torch}.utils
- ├─ vis # ML specific visualization functions
- ├─ tf # Directory for TensorFlow specific code. same structure as ml3d/torch.
- │ # This will be available as open3d.ml.tf
- ├─ torch # Directory for PyTorch specific code; available as open3d.ml.torch
- ├─ dataloaders # Framework specific dataset code, e.g. wrappers that can make use of the
- │ # generic dataset code.
- ├─ models # Code for models
- ├─ modules # Smaller modules, e.g., metrics and losses
- ├─ pipelines # Pipelines for tasks like semantic segmentation
- ├─ utils # Utilities for <>
-├─ scripts # Demo scripts for training and dataset download scripts
-```
-
+ ├─ docs # Markdown and rst files for documentation
+ ├─ examples # Place for example scripts and notebooks
+ ├─ ml3d # Package root dir that is integrated in open3d
+ ├─ configs # Model configuration files
+ ├─ datasets # Generic dataset code; will be integratede as open3d.ml.{tf,torch}.datasets
+ ├─ metrics # Metrics available for evaluating ML models
+ ├─ utils # Framework independent utilities; available as open3d.ml.{tf,torch}.utils
+ ├─ vis # ML specific visualization functions
+ ├─ tf # Directory for TensorFlow specific code. same structure as ml3d/torch.
+ │ # This will be available as open3d.ml.tf
+ ├─ torch # Directory for PyTorch specific code; available as open3d.ml.torch
+ ├─ dataloaders # Framework specific dataset code, e.g. wrappers that can make use of the
+ │ # generic dataset code.
+ ├─ models # Code for models
+ ├─ modules # Smaller modules, e.g., metrics and losses
+ ├─ pipelines # Pipelines for tasks like semantic segmentation
+ ├─ utils # Utilities for <>
+ ├─ scripts # Demo scripts for training and dataset download scripts
## Tasks and Algorithms
@@ -321,19 +341,18 @@ setting up a training pipeline or running a network on a dataset.
For the task of semantic segmentation, we measure the performance of different methods using the mean intersection-over-union (mIoU) over all classes.
The table shows the available models and datasets for the segmentation task and the respective scores. Each score links to the respective weight file.
+| Model / Dataset | SemanticKITTI | Toronto 3D | S3DIS | Semantic3D | Paris-Lille3D | ScanNet |
+| ------------------------ | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
+| RandLA-Net (tf) | [53.7](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_semantickitti_202201071330utc.zip) | [73.7](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_toronto3d_202201071330utc.zip) | [70.9](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_s3dis_202201071330utc.zip) | [76.0](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_semantic3d_202201071330utc.zip) | [70.0](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_parislille3d_202201071330utc.zip)\* | - |
+| RandLA-Net (torch) | [52.8](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_semantickitti_202201071330utc.pth) | [74.0](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_toronto3d_202201071330utc.pth) | [70.9](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_s3dis_202201071330utc.pth) | [76.0](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_semantic3d_202201071330utc.pth) | [70.0](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_parislille3d_202201071330utc.pth)\* | - |
+| KPConv (tf) | [58.7](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_semantickitti_202010021102utc.zip) | [65.6](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_toronto3d_202012221551utc.zip) | [65.0](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_s3dis_202010091238.zip) | - | [76.7](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_parislille3d_202011241550utc.zip) | - |
+| KPConv (torch) | [58.0](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_semantickitti_202009090354utc.pth) | [65.6](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_toronto3d_202012221551utc.pth) | [60.0](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_s3dis_202010091238.pth) | - | [76.7](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_parislille3d_202011241550utc.pth) | - |
+| SparseConvUnet (torch) | - | - | - | - | - | [68](https://storage.googleapis.com/open3d-releases/model-zoo/sparseconvunet_scannet_202105031316utc.pth) |
+| SparseConvUnet (tf) | - | - | - | - | - | [68.2](https://storage.googleapis.com/open3d-releases/model-zoo/sparseconvunet_scannet_202105031316utc.zip) |
+| PointTransformer (torch) | - | - | [69.2](https://storage.googleapis.com/open3d-releases/model-zoo/pointtransformer_s3dis_202109241350utc.pth) | - | - | - |
+| PointTransformer (tf) | - | - | [69.2](https://storage.googleapis.com/open3d-releases/model-zoo/pointtransformer_s3dis_202109241350utc.zip) | - | - | - |
-| Model / Dataset | SemanticKITTI | Toronto 3D | S3DIS | Semantic3D | Paris-Lille3D | ScanNet |
-|--------------------|---------------|----------- |-------|--------------|-------------|---------|
-| RandLA-Net (tf) | [53.7](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_semantickitti_202201071330utc.zip) | [73.7](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_toronto3d_202201071330utc.zip) | [70.9](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_s3dis_202201071330utc.zip) | [76.0](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_semantic3d_202201071330utc.zip) | [70.0](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_parislille3d_202201071330utc.zip)* | - |
-| RandLA-Net (torch) | [52.8](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_semantickitti_202201071330utc.pth) | [74.0](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_toronto3d_202201071330utc.pth) | [70.9](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_s3dis_202201071330utc.pth) | [76.0](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_semantic3d_202201071330utc.pth) | [70.0](https://storage.googleapis.com/open3d-releases/model-zoo/randlanet_parislille3d_202201071330utc.pth)* | - |
-| KPConv (tf) | [58.7](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_semantickitti_202010021102utc.zip) | [65.6](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_toronto3d_202012221551utc.zip) | [65.0](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_s3dis_202010091238.zip) | - | [76.7](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_parislille3d_202011241550utc.zip) | - |
-| KPConv (torch) | [58.0](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_semantickitti_202009090354utc.pth) | [65.6](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_toronto3d_202012221551utc.pth) | [60.0](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_s3dis_202010091238.pth) | - | [76.7](https://storage.googleapis.com/open3d-releases/model-zoo/kpconv_parislille3d_202011241550utc.pth) | - |
-| SparseConvUnet (torch)| - | - | - | - | - | [68](https://storage.googleapis.com/open3d-releases/model-zoo/sparseconvunet_scannet_202105031316utc.pth) |
-| SparseConvUnet (tf)| - | - | - | - | - | [68.2](https://storage.googleapis.com/open3d-releases/model-zoo/sparseconvunet_scannet_202105031316utc.zip) |
-| PointTransformer (torch)| - | - | [69.2](https://storage.googleapis.com/open3d-releases/model-zoo/pointtransformer_s3dis_202109241350utc.pth) | - | - | - |
-| PointTransformer (tf)| - | - | [69.2](https://storage.googleapis.com/open3d-releases/model-zoo/pointtransformer_s3dis_202109241350utc.zip) | - | - | - |
-
-(*) Using weights from original author.
+(\*) Using weights from original author.
### Object Detection
@@ -342,80 +361,74 @@ The table shows the available models and datasets for the object detection task
For the evaluation, the models were evaluated using the validation subset, according to KITTI's validation criteria. The models were trained for three classes (car, pedestrian and cyclist). The calculated values are the mean value over the mAP of all classes for all difficulty levels.
For the Waymo dataset, the models were trained on three classes (pedestrian, vehicle, cyclist).
+| Model / Dataset | KITTI [BEV / 3D] @ 0.70 | Waymo (BEV / 3D) @ 0.50 |
+| -------------------- | -------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| PointPillars (tf) | [61.6 / 55.2](https://storage.googleapis.com/open3d-releases/model-zoo/pointpillars_kitti_202012221652utc.zip) | - |
+| PointPillars (torch) | [61.2 / 52.8](https://storage.googleapis.com/open3d-releases/model-zoo/pointpillars_kitti_202012221652utc.pth) | avg: 61.01 / 48.30 \| [best: 61.47 / 57.55](https://storage.googleapis.com/open3d-releases/model-zoo/pointpillars_waymo_202211200158utc_seed2_gpu16.pth) [^wpp-train] |
+| PointRCNN (tf) | [78.2 / 65.9](https://storage.googleapis.com/open3d-releases/model-zoo/pointrcnn_kitti_202105071146utc.zip) | - |
+| PointRCNN (torch) | [78.2 / 65.9](https://storage.googleapis.com/open3d-releases/model-zoo/pointrcnn_kitti_202105071146utc.pth) | - |
-| Model / Dataset | KITTI [BEV / 3D] @ 0.70| Waymo (BEV / 3D) @ 0.50 |
-|--------------------|------------------------|------------------|
-| PointPillars (tf) | [61.6 / 55.2](https://storage.googleapis.com/open3d-releases/model-zoo/pointpillars_kitti_202012221652utc.zip) | - |
-| PointPillars (torch) | [61.2 / 52.8](https://storage.googleapis.com/open3d-releases/model-zoo/pointpillars_kitti_202012221652utc.pth) | avg: 61.01 / 48.30 \| [best: 61.47 / 57.55](https://storage.googleapis.com/open3d-releases/model-zoo/pointpillars_waymo_202211200158utc_seed2_gpu16.pth) [^wpp-train] |
-| PointRCNN (tf) | [78.2 / 65.9](https://storage.googleapis.com/open3d-releases/model-zoo/pointrcnn_kitti_202105071146utc.zip) | - |
-| PointRCNN (torch) | [78.2 / 65.9](https://storage.googleapis.com/open3d-releases/model-zoo/pointrcnn_kitti_202105071146utc.pth) | - |
-
-[^wpp-train]: The avg. metrics are the average of three sets of training runs with 4, 8, 16 and 32 GPUs. Training was for halted after 30 epochs. Model checkpoint is available for the best training run.
+[^wpp-train]: The avg. metrics are the average of three sets of training runs with 4, 8, 16 and 32 GPUs. Training was for halted after 30 epochs. Model checkpoint is available for the best training run.
#### Training PointRCNN
To use ground truth sampling data augmentation for training, we can generate the ground truth database as follows:
-```
-python scripts/collect_bboxes.py --dataset_path
-```
+
+ python scripts/collect_bboxes.py --dataset_path
+
This will generate a database consisting of objects from the train split. It is recommended to use this augmentation for dataset like KITTI where objects are sparse.
The two stages of PointRCNN are trained separately. To train the proposal generation stage of PointRCNN with PyTorch, run the following command:
-```
-# Train RPN for 100 epochs.
-python scripts/run_pipeline.py torch -c ml3d/configs/pointrcnn_kitti.yml --dataset.dataset_path --mode RPN --epochs 100
-```
-After getting a well trained RPN network, we can train RCNN network with frozen RPN weights.
-```
-# Train RCNN for 70 epochs.
-python scripts/run_pipeline.py torch -c ml3d/configs/pointrcnn_kitti.yml --dataset.dataset_path --mode RCNN --model.ckpt_path --epochs 100
-```
+ # Train RPN for 100 epochs.
+ python scripts/run_pipeline.py torch -c ml3d/configs/pointrcnn_kitti.yml --dataset.dataset_path --mode RPN --epochs 100
+
+After getting a well trained RPN network, we can train RCNN network with frozen RPN weights.
+ # Train RCNN for 70 epochs.
+ python scripts/run_pipeline.py torch -c ml3d/configs/pointrcnn_kitti.yml --dataset.dataset_path --mode RCNN --model.ckpt_path --epochs 100
## Model Zoo
For a full list of all weight files see [model_weights.txt](https://storage.googleapis.com/open3d-releases/model-zoo/model_weights.txt)
and the MD5 checksum file [model_weights.md5](https://storage.googleapis.com/open3d-releases/model-zoo/integrity.txt).
-
## Datasets
The following is a list of datasets for which we provide dataset reader classes.
-* SemanticKITTI ([project page](http://semantic-kitti.org/))
-* Toronto 3D ([github](https://github.com/WeikaiTan/Toronto-3D))
-* Semantic 3D ([project-page](http://www.semantic3d.net/))
-* S3DIS ([project-page](http://buildingparser.stanford.edu/dataset.html))
-* Paris-Lille 3D ([project-page](https://npm3d.fr/paris-lille-3d))
-* Argoverse ([project-page](https://www.argoverse.org/))
-* KITTI ([project-page](http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d))
-* Lyft ([project-page](https://level-5.global/data))
-* nuScenes ([project-page](https://www.nuscenes.org/))
-* Waymo ([project-page](https://waymo.com/open/))
-* ScanNet([project-page](http://www.scan-net.org/))
-
+- SemanticKITTI ([project page](http://semantic-kitti.org/))
+- Toronto 3D ([github](https://github.com/WeikaiTan/Toronto-3D))
+- Semantic 3D ([project-page](http://www.semantic3d.net/))
+- S3DIS ([project-page](http://buildingparser.stanford.edu/dataset.html))
+- Paris-Lille 3D ([project-page](https://npm3d.fr/paris-lille-3d))
+- Argoverse ([project-page](https://www.argoverse.org/))
+- KITTI ([project-page](http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d))
+- Lyft ([project-page](https://level-5.global/data))
+- nuScenes ([project-page](https://www.nuscenes.org/))
+- Waymo ([project-page](https://waymo.com/open/))
+- ScanNet([project-page](http://www.scan-net.org/))
For downloading these datasets visit the respective webpages and have a look at the scripts in [`scripts/download_datasets`](https://github.com/isl-org/Open3D-ML/tree/master/scripts/download_datasets).
-
-
## How-tos
-* [Visualize network predictions](docs/howtos.md#visualize-network-predictions)
-* [Visualize custom data](docs/howtos.md#visualize-custom-data)
-* [Adding a new model](docs/howtos.md#adding-a-new-model)
-* [Adding a new dataset](docs/howtos.md#adding-a-new-dataset)
-* [Distributed training](docs/howtos.md#distributed-training)
-* [Visualize and compare input data, ground truth and results in TensorBoard](docs/tensorboard.md)
-* [Inference with Intel OpenVINO](docs/openvino.md)
+- [Visualize network predictions](docs/howtos.md#visualize-network-predictions)
+- [Visualize custom data](docs/howtos.md#visualize-custom-data)
+- [Adding a new model](docs/howtos.md#adding-a-new-model)
+- [Adding a new dataset](docs/howtos.md#adding-a-new-dataset)
+- [Distributed training](docs/howtos.md#distributed-training)
+- [Visualize and compare input data, ground truth and results in TensorBoard](docs/tensorboard.md)
+- [Inference with Intel OpenVINO](docs/openvino.md)
## Contribute
+
There are many ways to contribute to this project. You can:
-* Implement a new model
-* Add code for reading a new dataset
-* Share parameters and weights for an existing model
-* Report problems and bugs
+
+- Implement a new model
+- Add code for reading a new dataset
+- Share parameters and weights for an existing model
+- Report problems and bugs
Please, **make your pull requests to the** [**dev**](https://github.com/isl-org/Open3D-ML/tree/dev) branch.
Open3D is a community effort. We welcome and celebrate contributions from the
@@ -429,9 +442,10 @@ Please also check out our communication channels to get in contact with the comm
## Communication channels
-* [Forum](https://github.com/isl-org/Open3D/discussions): discussion on the usage of Open3D.
-* [Discord Chat](https://discord.com/invite/D35BGvn): online chats, discussions,
- and collaboration with other users and developers.
+
+- [Forum](https://github.com/isl-org/Open3D/discussions): discussion on the usage of Open3D.
+- [Discord Chat](https://discord.com/invite/D35BGvn): online chats, discussions,
+ and collaboration with other users and developers.
## Citation
diff --git a/ci/run_ci.sh b/ci/run_ci.sh
index 608d3aade..f4ae82eca 100755
--- a/ci/run_ci.sh
+++ b/ci/run_ci.sh
@@ -1,54 +1,42 @@
#!/usr/bin/env bash
-#
-# The following environment variables are required:
-# - NPROC
-#
-TENSORFLOW_VER="2.8.2"
-TORCH_GLNX_VER="1.13.1+cpu"
-# OPENVINO_DEV_VER="2021.4.2" # Numpy version conflict with TF 2.8.2
-PIP_VER="21.1.1"
-WHEEL_VER="0.38.4"
-STOOLS_VER="67.3.2"
-YAPF_VER="0.30.0"
-PYTEST_VER="7.1.2"
-PYTEST_RANDOMLY_VER="3.8.0"
set -euo pipefail
+NPROC=${NPROC:?'env var must be set to number of available CPUs.'}
+PIP_VER="23.2.1"
+
echo 1. Prepare the Open3D-ML repo and install dependencies
echo
-export PATH_TO_OPEN3D_ML=$(pwd)
+export PATH_TO_OPEN3D_ML="$PWD"
+echo "$PATH_TO_OPEN3D_ML"
# the build system of the main repo expects a master branch. make sure master exists
git checkout -b master || true
-python -m pip install -U pip==$PIP_VER \
- wheel=="$WHEEL_VER" \
- setuptools=="$STOOLS_VER" \
- yapf=="$YAPF_VER" \
- pytest=="$PYTEST_VER" \
- pytest-randomly=="$PYTEST_RANDOMLY_VER"
-
-python -m pip install -r requirements.txt
-echo $PATH_TO_OPEN3D_ML
+python -m pip install -U pip==$PIP_VER
+python -m pip install -r requirements.txt \
+ -r requirements-torch.txt
+# -r requirements-tensorflow.txt # TF disabled on Linux (Open3D PR#6288)
+# -r requirements-openvino.txt # Numpy version conflict with TF 2.8.2
cd ..
python -m pip install -U Cython
echo 2. clone Open3D and install dependencies
echo
-git clone --recursive --branch master https://github.com/isl-org/Open3D.git
+git clone --branch master https://github.com/isl-org/Open3D.git
./Open3D/util/install_deps_ubuntu.sh assume-yes
-python -m pip install -U tensorflow-cpu==$TENSORFLOW_VER \
- torch==${TORCH_GLNX_VER} --extra-index-url https://download.pytorch.org/whl/cpu/
-# openvino-dev=="$OPENVINO_DEV_VER"
+python -m pip install -r Open3D/python/requirements.txt \
+ -r Open3D/python/requirements_style.txt \
+ -r Open3D/python/requirements_test.txt
echo 3. Configure for bundling the Open3D-ML part
echo
mkdir Open3D/build
pushd Open3D/build
+# TF disabled on Linux (Open3D PR#6288)
cmake -DBUNDLE_OPEN3D_ML=ON \
- -DOPEN3D_ML_ROOT=$PATH_TO_OPEN3D_ML \
+ -DOPEN3D_ML_ROOT="${PATH_TO_OPEN3D_ML}" \
-DGLIBCXX_USE_CXX11_ABI=OFF \
- -DBUILD_TENSORFLOW_OPS=ON \
+ -DBUILD_TENSORFLOW_OPS=OFF \
-DBUILD_PYTORCH_OPS=ON \
-DBUILD_GUI=ON \
-DBUILD_UNIT_TESTS=OFF \
@@ -66,12 +54,13 @@ echo
popd
mkdir test_workdir
pushd test_workdir
-mv $PATH_TO_OPEN3D_ML/tests .
+mv "$PATH_TO_OPEN3D_ML/tests" .
echo Add --randomly-seed=SEED to the test command to reproduce test order.
python -m pytest tests
-echo ... now do the same but in dev mode by setting OPEN3D_ML_ROOT
-export OPEN3D_ML_ROOT=$PATH_TO_OPEN3D_ML
+echo "... now do the same but in dev mode by setting OPEN3D_ML_ROOT"
+echo
+export OPEN3D_ML_ROOT="$PATH_TO_OPEN3D_ML"
echo Add --randomly-seed=SEED to the test command to reproduce test order.
python -m pytest tests
unset OPEN3D_ML_ROOT
diff --git a/requirements-tensorflow.txt b/requirements-tensorflow.txt
index 2c8fb571e..c3a69761c 100644
--- a/requirements-tensorflow.txt
+++ b/requirements-tensorflow.txt
@@ -1,2 +1 @@
-tensorflow~=2.8.4 ; sys_platform != 'darwin' or platform_machine != 'arm64'
-tensorflow-macos==2.8.0 ; sys_platform == 'darwin' and platform_machine == 'arm64'
+tensorflow~=2.13.0
\ No newline at end of file
diff --git a/requirements-torch-cuda.txt b/requirements-torch-cuda.txt
index a38029d98..b69670fc5 100644
--- a/requirements-torch-cuda.txt
+++ b/requirements-torch-cuda.txt
@@ -1,5 +1,5 @@
-f https://download.pytorch.org/whl/torch/
-torch==1.13.1+cu116
+torch==2.0.1+cu117
-f https://download.pytorch.org/whl/torchvision/
-torchvision==0.14.1+cu116
+torchvision==0.15.2+cu117
tensorboard
diff --git a/requirements-torch.txt b/requirements-torch.txt
index c77695075..fb417a316 100644
--- a/requirements-torch.txt
+++ b/requirements-torch.txt
@@ -1,6 +1,6 @@
--extra-index-url https://download.pytorch.org/whl/cpu/
-torch==1.13.1+cpu ; sys_platform != 'darwin'
-torchvision==0.14.1+cpu ; sys_platform != 'darwin'
-torch==1.13.1 ; sys_platform == 'darwin'
-torchvision==0.14.1 ; sys_platform == 'darwin'
+torch==2.0.1+cpu ; sys_platform != 'darwin'
+torchvision==0.15.2+cpu ; sys_platform != 'darwin'
+torch==2.0.1 ; sys_platform == 'darwin'
+torchvision==0.15.2 ; sys_platform == 'darwin'
tensorboard
diff --git a/requirements.txt b/requirements.txt
index 93f5af8d2..f3724a455 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
addict
pillow>=9.3.0
matplotlib>=3
-numpy>1.15
+numpy>1.18
pandas>=1.0
pyyaml>=5.4.1
scikit-learn>=0.21
diff --git a/tests/test_integration.py b/tests/test_integration.py
index b7aed07fd..d6b66628a 100644
--- a/tests/test_integration.py
+++ b/tests/test_integration.py
@@ -1,5 +1,6 @@
import pytest
import os
+import open3d as o3d
if 'PATH_TO_OPEN3D_ML' in os.environ.keys():
base = os.environ['PATH_TO_OPEN3D_ML']
@@ -8,6 +9,7 @@
# base = '../Open3D-ML'
+@pytest.mark.skipif("not o3d._build_config['BUILD_PYTORCH_OPS']")
def test_integration_torch():
import torch
import open3d.ml.torch as ml3d
@@ -25,6 +27,7 @@ def test_integration_torch():
print(model)
+@pytest.mark.skipif("not o3d._build_config['BUILD_TENSORFLOW_OPS']")
def test_integration_tf():
import tensorflow as tf
import open3d.ml.tf as ml3d
@@ -45,15 +48,10 @@ def test_integration_tf():
def test_integration_openvino():
try:
from openvino.inference_engine import IECore
- openvino_available = True
- except:
- openvino_available = False
-
- if not openvino_available:
+ except ImportError:
return
- from open3d.ml.torch.models import OpenVINOModel
- from open3d.ml.tf.models import OpenVINOModel
-
-
-test_integration_torch()
+ if o3d._build_config['BUILD_TORCH_OPS']:
+ from open3d.ml.torch.models import OpenVINOModel
+ if o3d._build_config['BUILD_TENSORFLOW_OPS']:
+ from open3d.ml.tf.models import OpenVINOModel
diff --git a/tests/test_models.py b/tests/test_models.py
index 2ef4a13d2..45dd8e171 100644
--- a/tests/test_models.py
+++ b/tests/test_models.py
@@ -1,22 +1,28 @@
import pytest
import os
import numpy as np
-import torch
-import tensorflow as tf
+import open3d as o3d
+try:
+ import torch
+except ImportError:
+ torch = None
if 'PATH_TO_OPEN3D_ML' in os.environ.keys():
base = os.environ['PATH_TO_OPEN3D_ML']
else:
base = '.'
-gpus = tf.config.list_physical_devices('GPU')
-if gpus:
- # Use first GPU and restrict memory growth.
- try:
+try:
+ import tensorflow as tf
+ gpus = tf.config.list_physical_devices('GPU')
+ if gpus:
+ # Use first GPU and restrict memory growth.
tf.config.experimental.set_visible_devices(gpus[0], 'GPU')
- tf.config.set_memory_growth(gpu[0], True)
- except RuntimeError as e:
- print(e)
+ tf.config.set_memory_growth(gpus[0], True)
+except RuntimeError as e:
+ print(e)
+except ImportError:
+ tf = None
try:
from open3d.ml.torch.models import OpenVINOModel
@@ -25,6 +31,7 @@
openvino_available = False
+@pytest.mark.skipif("not o3d._build_config['BUILD_PYTORCH_OPS']")
def test_randlanet_torch():
import open3d.ml.torch as ml3d
@@ -66,6 +73,7 @@ def test_randlanet_torch():
assert out.shape == (1, 5000, 10)
+@pytest.mark.skipif("not o3d._build_config['BUILD_TENSORFLOW_OPS']")
def test_randlanet_tf():
import open3d.ml.tf as ml3d
@@ -106,6 +114,7 @@ def test_randlanet_tf():
assert np.max(np.abs(ov_out - out)) < 1e-6
+@pytest.mark.skipif("not o3d._build_config['BUILD_PYTORCH_OPS']")
def test_kpconv_torch():
import open3d.ml.torch as ml3d
@@ -144,6 +153,7 @@ def test_kpconv_torch():
assert np.max(np.abs(ov_out - out)) < 1e-7
+@pytest.mark.skipif("not o3d._build_config['BUILD_TENSORFLOW_OPS']")
def test_kpconv_tf():
import open3d.ml.tf as ml3d
@@ -191,6 +201,7 @@ def test_kpconv_tf():
assert np.max(np.abs(ov_out - out)) < 1e-5
+@pytest.mark.skipif("not o3d._build_config['BUILD_PYTORCH_OPS']")
def test_pointpillars_torch():
import open3d.ml.torch as ml3d
from open3d.ml.utils import Config
@@ -225,6 +236,7 @@ def test_pointpillars_torch():
assert torch.max(torch.abs(out - ref)) < 1e-5
+@pytest.mark.skipif("not o3d._build_config['BUILD_TENSORFLOW_OPS']")
def test_pointpillars_tf():
import open3d.ml.tf as ml3d
from open3d.ml.utils import Config
From c7511921ce81f6476468a727ca6d4ae92d1de629 Mon Sep 17 00:00:00 2001
From: Sameer Sheorey <41028320+ssheorey@users.noreply.github.com>
Date: Mon, 11 Dec 2023 22:34:13 +0530
Subject: [PATCH 3/3] master -> main for branches (#626)
master -> primary elsewhere
---
.github/ISSUE_TEMPLATE/0-build-issue-report.yml | 2 +-
.github/ISSUE_TEMPLATE/1-bug-report.yml | 2 +-
.github/ISSUE_TEMPLATE/2-questions.yml | 2 +-
.github/ISSUE_TEMPLATE/3-feature-request.yml | 2 +-
.github/workflows/style.yml | 2 +-
.github/workflows/ubuntu.yml | 2 +-
README.md | 16 ++++++++--------
ci/run_ci.sh | 6 +++---
model_zoo.md | 2 +-
scripts/run_pipeline.py | 4 ++--
scripts/train_scripts/pointpillars_waymo.sh | 8 ++++----
11 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/0-build-issue-report.yml b/.github/ISSUE_TEMPLATE/0-build-issue-report.yml
index 2f72f3e7e..ee49885e2 100644
--- a/.github/ISSUE_TEMPLATE/0-build-issue-report.yml
+++ b/.github/ISSUE_TEMPLATE/0-build-issue-report.yml
@@ -13,7 +13,7 @@ body:
required: true
- label: "I have tested with the [latest development wheel](http://www.open3d.org/docs/latest/getting_started.html#development-version-pip)."
required: true
- - label: "I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `master` branch)."
+ - label: "I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `main` branch)."
required: true
- type: textarea
diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yml b/.github/ISSUE_TEMPLATE/1-bug-report.yml
index f5a114eae..010b2e1e2 100644
--- a/.github/ISSUE_TEMPLATE/1-bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/1-bug-report.yml
@@ -13,7 +13,7 @@ body:
required: true
- label: "I have tested with the [latest development wheel](http://www.open3d.org/docs/latest/getting_started.html#development-version-pip)."
required: true
- - label: "I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `master` branch)."
+ - label: "I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `main` branch)."
required: true
- type: textarea
diff --git a/.github/ISSUE_TEMPLATE/2-questions.yml b/.github/ISSUE_TEMPLATE/2-questions.yml
index bdc78c53d..30fd60fb4 100644
--- a/.github/ISSUE_TEMPLATE/2-questions.yml
+++ b/.github/ISSUE_TEMPLATE/2-questions.yml
@@ -13,7 +13,7 @@ body:
required: true
- label: "I have tested with the [latest development wheel](http://www.open3d.org/docs/latest/getting_started.html#development-version-pip)."
required: true
- - label: "I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `master` branch)."
+ - label: "I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `main` branch)."
required: true
- type: textarea
diff --git a/.github/ISSUE_TEMPLATE/3-feature-request.yml b/.github/ISSUE_TEMPLATE/3-feature-request.yml
index 73478dccd..eb3645bc0 100644
--- a/.github/ISSUE_TEMPLATE/3-feature-request.yml
+++ b/.github/ISSUE_TEMPLATE/3-feature-request.yml
@@ -13,7 +13,7 @@ body:
required: true
- label: "I have tested with the [latest development wheel](http://www.open3d.org/docs/latest/getting_started.html#development-version-pip)."
required: true
- - label: "I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `master` branch)."
+ - label: "I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `main` branch)."
required: true
- type: textarea
diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml
index 0ebf751fd..c64247c92 100644
--- a/.github/workflows/style.yml
+++ b/.github/workflows/style.yml
@@ -3,7 +3,7 @@ name: Style check
on:
workflow_dispatch:
push:
- branches: [master, dev]
+ branches: [main, dev]
pull_request:
types: [opened, reopened, synchronize]
diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml
index 0362236f0..a8ed5e533 100644
--- a/.github/workflows/ubuntu.yml
+++ b/.github/workflows/ubuntu.yml
@@ -3,7 +3,7 @@ name: Ubuntu CI
on:
workflow_dispatch:
push:
- branches: [master, dev]
+ branches: [main, dev]
pull_request:
types: [opened, reopened, synchronize]
diff --git a/README.md b/README.md
index f565eb5bb..e710989ed 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
ML
@@ -199,8 +199,8 @@ pipeline.run_train()
```
-For more examples see [`examples/`](https://github.com/isl-org/Open3D-ML/tree/master/examples)
-and the [`scripts/`](https://github.com/isl-org/Open3D-ML/tree/master/scripts) directories. You
+For more examples see [`examples/`](https://github.com/isl-org/Open3D-ML/tree/main/examples)
+and the [`scripts/`](https://github.com/isl-org/Open3D-ML/tree/main/scripts) directories. You
can also enable saving training summaries in the config file and visualize ground truth and
results with tensorboard. See this [tutorial](docs/tensorboard.md#3dml-models-training-and-inference)
for details.
@@ -272,10 +272,10 @@ pipeline.run_train()
Below is an example of visualization using KITTI. The example shows the use of bounding boxes for the KITTI dataset.
-
+
-For more examples see [`examples/`](https://github.com/isl-org/Open3D-ML/tree/master/examples)
-and the [`scripts/`](https://github.com/isl-org/Open3D-ML/tree/master/scripts) directories. You
+For more examples see [`examples/`](https://github.com/isl-org/Open3D-ML/tree/main/examples)
+and the [`scripts/`](https://github.com/isl-org/Open3D-ML/tree/main/scripts) directories. You
can also enable saving training summaries in the config file and visualize ground truth and
results with tensorboard. See this [tutorial](docs/tensorboard.md#3dml-models-training-and-inference)
for details.
@@ -284,7 +284,7 @@ for details.
### Using predefined scripts
-[`scripts/run_pipeline.py`](https://github.com/isl-org/Open3D-ML/blob/master/scripts/run_pipeline.py)
+[`scripts/run_pipeline.py`](https://github.com/isl-org/Open3D-ML/blob/main/scripts/run_pipeline.py)
provides an easy interface for training and evaluating a model on a dataset. It saves
the trouble of defining specific model and passing exact configuration.
@@ -409,7 +409,7 @@ The following is a list of datasets for which we provide dataset reader classes.
- Waymo ([project-page](https://waymo.com/open/))
- ScanNet([project-page](http://www.scan-net.org/))
-For downloading these datasets visit the respective webpages and have a look at the scripts in [`scripts/download_datasets`](https://github.com/isl-org/Open3D-ML/tree/master/scripts/download_datasets).
+For downloading these datasets visit the respective webpages and have a look at the scripts in [`scripts/download_datasets`](https://github.com/isl-org/Open3D-ML/tree/main/scripts/download_datasets).
## How-tos
diff --git a/ci/run_ci.sh b/ci/run_ci.sh
index f4ae82eca..0d10a3d6c 100755
--- a/ci/run_ci.sh
+++ b/ci/run_ci.sh
@@ -9,8 +9,8 @@ echo 1. Prepare the Open3D-ML repo and install dependencies
echo
export PATH_TO_OPEN3D_ML="$PWD"
echo "$PATH_TO_OPEN3D_ML"
-# the build system of the main repo expects a master branch. make sure master exists
-git checkout -b master || true
+# the build system of the main repo expects a main branch. make sure main exists
+git checkout -b main || true
python -m pip install -U pip==$PIP_VER
python -m pip install -r requirements.txt \
-r requirements-torch.txt
@@ -21,7 +21,7 @@ python -m pip install -U Cython
echo 2. clone Open3D and install dependencies
echo
-git clone --branch master https://github.com/isl-org/Open3D.git
+git clone --branch main https://github.com/isl-org/Open3D.git
./Open3D/util/install_deps_ubuntu.sh assume-yes
python -m pip install -r Open3D/python/requirements.txt \
diff --git a/model_zoo.md b/model_zoo.md
index 829c4a3bc..482d8f000 100644
--- a/model_zoo.md
+++ b/model_zoo.md
@@ -34,5 +34,5 @@ The following is a list of datasets for which we provide dataset reader classes.
* S3DIS ([project-page](http://3dsemantics.stanford.edu/))
* Paris-Lille 3D ([project-page](https://npm3d.fr/paris-lille-3d))
-For downloading these datasets visit the respective webpages and have a look at the scripts in [`scripts/download_datasets`](https://github.com/isl-org/Open3D-ML/tree/master/scripts/download_datasets).
+For downloading these datasets visit the respective webpages and have a look at the scripts in [`scripts/download_datasets`](https://github.com/isl-org/Open3D-ML/tree/main/scripts/download_datasets).
diff --git a/scripts/run_pipeline.py b/scripts/run_pipeline.py
index 91a9e409a..895f470f7 100644
--- a/scripts/run_pipeline.py
+++ b/scripts/run_pipeline.py
@@ -199,8 +199,8 @@ def main():
def setup(rank, world_size, args):
- os.environ['MASTER_ADDR'] = args.host
- os.environ['MASTER_PORT'] = args.port
+ os.environ['PRIMARY_ADDR'] = args.host
+ os.environ['PRIMARY_PORT'] = args.port
# initialize the process group
dist.init_process_group(args.backend, rank=rank, world_size=world_size)
diff --git a/scripts/train_scripts/pointpillars_waymo.sh b/scripts/train_scripts/pointpillars_waymo.sh
index a1cd7dadc..f135e9083 100644
--- a/scripts/train_scripts/pointpillars_waymo.sh
+++ b/scripts/train_scripts/pointpillars_waymo.sh
@@ -15,9 +15,9 @@ if [ "$#" -ne 2 ]; then
exit 1
fi
-# Use launch node as master, if not set
-export MASTER_ADDR=${MASTER_ADDR:-$SLURMD_NODENAME}
-export MASTER_PORT=${MASTER_PORT:-29500}
+# Use launch node as main, if not set
+export PRIMARY_ADDR=${PRIMARY_ADDR:-$SLURMD_NODENAME}
+export PRIMARY_PORT=${PRIMARY_PORT:-29500}
# Use all available GPUs, if not set. Must be the same for ALL nodes.
export DEVICE_IDS=${DEVICE_IDS:-$(nvidia-smi --list-gpus | cut -f2 -d' ' | tr ':\n' ' ')}
export NODE_RANK=${NODE_RANK:-SLURM_NODEID} # Pass name of env var
@@ -32,7 +32,7 @@ srun -l python scripts/run_pipeline.py "$1" -c ml3d/configs/pointpillars_waymo.y
--backend nccl \
--nodes $SLURM_JOB_NUM_NODES \
--node_rank "$NODE_RANK" \
- --host "$MASTER_ADDR" --port "$MASTER_PORT"
+ --host "$PRIMARY_ADDR" --port "$PRIMARY_PORT"
echo Completed at: $(date)
popd