diff --git a/.gitignore b/.gitignore
index 24dd579..2f87dfa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,10 +2,13 @@
data/
.DS_store
__pycache__
-Monoloco/*.pyc
+monstereo/*.pyc
.pytest*
-dist/
build/
+dist/
*.egg-info
tests/*.png
-kitti-eval/*
+kitti-eval/build
+kitti-eval/cmake-build-debug
+figures/
+visual_tests/
diff --git a/.pylintrc b/.pylintrc
index 4685a31..dc2e7fa 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -9,7 +9,7 @@ Good-names=xx,dd,zz,hh,ww,pp,kk,lr,w1,w2,w3,mm,im,uv,ax,COV_MIN,CONF_MIN
[TYPECHECK]
-disable=E1102,missing-docstring,useless-object-inheritance,duplicate-code,too-many-arguments,too-many-instance-attributes,too-many-locals,too-few-public-methods,arguments-differ,logging-format-interpolation
+disable=import-error,invalid-name,unused-variable,E1102,missing-docstring,useless-object-inheritance,duplicate-code,too-many-arguments,too-many-instance-attributes,too-many-locals,too-few-public-methods,arguments-differ,logging-format-interpolation,import-outside-toplevel
# List of members which are set dynamically and missed by pylint inference
diff --git a/LICENSE b/LICENSE
index 06eabdd..8ddfc99 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright 2019 by EPFL/VITA. All rights reserved.
+Copyright 2020-2021 by EPFL/VITA. All rights reserved.
This project and all its files are licensed under
GNU AGPLv3 or later version.
@@ -6,4 +6,4 @@ GNU AGPLv3 or later version.
If this license is not suitable for your business or project
please contact EPFL-TTO (https://tto.epfl.ch/) for a full commercial license.
-This software may not be used to harm any person deliberately.
+This software may not be used to harm any person deliberately or for any military application.
diff --git a/README.md b/README.md
index 2b96417..bdeba19 100644
--- a/README.md
+++ b/README.md
@@ -1,51 +1,59 @@
-# Monoloco
+# Perceiving Humans in 3D
-> We tackle the fundamentally ill-posed problem of 3D human localization from monocular RGB images. Driven by the limitation of neural networks outputting point estimates, we address the ambiguity in the task by predicting confidence intervals through a loss function based on the Laplace distribution. Our architecture is a light-weight feed-forward neural network that predicts 3D locations and corresponding confidence intervals given 2D human poses. The design is particularly well suited for small training data, cross-dataset generalization, and real-time applications. Our experiments show that we (i) outperform state-of-the-art results on KITTI and nuScenes datasets, (ii) even outperform a stereo-based method for far-away pedestrians, and (iii) estimate meaningful confidence intervals. We further share insights on our model of uncertainty in cases of limited observations and out-of-distribution samples.
+This repository contains the code for two research projects:
+
+1. **Perceiving Humans: from Monocular 3D Localization to Social Distancing (MonoLoco++)**
+ [README](https://github.com/vita-epfl/monstereo/blob/master/docs/MonoLoco%2B%2B.md) & [Article](https://arxiv.org/abs/2009.00984)
+
+ 
+
+ 
+
+
+2. **MonStereo: When Monocular and Stereo Meet at the Tail of 3D Human Localization**
+[README](https://github.com/vita-epfl/monstereo/blob/master/docs/MonStereo.md) & [Article](https://arxiv.org/abs/2008.10913)
+
+ 
-```
-@InProceedings{Bertoni_2019_ICCV,
-author = {Bertoni, Lorenzo and Kreiss, Sven and Alahi, Alexandre},
-title = {MonoLoco: Monocular 3D Pedestrian Localization and Uncertainty Estimation},
-booktitle = {The IEEE International Conference on Computer Vision (ICCV)},
-month = {October},
-year = {2019}
-}
-```
-**2021**
+Both projects has been built upon the CVPR'19 project [Openpifpaf](https://github.com/vita-epfl/openpifpaf)
+for 2D pose estimation and the ICCV'19 project [MonoLoco](https://github.com/vita-epfl/monoloco) for monocular 3D localization.
+All projects share the AGPL Licence.
-**NEW! MonoLoco++ is [available](https://github.com/vita-epfl/monstereo):**
-* It estimates 3D localization, orientation, and bounding box dimensions
-* It verifies social distance requirements. More info: [video](https://www.youtube.com/watch?v=r32UxHFAJ2M) and [project page](http://vita.epfl.ch/monoloco)
-* It works with [OpenPifPaf](https://github.com/vita-epfl/openpifpaf) 0.12 and PyTorch 1.7
-
-**2020**
-* Paper on [ICCV'19](http://openaccess.thecvf.com/content_ICCV_2019/html/Bertoni_MonoLoco_Monocular_3D_Pedestrian_Localization_and_Uncertainty_Estimation_ICCV_2019_paper.html) website or [ArXiv](https://arxiv.org/abs/1906.06059)
-* Check our video with method description and qualitative results on [YouTube](https://www.youtube.com/watch?v=ii0fqerQrec)
-
-* Live demo available! (more info in the webcam section)
-
-* Continuously tested with Travis CI: [](https://travis-ci.org/vita-epfl/monoloco)
-
-
# Setup
+Installation steps are the same for both projects.
### Install
-Python 3 is required. Python 2 is not supported.
-Do not clone this repository and make sure there is no folder named monoloco in your current directory.
+The installation has been tested on OSX and Linux operating systems, with Python 3.6 or Python 3.7.
+Packages have been installed with pip and virtual environments.
+For quick installation, do not clone this repository,
+and make sure there is no folder named monstereo in your current directory.
+A GPU is not required, yet highly recommended for real-time performances.
+MonoLoco++ and MonStereo can be installed as a single package, by:
```
-pip3 install monoloco
+pip3 install monstereo
```
-For development of the monoloco source code itself, you need to clone this repository and then:
+For development of the monstereo source code itself, you need to clone this repository and then:
```
-pip3 install -e '.[test, prep]'
+pip3 install sdist
+cd monstereo
+python3 setup.py sdist bdist_wheel
+pip3 install -e .
```
-Python 3.6 or 3.7 is required for nuScenes development kit.
-All details for Pifpaf pose detector at [openpifpaf](https://github.com/vita-epfl/openpifpaf).
+### Interfaces
+All the commands are run through a main file called `main.py` using subparsers.
+To check all the commands for the parser and the subparsers (including openpifpaf ones) run:
+* `python3 -m monstereo.run --help`
+* `python3 -m monstereo.run predict --help`
+* `python3 -m monstereo.run train --help`
+* `python3 -m monstereo.run eval --help`
+* `python3 -m monstereo.run prep --help`
+
+or check the file `monstereo/run.py`
### Data structure
@@ -53,7 +61,7 @@ All details for Pifpaf pose detector at [openpifpaf](https://github.com/vita-epf
├── arrays
├── models
├── kitti
- ├── nuscenes
+ ├── figures
├── logs
@@ -61,163 +69,10 @@ Run the following to create the folders:
```
mkdir data
cd data
-mkdir arrays models kitti nuscenes logs
+mkdir arrays models kitti figures logs
```
-### Pre-trained Models
-* Download a MonoLoco pre-trained model from
-[Google Drive](https://drive.google.com/open?id=1F7UG1HPXGlDD_qL-AN5cv2Eg-mhdQkwv) and save it in `data/models`
-(default) or in any folder and call it through the command line option `--model `
-* Pifpaf pre-trained model will be automatically downloaded at the first run.
-Three standard, pretrained models are available when using the command line option
-`--checkpoint resnet50`, `--checkpoint resnet101` and `--checkpoint resnet152`.
-Alternatively, you can download a Pifpaf pre-trained model from [openpifpaf](https://github.com/vita-epfl/openpifpaf)
- and call it with `--checkpoint `
-
-
-# Interfaces
-All the commands are run through a main file called `main.py` using subparsers.
-To check all the commands for the parser and the subparsers (including openpifpaf ones) run:
-
-* `python3 -m monoloco.run --help`
-* `python3 -m monoloco.run predict --help`
-* `python3 -m monoloco.run train --help`
-* `python3 -m monoloco.run eval --help`
-* `python3 -m monoloco.run prep --help`
-
-or check the file `monoloco/run.py`
-
-# Prediction
-The predict script receives an image (or an entire folder using glob expressions),
-calls PifPaf for 2d human pose detection over the image
-and runs Monoloco for 3d location of the detected poses.
-The command `--networks` defines if saving pifpaf outputs, MonoLoco outputs or both.
-You can check all commands for Pifpaf at [openpifpaf](https://github.com/vita-epfl/openpifpaf).
-
-
-Output options include json files and/or visualization of the predictions on the image in *frontal mode*,
-*birds-eye-view mode* or *combined mode* and can be specified with `--output_types`
-
-
-### Ground truth matching
-* In case you provide a ground-truth json file to compare the predictions of MonoLoco,
- the script will match every detection using Intersection over Union metric.
- The ground truth file can be generated using the subparser `prep` and called with the command `--path_gt`.
- Check preprocess section for more details or download the file from
- [here](https://drive.google.com/open?id=1F7UG1HPXGlDD_qL-AN5cv2Eg-mhdQkwv).
-
-* In case you don't provide a ground-truth file, the script will look for a predefined path.
-If it does not find the file, it will generate images
-with all the predictions without ground-truth matching.
-
-Below an example with and without ground-truth matching. They have been created (adding or removing `--path_gt`) with:
-`python3 -m monoloco.run predict --glob docs/002282.png --output_types combined --scale 2
---model data/models/monoloco-190513-1437.pkl --n_dropout 50 --z_max 30`
-
-With ground truth matching (only matching people):
-
-
-Without ground_truth matching (all the detected people):
-
-
-### Images without calibration matrix
-To accurately estimate distance, the focal length is necessary.
-However, it is still possible to test Monoloco on images where the calibration matrix is not available.
-Absolute distances are not meaningful but relative distance still are.
-Below an example on a generic image from the web, created with:
-`python3 -m monoloco.run predict --glob docs/surf.jpg --output_types combined --model data/models/monoloco-190513-1437.pkl --n_dropout 50 --z_max 25`
-
-
-
-
-# Webcam
-
-
-MonoLoco can run on personal computers with only CPU and low resolution images (e.g. 256x144) at ~2fps.
-It support 3 types of visualizations: `front`, `bird` and `combined`.
-Multiple visualizations can be combined in different windows.
-
-The above gif has been obtained running on a Macbook the command:
-
-```pip3 install opencv-python
-python3 -m monoloco.run predict --webcam --scale 0.2 --output_types combined --z_max 10 --checkpoint resnet50 --model data/models/monoloco-190513-1437.pkl
-```
-
-# Preprocessing
-
-### Datasets
-
-#### 1) KITTI dataset
-Download KITTI ground truth files and camera calibration matrices for training
-from [here](http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d) and
-save them respectively into `data/kitti/gt` and `data/kitti/calib`.
-To extract pifpaf joints, you also need to download training images soft link the folder in `
-data/kitti/images`
-
-#### 2) nuScenes dataset
-Download nuScenes dataset from [nuScenes](https://www.nuscenes.org/download) (either Mini or TrainVal),
-save it anywhere and soft link it in `data/nuscenes`
-
-nuScenes preprocessing requires `pip3 install nuscenes-devkit`
-
-
-### Annotations to preprocess
-MonoLoco is trained using 2D human pose joints. To create them run pifaf over KITTI or nuScenes training images.
-You can create them running the predict script and using `--networks pifpaf`.
-
-### Inputs joints for training
-MonoLoco is trained using 2D human pose joints matched with the ground truth location provided by
-nuScenes or KITTI Dataset. To create the joints run: `python3 -m monoloco.run prep` specifying:
-1. `--dir_ann` annotation directory containing Pifpaf joints of KITTI or nuScenes.
-
-2. `--dataset` Which dataset to preprocess. For nuscenes, all three versions of the
-dataset are supported: nuscenes_mini, nuscenes, nuscenes_teaser.
-
-### Ground truth file for evaluation
-The preprocessing script also outputs a second json file called **names-.json** which provide a dictionary indexed
-by the image name to easily access ground truth files for evaluation and prediction purposes.
-
-
-
-# Training
-Provide the json file containing the preprocess joints as argument.
-
-As simple as `python3 -m monoloco.run --train --joints `
-
-All the hyperparameters options can be checked at `python3 -m monoloco.run train --help`.
-
-### Hyperparameters tuning
-Random search in log space is provided. An example: `python3 -m monoloco.run train --hyp --multiplier 10 --r_seed 1`.
-One iteration of the multiplier includes 6 runs.
-
-
-# Evaluation (KITTI Dataset)
-We provide evaluation on KITTI for models trained on nuScenes or KITTI. We compare them with other monocular
-and stereo Baselines:
-
-[Mono3D](https://www.cs.toronto.edu/~urtasun/publications/chen_etal_cvpr16.pdf),
-[3DOP](https://xiaozhichen.github.io/papers/nips15chen.pdf),
-[MonoDepth](https://arxiv.org/abs/1609.03677) and our
-[Geometrical Baseline](monoloco/eval/geom_baseline.py).
-
-* **Mono3D**: download validation files from [here](http://3dimage.ee.tsinghua.edu.cn/cxz/mono3d)
-and save them into `data/kitti/m3d`
-* **3DOP**: download validation files from [here](https://xiaozhichen.github.io/)
-and save them into `data/kitti/3dop`
-* **MonoDepth**: compute an average depth for every instance using the following script
-[here](https://github.com/Parrotlife/pedestrianDepth-baseline/tree/master/MonoDepth-PyTorch)
-and save them into `data/kitti/monodepth`
-* **GeometricalBaseline**: A geometrical baseline comparison is provided.
-The average geometrical value for comparison can be obtained running:
-`python3 -m monoloco.run eval --geometric
---model data/models/monoloco-190719-0923.pkl --joints data/arrays/joints-nuscenes_teaser-190717-1424.json`
-
-
-The following results are obtained running:
-`python3 -m monoloco.run eval --model data/models/monoloco-190719-0923.pkl --generate
---dir_ann `
-
-
-
-
+Further instructions for prediction, preprocessing, training and evaluation can be found here:
+* [MonoLoco++ README](https://github.com/vita-epfl/monstereo/blob/master/docs/MonoLoco%2B%2B.md)
+* [MonStereo README](https://github.com/vita-epfl/monstereo/blob/master/docs/MonStereo.md)
diff --git a/docs/000840.png b/docs/000840.png
new file mode 100755
index 0000000..fb2baa3
Binary files /dev/null and b/docs/000840.png differ
diff --git a/docs/000840_multi.jpg b/docs/000840_multi.jpg
new file mode 100644
index 0000000..fd6676a
Binary files /dev/null and b/docs/000840_multi.jpg differ
diff --git a/docs/000840_right.png b/docs/000840_right.png
new file mode 100755
index 0000000..cef53d1
Binary files /dev/null and b/docs/000840_right.png differ
diff --git a/docs/005523.png b/docs/005523.png
new file mode 100755
index 0000000..b9925ba
Binary files /dev/null and b/docs/005523.png differ
diff --git a/docs/005523_right.png b/docs/005523_right.png
new file mode 100755
index 0000000..926333b
Binary files /dev/null and b/docs/005523_right.png differ
diff --git a/docs/MonStereo.md b/docs/MonStereo.md
new file mode 100644
index 0000000..48f1ddf
--- /dev/null
+++ b/docs/MonStereo.md
@@ -0,0 +1,151 @@
+
+# MonStereo
+
+
+ > Monocular and stereo vision are cost-effective solutions for 3D human localization
+ in the context of self-driving cars or social robots. However, they are usually developed independently
+ and have their respective strengths and limitations. We propose a novel unified learning framework that
+ leverages the strengths of both monocular and stereo cues for 3D human localization.
+ Our method jointly (i) associates humans in left-right images,
+ (ii) deals with occluded and distant cases in stereo settings by relying on the robustness of monocular cues,
+ and (iii) tackles the intrinsic ambiguity of monocular perspective projection by exploiting prior knowledge
+ of human height distribution.
+We achieve state-of-the-art quantitative results for the 3D localization task on KITTI dataset
+and estimate confidence intervals that account for challenging instances.
+We show qualitative examples for the long tail challenges such as occluded,
+far-away, and children instances.
+
+```
+@InProceedings{bertoni_monstereo,
+author = {Bertoni, Lorenzo and Kreiss, Sven and Mordan, Taylor and Alahi, Alexandre},
+title = {MonStereo: When Monocular and Stereo Meet at the Tail of 3D Human Localization},
+booktitle = {arXiv:2008.10913},
+month = {August},
+year = {2020}
+}
+```
+
+# Prediction
+The predict script receives an image (or an entire folder using glob expressions),
+calls PifPaf for 2d human pose detection over the image
+and runs MonStereo for 3d location of the detected poses.
+
+Output options include json files and/or visualization of the predictions on the image in *frontal mode*,
+*birds-eye-view mode* or *multi mode* and can be specified with `--output_types`
+
+
+### Pre-trained Models
+* Download Monstereo pre-trained model from
+[Google Drive](https://drive.google.com/drive/folders/1jZToVMBEZQMdLB5BAIq2CdCLP5kzNo9t?usp=sharing),
+and save them in `data/models`
+(default) or in any folder and call it through the command line option `--model `
+* Pifpaf pre-trained model will be automatically downloaded at the first run.
+Three standard, pretrained models are available when using the command line option
+`--checkpoint resnet50`, `--checkpoint resnet101` and `--checkpoint resnet152`.
+Alternatively, you can download a Pifpaf pre-trained model from [openpifpaf](https://github.com/vita-epfl/openpifpaf)
+ and call it with `--checkpoint `. All experiments have been run with v0.8 of pifpaf.
+ If you'd like to use an updated version, we suggest to re-train the MonStereo model as well.
+* The model for the experiments is provided in *data/models/ms-200710-1511.pkl*
+
+
+### Ground truth matching
+* In case you provide a ground-truth json file to compare the predictions of MonSter,
+ the script will match every detection using Intersection over Union metric.
+ The ground truth file can be generated using the subparser `prep` and called with the command `--path_gt`.
+As this step requires running the pose detector over all the training images and save the annotations, we
+provide the resulting json file for the category *pedestrians* from
+[Google Drive](https://drive.google.com/file/d/1e-wXTO460ip_Je2NdXojxrOrJ-Oirlgh/view?usp=sharing)
+and save it into `data/arrays`.
+
+* In case the ground-truth json file is not available, with the command `--show_all`, is possible to
+show all the prediction for the image
+
+After downloading model and ground-truth file, a demo can be tested with the following commands:
+
+`python3 -m monstereo.run predict --glob docs/000840*.png --output_types multi --scale 2
+ --model data/models/ms-200710-1511.pkl --z_max 30 --checkpoint resnet152 --path_gt data/arrays/names-kitti-200615-1022.json
+ -o data/output`
+
+
+
+`python3 -m monstereo.run predict --glob docs/005523*.png --output_types multi --scale 2
+ --model data/models/ms-200710-1511.pkl --z_max 30 --checkpoint resnet152 --path_gt data/arrays/names-kitti-200615-1022.json
+ -o data/output`
+
+
+
+# Preprocessing
+Preprocessing and training step are already fully supported by the code provided,
+but require first to run a pose detector over
+all the training images and collect the annotations.
+The code supports this option (by running the predict script and using `--mode pifpaf`).
+
+### Data structure
+
+ Data
+ ├── arrays
+ ├── models
+ ├── kitti
+ ├── logs
+ ├── output
+
+Run the following to create the folders:
+```
+mkdir data
+cd data
+mkdir arrays models kitti logs output
+```
+
+
+### Datasets
+Download KITTI ground truth files and camera calibration matrices for training
+from [here](http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d) and
+save them respectively into `data/kitti/gt` and `data/kitti/calib`.
+To extract pifpaf joints, you also need to download training images soft link the folder in `
+data/kitti/images`
+
+
+### Annotations to preprocess
+MonStereo is trained using 2D human pose joints. To obtain the joints the first step is to run
+pifaf over KITTI training images, by either running the predict script and using `--mode pifpaf`,
+ or by using pifpaf code directly.
+MonStereo preprocess script expects annotations from left and right images in 2 different folders
+with the same path apart from the suffix `_right` for the ``right" folder.
+For example `data/annotations` and `data/annotations_right`.
+ Do not change name of json files created by pifpaf. For each left annotation,
+ the code will look for the corresponding right annotation.
+
+### Inputs joints for training
+MonoStereo is trained using 2D human pose joints matched with the ground truth location provided by
+KITTI Dataset. To create the joints run: `python3 -m monstereo.run prep` specifying:
+
+`--dir_ann` annotation directory containing Pifpaf joints of KITTI for the left images.
+
+
+### Ground truth file for evaluation
+The preprocessing script also outputs a second json file called **names-.json** which provide a dictionary indexed
+by the image name to easily access ground truth files for evaluation and prediction purposes.
+
+
+# Training
+Provide the json file containing the preprocess joints as argument.
+As simple as `python3 -m monstereo.run train --joints `
+All the hyperparameters options can be checked at `python3 -m monstereo.run train --help`.
+
+# Evaluation (KITTI Dataset)
+### Average Localization Metric (ALE)
+We provide evaluation on KITTI in the eval section. Txt files for MonStereo are generated with the command:
+
+`python -m monstereo.run eval --dir_ann --model data/models/ms-200710-1511.pkl --generate`
+
+
+
+### Relative Average Precision Localization (RALP-5%)
+We modified the original C++ evaluation of KITTI to make it relative to distance. We use **cmake**.
+To run the evaluation, first generate the txt files with:
+
+`python -m monstereo.run eval --dir_ann --model data/models/ms-200710-1511.pkl --generate`
+
+Then follow the instructions of this [repository](https://github.com/cguindel/eval_kitti)
+to prepare the folders accordingly (or follow kitti guidelines) and run evaluation.
+The modified file is called *evaluate_object.cpp* and runs exactly as the original kitti evaluation.
diff --git a/docs/MonoLoco++.md b/docs/MonoLoco++.md
new file mode 100644
index 0000000..fd52cec
--- /dev/null
+++ b/docs/MonoLoco++.md
@@ -0,0 +1,230 @@
+
+# Perceiving Humans: from Monocular 3D Localization to Social Distancing
+
+> Perceiving humans in the context of Intelligent Transportation Systems (ITS)
+often relies on multiple cameras or expensive LiDAR sensors.
+In this work, we present a new cost- effective vision-based method that perceives humans’ locations in 3D
+and their body orientation from a single image.
+We address the challenges related to the ill-posed monocular 3D tasks by proposing a deep learning method
+that predicts confidence intervals in contrast to point estimates. Our neural network architecture estimates
+humans 3D body locations and their orientation with a measure of uncertainty.
+Our vision-based system (i) is privacy-safe, (ii) works with any fixed or moving cameras,
+ and (iii) does not rely on ground plane estimation.
+ We demonstrate the performance of our method with respect to three applications:
+ locating humans in 3D, detecting social interactions,
+ and verifying the compliance of recent safety measures due to the COVID-19 outbreak.
+ Indeed, we show that we can rethink the concept of “social distancing” as a form of social interaction
+ in contrast to a simple location-based rule. We publicly share the source code towards an open science mission.
+
+```
+@InProceedings{bertoni_social,
+author = {Bertoni, Lorenzo and Kreiss, Sven and Alahi, Alexandre},
+title={Perceiving Humans: from Monocular 3D Localization to Social Distancing},
+booktitle = {arXiv:2009.00984},
+month = {September},
+year = {2020}
+}
+```
+
+
+## Predictions
+For a quick setup download a pifpaf and a MonoLoco++ models from
+[here](https://drive.google.com/drive/folders/1jZToVMBEZQMdLB5BAIq2CdCLP5kzNo9t?usp=sharing) and save them into `data/models`.
+
+### 3D Localization
+The predict script receives an image (or an entire folder using glob expressions),
+calls PifPaf for 2d human pose detection over the image
+and runs Monoloco++ for 3d location of the detected poses.
+The command `--net` defines if saving pifpaf outputs, MonoLoco++ outputs or MonStereo ones.
+You can check all commands for Pifpaf at [openpifpaf](https://github.com/vita-epfl/openpifpaf).
+
+Output options include json files and/or visualization of the predictions on the image in *frontal mode*,
+*birds-eye-view mode* or *combined mode* and can be specified with `--output_types`
+
+Ground-truth KITTI files for comparing results can be downloaded from
+[here](https://drive.google.com/drive/folders/1jZToVMBEZQMdLB5BAIq2CdCLP5kzNo9t?usp=sharing)
+(file called *names-kitti*) and should be saved into `data/arrays`
+Ground-truth files can also be generated, more info in the preprocessing section.
+
+For an example image, run the following command:
+
+```
+python -m monstereo.run predict \
+docs/002282.png \
+--net monoloco_pp \
+--output_types multi \
+--model data/models/monoloco_pp-201203-1424.pkl \
+--path_gt data/arrays/names-kitti-200615-1022.json \
+-o