Skip to content

Commit

Permalink
Add CI (#42)
Browse files Browse the repository at this point in the history
  • Loading branch information
benemer committed Sep 20, 2024
1 parent 2c51b5a commit 428cee2
Show file tree
Hide file tree
Showing 28 changed files with 124 additions and 67 deletions.
18 changes: 18 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Style Check

on:
push:
branches: ["main"]
pull_request:
branches: ["main"]

jobs:
pre-commit:
name: Pre-commit checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.10"
- uses: pre-commit/action@v3.0.0
24 changes: 24 additions & 0 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Python API
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]

jobs:
python_package:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-20.04]

steps:
- uses: actions/checkout@v3
- name: Setup Python3
uses: actions/setup-python@v3
- name: Install dependencies
run: python -m pip install --upgrade pip
- name: Build pip package
run: python -m pip install --verbose .
- name: Test installation
run: mos4d_pipeline --help
18 changes: 18 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
exclude: \.patch$
- id: end-of-file-fixer
exclude: \.patch$
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/psf/black
rev: 23.1.0
hooks:
- id: black
- repo: https://github.com/pycqa/isort
rev: 5.12.0
hooks:
- id: isort
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ mos4d_pipeline --help
```
to see how to run 4DMOS.

Check the [Download](#downloads) section for a pre-trained model. Like [KISS-ICP](https://github.com/PRBonn/kiss-icp), our pipeline runs on a variety of point cloud data formats like `bin`, `pcd`, `ply`, `xyz`, `rosbags`, and more. To visualize these, just type
Check the [Download](#downloads) section for a pre-trained model. Like [KISS-ICP](https://github.com/PRBonn/kiss-icp), our pipeline runs on a variety of point cloud data formats like `bin`, `pcd`, `ply`, `xyz`, `rosbags`, and more. To visualize these, just type

```bash
mos4d_pipeline --visualize /path/to/weights.ckpt /path/to/data
Expand Down
2 changes: 1 addition & 1 deletion config/apollo.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
data:
deskew: False
deskew: False

mos:
max_range_mos: -1.0 # No limit
2 changes: 1 addition & 1 deletion config/kitti-tracking.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
data:
deskew: True
deskew: True

mos:
max_range_mos: -1.0 # No limit
2 changes: 1 addition & 1 deletion config/kitti.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
data:
deskew: False
deskew: False

mos:
max_range_mos: -1.0 # No limit
10 changes: 5 additions & 5 deletions scripts/cache_to_ply.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,19 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

import os
import typer
import importlib
import os
from pathlib import Path
from typing import List, Optional

import numpy as np
import torch
from typing import List, Optional
import typer
from torch.utils.data import DataLoader
from tqdm import tqdm
from pathlib import Path

from mos4d.datasets.mos4d_dataset import MOS4DDataset, collate_fn
from mos4d.config import load_config
from mos4d.datasets.mos4d_dataset import MOS4DDataset, collate_fn


def cache_to_ply(
Expand Down
6 changes: 4 additions & 2 deletions scripts/precache.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

from tqdm import tqdm
from pathlib import Path
from typing import List, Optional

import typer
from tqdm import tqdm

from mos4d.config import load_config

Expand Down Expand Up @@ -62,8 +63,9 @@ def precache(
),
):
from torch.utils.data import DataLoader
from mos4d.datasets.mos4d_dataset import collate_fn

from mos4d.datasets.mos4d_dataset import MOS4DDataset as Dataset
from mos4d.datasets.mos4d_dataset import collate_fn

cfg = load_config(config)
sequences = list(sequence) if len(sequence) > 0 else cfg.training.train + cfg.training.val
Expand Down
7 changes: 4 additions & 3 deletions scripts/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,17 @@
# SOFTWARE.

import os
from pathlib import Path
from typing import Optional

import torch
import typer
from typing import Optional
from pathlib import Path
from pytorch_lightning import Trainer
from pytorch_lightning import loggers as pl_loggers
from pytorch_lightning.callbacks import LearningRateMonitor, ModelCheckpoint

from mos4d.utils.seed import set_seed
from mos4d.config import load_config
from mos4d.utils.seed import set_seed


def train(
Expand Down
2 changes: 1 addition & 1 deletion src/mos4d/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

import typer
from kiss_icp.tools.cmd import guess_dataloader

from mos4d.datasets import (
available_dataloaders,
jumpable_dataloaders,
Expand Down Expand Up @@ -172,7 +173,6 @@ def mos4d_pipeline(
jump = 0
# Lazy-loading for faster CLI
from mos4d.datasets import dataset_factory

from mos4d.pipeline import MOS4DPipeline as Pipeline

Pipeline(
Expand Down
1 change: 1 addition & 0 deletions src/mos4d/config/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from typing import List

from pydantic import BaseModel, Field


Expand Down
8 changes: 1 addition & 7 deletions src/mos4d/config/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,12 @@

import importlib
import sys

from pathlib import Path
from typing import Any, Dict, Optional

from pydantic_settings import BaseSettings, SettingsConfigDict

from mos4d.config.config import (
DataConfig,
OdometryConfig,
MOSConfig,
TrainingConfig,
)
from mos4d.config.config import DataConfig, MOSConfig, OdometryConfig, TrainingConfig


class MOS4DConfig(BaseSettings):
Expand Down
1 change: 1 addition & 0 deletions src/mos4d/datasets/apollo.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
# SOFTWARE.

import numpy as np

from mos4d.datasets.kitti import SemanticKITTIDataset


Expand Down
1 change: 1 addition & 0 deletions src/mos4d/datasets/helimos.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import glob
import os

import numpy as np


Expand Down
1 change: 1 addition & 0 deletions src/mos4d/datasets/kitti.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import glob
import os

import numpy as np
from kiss_icp.datasets.kitti import KITTIOdometryDataset

Expand Down
1 change: 1 addition & 0 deletions src/mos4d/datasets/kitti_tracking.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
# SOFTWARE.

import numpy as np

from mos4d.datasets.kitti import SemanticKITTIDataset


Expand Down
15 changes: 8 additions & 7 deletions src/mos4d/datasets/mos4d_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,18 @@
# SOFTWARE.

import os
import torch
import numpy as np
from typing import Dict
from pathlib import Path
from torch.utils.data import Dataset, DataLoader
from typing import Dict

import numpy as np
import torch
from pytorch_lightning import LightningDataModule
from torch.utils.data import DataLoader, Dataset

from mos4d.utils.cache import get_cache, memoize
from mos4d.config import MOS4DConfig, DataConfig, OdometryConfig
from mos4d.odometry import Odometry
from mos4d.config import DataConfig, MOS4DConfig, OdometryConfig
from mos4d.datasets import dataset_factory, sequence_dataloaders
from mos4d.odometry import Odometry
from mos4d.utils.cache import get_cache, memoize


def collate_fn(batch):
Expand Down
3 changes: 2 additions & 1 deletion src/mos4d/datasets/nuscenes.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@
import sys
from pathlib import Path
from typing import List

import numpy as np
from nuscenes.utils.geometry_utils import transform_matrix
from pyquaternion import Quaternion
import numpy as np


class NuScenesDataset:
Expand Down
2 changes: 1 addition & 1 deletion src/mos4d/minkunet.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
# Please cite "4D Spatio-Temporal ConvNets: Minkowski Convolutional Neural
# Networks", CVPR'19 (https://arxiv.org/abs/1904.08755) if you use any part
# of the code.
import torch.nn as nn
import MinkowskiEngine as ME
import torch.nn as nn


class BasicBlock(nn.Module):
Expand Down
7 changes: 4 additions & 3 deletions src/mos4d/mos4d.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@
# @file mos4d.py
# @author Benedikt Mersch [mersch@igg.uni-bonn.de]
# Copyright (c) 2022 Benedikt Mersch, all rights reserved
import torch
import torch.nn as nn
import copy
import numpy as np

import MinkowskiEngine as ME
import numpy as np
import torch
import torch.nn as nn
from pytorch_lightning import LightningModule

from mos4d.minkunet import CustomMinkUNet14
Expand Down
4 changes: 2 additions & 2 deletions src/mos4d/odometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@
# SOFTWARE.

import numpy as np
from mos4d.config import DataConfig, OdometryConfig

from kiss_icp.config import KISSConfig
from kiss_icp.kiss_icp import KissICP

from mos4d.config import DataConfig, OdometryConfig


def parse_config(config_data: DataConfig, config_odometry: OdometryConfig):
kiss_config = KISSConfig()
Expand Down
14 changes: 7 additions & 7 deletions src/mos4d/pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,22 @@

import os
import time
from collections import deque
from pathlib import Path
from typing import Optional
from collections import deque
import torch
import numpy as np
from tqdm.auto import trange

import numpy as np
import torch
from kiss_icp.pipeline import OdometryPipeline
from tqdm.auto import trange

from mos4d.config import load_config
from mos4d.metrics import get_confusion_matrix
from mos4d.mos4d import MOS4DNet
from mos4d.odometry import Odometry
from mos4d.metrics import get_confusion_matrix
from mos4d.utils.visualizer import MOS4DVisualizer, StubVisualizer
from mos4d.utils.pipeline_results import MOSPipelineResults
from mos4d.utils.save import KITTIWriter, StubWriter
from mos4d.config import load_config
from mos4d.utils.visualizer import MOS4DVisualizer, StubVisualizer


def prob_to_log_odds(prob):
Expand Down
16 changes: 5 additions & 11 deletions src/mos4d/training_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,18 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

import torch
import numpy as np

import torch
from pytorch_lightning import LightningModule
from mos4d.mos4d import MOS4DNet

from mos4d.config import MOS4DConfig
from mos4d.metrics import get_confusion_matrix, get_iou, get_precision, get_recall
from mos4d.mos4d import MOS4DNet
from mos4d.utils.augmentation import (
rotate_point_cloud,
random_flip_point_cloud,
random_scale_point_cloud,
rotate_perturbation_point_cloud,
)

from mos4d.metrics import (
get_confusion_matrix,
get_iou,
get_precision,
get_recall,
rotate_point_cloud,
)


Expand Down
11 changes: 3 additions & 8 deletions src/mos4d/utils/pipeline_results.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,10 @@
# SOFTWARE.

import numpy as np
from kiss_icp.metrics import absolute_trajectory_error, sequence_error
from kiss_icp.tools.pipeline_results import PipelineResults
from kiss_icp.metrics import sequence_error, absolute_trajectory_error
from mos4d.metrics import (
get_stats,
get_iou,
get_recall,
get_f1,
get_precision,
)

from mos4d.metrics import get_f1, get_iou, get_precision, get_recall, get_stats


class MOSPipelineResults(PipelineResults):
Expand Down
Loading

0 comments on commit 428cee2

Please sign in to comment.