From 7bca125aa03f012f27c915aa5548f820904636f0 Mon Sep 17 00:00:00 2001
From: Zayyan Dalai <90850469+Zadracker@users.noreply.github.com>
Date: Mon, 10 Jun 2024 18:32:01 +0000
Subject: [PATCH 1/2] Added To-Do list app to repo
---
ToDoList.py | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++
tasks.txt | 0
2 files changed, 88 insertions(+)
create mode 100644 ToDoList.py
create mode 100644 tasks.txt
diff --git a/ToDoList.py b/ToDoList.py
new file mode 100644
index 00000000..b44ab23a
--- /dev/null
+++ b/ToDoList.py
@@ -0,0 +1,88 @@
+import os
+
+# Function to load tasks from a file
+def load_tasks(filename="tasks.txt"):
+ if os.path.exists(filename):
+ with open(filename, 'r') as file:
+ tasks = [line.strip() for line in file]
+ else:
+ tasks = []
+ return tasks
+
+# Function to save tasks to a file
+def save_tasks(tasks, filename="tasks.txt"):
+ with open(filename, 'w') as file:
+ for task in tasks:
+ file.write(task + '\n')
+
+# Function to add a new task
+def add_task(tasks):
+ task = input("Enter a new task: ")
+ tasks.append(task)
+ print(f"Task '{task}' added.")
+
+# Function to view all tasks
+def view_tasks(tasks):
+ if tasks:
+ print("\nYour Tasks:")
+ for i, task in enumerate(tasks, 1):
+ print(f"{i}. {task}")
+ else:
+ print("\nNo tasks to show.")
+
+# Function to remove a task
+def remove_task(tasks):
+ view_tasks(tasks)
+ try:
+ task_num = int(input("Enter the number of the task to remove: ")) - 1
+ if 0 <= task_num < len(tasks):
+ removed_task = tasks.pop(task_num)
+ print(f"Task '{removed_task}' removed.")
+ else:
+ print("Invalid task number.")
+ except ValueError:
+ print("Please enter a valid number.")
+
+# Function to mark a task as complete
+def mark_task_complete(tasks):
+ view_tasks(tasks)
+ try:
+ task_num = int(input("Enter the number of the task to mark as complete: ")) - 1
+ if 0 <= task_num < len(tasks):
+ tasks[task_num] = tasks[task_num] + " (Completed)"
+ print(f"Task '{tasks[task_num]}' marked as complete.")
+ else:
+ print("Invalid task number.")
+ except ValueError:
+ print("Please enter a valid number.")
+
+# Main function to run the application
+def main():
+ tasks = load_tasks()
+ while True:
+ print("\nTo-Do List Application")
+ print("1. Add Task")
+ print("2. View Tasks")
+ print("3. Remove Task")
+ print("4. Mark Task as Complete")
+ print("5. Save and Exit")
+
+ choice = input("Choose an option: ")
+ if choice == '1':
+ add_task(tasks)
+ elif choice == '2':
+ view_tasks(tasks)
+ elif choice == '3':
+ remove_task(tasks)
+ elif choice == '4':
+ mark_task_complete(tasks)
+ elif choice == '5':
+ save_tasks(tasks)
+ print("Tasks saved. Exiting...")
+ break
+ else:
+ print("Invalid choice. Please try again.")
+
+# Entry point of the application
+if __name__ == "__main__":
+ main()
diff --git a/tasks.txt b/tasks.txt
new file mode 100644
index 00000000..e69de29b
From 5960c37d01af94ec6758c65404a832d6c010401f Mon Sep 17 00:00:00 2001
From: Zayyan Dalai <90850469+Zadracker@users.noreply.github.com>
Date: Sat, 8 Feb 2025 11:30:26 +0530
Subject: [PATCH 2/2] Created using Colab
---
RandLA-Net Inference.ipynb | 925 +++++++++++++++++++++++++++++++++++++
1 file changed, 925 insertions(+)
create mode 100644 RandLA-Net Inference.ipynb
diff --git a/RandLA-Net Inference.ipynb b/RandLA-Net Inference.ipynb
new file mode 100644
index 00000000..f75a45bb
--- /dev/null
+++ b/RandLA-Net Inference.ipynb
@@ -0,0 +1,925 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "gpuType": "T4",
+ "authorship_tag": "ABX9TyM/PaJS/C/frV0tgv5gnRXA",
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ },
+ "accelerator": "GPU"
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# RandLA-Net Inference on LiDAR Point Cloud (Google Colab)\n",
+ "\n",
+ "This notebook runs inference on a `.ply` file using a pre-trained RandLA-Net model. The output will be a segmented `.ply` file that can be visualized in CloudCompare.\n",
+ "\n",
+ "## 1. Setup Environment\n",
+ "\n",
+ "### Install Dependencies\n"
+ ],
+ "metadata": {
+ "id": "EAygOTZaVAf3"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Install Python 3.10 and dependencies\n",
+ "!sudo apt-get update -y\n",
+ "!sudo apt-get install python3.10 python3.10-distutils python3.10-venv -y\n",
+ "\n",
+ "# Ensure pip is available for Python 3.10\n",
+ "!python3.10 -m ensurepip\n",
+ "\n",
+ "# Upgrade pip, setuptools, and wheel\n",
+ "!python3.10 -m pip install --upgrade pip setuptools wheel\n",
+ "\n",
+ "# Update alternatives to make Python 3.10 the default\n",
+ "!sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1\n",
+ "!sudo update-alternatives --config python3\n",
+ "\n",
+ "# Verify the active Python version\n",
+ "!python3 --version"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "cCLx-DeJ9Nfb",
+ "outputId": "bd2e079c-e5a6-4ef8-e1a5-466dbbf9280b"
+ },
+ "execution_count": 13,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "\r0% [Working]\r \rHit:1 http://archive.ubuntu.com/ubuntu jammy InRelease\n",
+ "\r0% [Connecting to security.ubuntu.com (185.125.190.82)] [Waiting for headers] [\r \rHit:2 https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/ InRelease\n",
+ "\r0% [Waiting for headers] [Connecting to security.ubuntu.com (185.125.190.82)] [\r \rHit:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease\n",
+ "\r0% [Waiting for headers] [Waiting for headers] [Waiting for headers] [Waiting f\r \rHit:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease\n",
+ "Hit:5 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 InRelease\n",
+ "Hit:6 http://security.ubuntu.com/ubuntu jammy-security InRelease\n",
+ "Hit:7 https://r2u.stat.illinois.edu/ubuntu jammy InRelease\n",
+ "Hit:8 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy InRelease\n",
+ "Hit:9 https://ppa.launchpadcontent.net/graphics-drivers/ppa/ubuntu jammy InRelease\n",
+ "Hit:10 https://ppa.launchpadcontent.net/ubuntugis/ppa/ubuntu jammy InRelease\n",
+ "Reading package lists... Done\n",
+ "W: Skipping acquire of configured file 'main/source/Sources' as repository 'https://r2u.stat.illinois.edu/ubuntu jammy InRelease' does not seem to provide it (sources.list entry misspelt?)\n",
+ "Reading package lists... Done\n",
+ "Building dependency tree... Done\n",
+ "Reading state information... Done\n",
+ "Note, selecting 'python3-distutils' instead of 'python3.10-distutils'\n",
+ "python3-distutils is already the newest version (3.10.8-1~22.04).\n",
+ "python3.10 is already the newest version (3.10.12-1~22.04.8).\n",
+ "python3.10 set to manually installed.\n",
+ "The following NEW packages will be installed:\n",
+ " python3-pip-whl python3-setuptools-whl python3.10-venv\n",
+ "0 upgraded, 3 newly installed, 0 to remove and 25 not upgraded.\n",
+ "Need to get 2,474 kB of archives.\n",
+ "After this operation, 2,885 kB of additional disk space will be used.\n",
+ "Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3-pip-whl all 22.0.2+dfsg-1ubuntu0.5 [1,680 kB]\n",
+ "Get:2 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3-setuptools-whl all 59.6.0-1.2ubuntu0.22.04.2 [788 kB]\n",
+ "Get:3 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3.10-venv amd64 3.10.12-1~22.04.8 [5,722 B]\n",
+ "Fetched 2,474 kB in 0s (8,934 kB/s)\n",
+ "debconf: unable to initialize frontend: Dialog\n",
+ "debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78, <> line 3.)\n",
+ "debconf: falling back to frontend: Readline\n",
+ "debconf: unable to initialize frontend: Readline\n",
+ "debconf: (This frontend requires a controlling tty.)\n",
+ "debconf: falling back to frontend: Teletype\n",
+ "dpkg-preconfigure: unable to re-open stdin: \n",
+ "Selecting previously unselected package python3-pip-whl.\n",
+ "(Reading database ... 129997 files and directories currently installed.)\n",
+ "Preparing to unpack .../python3-pip-whl_22.0.2+dfsg-1ubuntu0.5_all.deb ...\n",
+ "Unpacking python3-pip-whl (22.0.2+dfsg-1ubuntu0.5) ...\n",
+ "Selecting previously unselected package python3-setuptools-whl.\n",
+ "Preparing to unpack .../python3-setuptools-whl_59.6.0-1.2ubuntu0.22.04.2_all.deb ...\n",
+ "Unpacking python3-setuptools-whl (59.6.0-1.2ubuntu0.22.04.2) ...\n",
+ "Selecting previously unselected package python3.10-venv.\n",
+ "Preparing to unpack .../python3.10-venv_3.10.12-1~22.04.8_amd64.deb ...\n",
+ "Unpacking python3.10-venv (3.10.12-1~22.04.8) ...\n",
+ "Setting up python3-setuptools-whl (59.6.0-1.2ubuntu0.22.04.2) ...\n",
+ "Setting up python3-pip-whl (22.0.2+dfsg-1ubuntu0.5) ...\n",
+ "Setting up python3.10-venv (3.10.12-1~22.04.8) ...\n",
+ "ensurepip is disabled in Debian/Ubuntu for the system python.\n",
+ "\n",
+ "Python modules for the system python are usually handled by dpkg and apt-get.\n",
+ "\n",
+ " apt install python3-\n",
+ "\n",
+ "Install the python3-pip package to use pip itself. Using pip together\n",
+ "with the system python might have unexpected results for any system installed\n",
+ "module, so use it on your own risk, or make sure to only use it in virtual\n",
+ "environments.\n",
+ "\n",
+ "/usr/bin/python3.10: No module named pip\n",
+ "There are 3 choices for the alternative python3 (providing /usr/bin/python3).\n",
+ "\n",
+ " Selection Path Priority Status\n",
+ "------------------------------------------------------------\n",
+ "* 0 /usr/bin/python3.11 2 auto mode\n",
+ " 1 /usr/bin/python3.10 1 manual mode\n",
+ " 2 /usr/bin/python3.11 2 manual mode\n",
+ " 3 /usr/bin/python3.8 1 manual mode\n",
+ "\n",
+ "Press to keep the current choice[*], or type selection number: 1\n",
+ "update-alternatives: using /usr/bin/python3.10 to provide /usr/bin/python3 (python3) in manual mode\n",
+ "Python 3.10.12\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "!pip install numpy scipy h5py pandas open3d potpourri3d plyfile trimesh\n",
+ "!pip install torch torchvision torchaudio\n",
+ "!pip install torch-geometric torch-cluster torch-scatter torch-sparse torch-spline-conv\n",
+ "!pip install git+https://github.com/nicolas-chaulet/torch-points3d.git"
+ ],
+ "metadata": {
+ "id": "HAvWyD86U_OW",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "outputId": "cb6b8885-2702-46ed-c2be-494e2f252b35"
+ },
+ "execution_count": 14,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Collecting numpy\n",
+ " Downloading numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.6 kB)\n",
+ "Collecting scipy\n",
+ " Downloading scipy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (58 kB)\n",
+ "Collecting h5py\n",
+ " Downloading h5py-3.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.5 kB)\n",
+ "Collecting pandas\n",
+ " Downloading pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (18 kB)\n",
+ "Collecting open3d\n",
+ " Downloading open3d-0.19.0-cp38-cp38-manylinux_2_31_x86_64.whl.metadata (4.3 kB)\n",
+ "Collecting potpourri3d\n",
+ " Downloading potpourri3d-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (17 kB)\n",
+ "Collecting plyfile\n",
+ " Downloading plyfile-1.0.3-py3-none-any.whl.metadata (2.1 kB)\n",
+ "Collecting trimesh\n",
+ " Downloading trimesh-4.6.1-py3-none-any.whl.metadata (18 kB)\n",
+ "Collecting python-dateutil>=2.8.2 (from pandas)\n",
+ " Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)\n",
+ "Collecting pytz>=2020.1 (from pandas)\n",
+ " Downloading pytz-2025.1-py2.py3-none-any.whl.metadata (22 kB)\n",
+ "Collecting tzdata>=2022.1 (from pandas)\n",
+ " Downloading tzdata-2025.1-py2.py3-none-any.whl.metadata (1.4 kB)\n",
+ "Collecting dash>=2.6.0 (from open3d)\n",
+ " Downloading dash-2.18.2-py3-none-any.whl.metadata (10 kB)\n",
+ "Collecting werkzeug>=3.0.0 (from open3d)\n",
+ " Downloading werkzeug-3.0.6-py3-none-any.whl.metadata (3.7 kB)\n",
+ "Collecting flask>=3.0.0 (from open3d)\n",
+ " Downloading flask-3.0.3-py3-none-any.whl.metadata (3.2 kB)\n",
+ "Collecting nbformat>=5.7.0 (from open3d)\n",
+ " Downloading nbformat-5.10.4-py3-none-any.whl.metadata (3.6 kB)\n",
+ "Collecting configargparse (from open3d)\n",
+ " Downloading ConfigArgParse-1.7-py3-none-any.whl.metadata (23 kB)\n",
+ "Collecting ipywidgets>=8.0.4 (from open3d)\n",
+ " Downloading ipywidgets-8.1.5-py3-none-any.whl.metadata (2.3 kB)\n",
+ "Collecting addict (from open3d)\n",
+ " Downloading addict-2.4.0-py3-none-any.whl.metadata (1.0 kB)\n",
+ "Collecting pillow>=9.3.0 (from open3d)\n",
+ " Downloading pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl.metadata (9.2 kB)\n",
+ "Collecting matplotlib>=3 (from open3d)\n",
+ " Downloading matplotlib-3.7.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.metadata (5.7 kB)\n",
+ "Requirement already satisfied: pyyaml>=5.4.1 in /usr/lib/python3/dist-packages (from open3d) (5.4.1)\n",
+ "Collecting scikit-learn>=0.21 (from open3d)\n",
+ " Downloading scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)\n",
+ "Collecting tqdm (from open3d)\n",
+ " Downloading tqdm-4.67.1-py3-none-any.whl.metadata (57 kB)\n",
+ "Collecting pyquaternion (from open3d)\n",
+ " Downloading pyquaternion-0.9.9-py3-none-any.whl.metadata (1.4 kB)\n",
+ "Collecting plotly>=5.0.0 (from dash>=2.6.0->open3d)\n",
+ " Downloading plotly-6.0.0-py3-none-any.whl.metadata (5.6 kB)\n",
+ "Collecting dash-html-components==2.0.0 (from dash>=2.6.0->open3d)\n",
+ " Downloading dash_html_components-2.0.0-py3-none-any.whl.metadata (3.8 kB)\n",
+ "Collecting dash-core-components==2.0.0 (from dash>=2.6.0->open3d)\n",
+ " Downloading dash_core_components-2.0.0-py3-none-any.whl.metadata (2.9 kB)\n",
+ "Collecting dash-table==5.0.0 (from dash>=2.6.0->open3d)\n",
+ " Downloading dash_table-5.0.0-py3-none-any.whl.metadata (2.4 kB)\n",
+ "Requirement already satisfied: importlib-metadata in /usr/lib/python3/dist-packages (from dash>=2.6.0->open3d) (4.6.4)\n",
+ "Collecting typing-extensions>=4.1.1 (from dash>=2.6.0->open3d)\n",
+ " Downloading typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)\n",
+ "Collecting requests (from dash>=2.6.0->open3d)\n",
+ " Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)\n",
+ "Collecting retrying (from dash>=2.6.0->open3d)\n",
+ " Downloading retrying-1.3.4-py3-none-any.whl.metadata (6.9 kB)\n",
+ "Collecting nest-asyncio (from dash>=2.6.0->open3d)\n",
+ " Downloading nest_asyncio-1.6.0-py3-none-any.whl.metadata (2.8 kB)\n",
+ "Requirement already satisfied: setuptools in /usr/local/lib/python3.8/dist-packages (from dash>=2.6.0->open3d) (75.3.0)\n",
+ "Collecting Jinja2>=3.1.2 (from flask>=3.0.0->open3d)\n",
+ " Downloading jinja2-3.1.5-py3-none-any.whl.metadata (2.6 kB)\n",
+ "Collecting itsdangerous>=2.1.2 (from flask>=3.0.0->open3d)\n",
+ " Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)\n",
+ "Collecting click>=8.1.3 (from flask>=3.0.0->open3d)\n",
+ " Downloading click-8.1.8-py3-none-any.whl.metadata (2.3 kB)\n",
+ "Collecting blinker>=1.6.2 (from flask>=3.0.0->open3d)\n",
+ " Downloading blinker-1.8.2-py3-none-any.whl.metadata (1.6 kB)\n",
+ "Collecting comm>=0.1.3 (from ipywidgets>=8.0.4->open3d)\n",
+ " Downloading comm-0.2.2-py3-none-any.whl.metadata (3.7 kB)\n",
+ "Collecting ipython>=6.1.0 (from ipywidgets>=8.0.4->open3d)\n",
+ " Downloading ipython-8.12.3-py3-none-any.whl.metadata (5.7 kB)\n",
+ "Collecting traitlets>=4.3.1 (from ipywidgets>=8.0.4->open3d)\n",
+ " Downloading traitlets-5.14.3-py3-none-any.whl.metadata (10 kB)\n",
+ "Collecting widgetsnbextension~=4.0.12 (from ipywidgets>=8.0.4->open3d)\n",
+ " Downloading widgetsnbextension-4.0.13-py3-none-any.whl.metadata (1.6 kB)\n",
+ "Collecting jupyterlab-widgets~=3.0.12 (from ipywidgets>=8.0.4->open3d)\n",
+ " Downloading jupyterlab_widgets-3.0.13-py3-none-any.whl.metadata (4.1 kB)\n",
+ "Collecting contourpy>=1.0.1 (from matplotlib>=3->open3d)\n",
+ " Downloading contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.9 kB)\n",
+ "Collecting cycler>=0.10 (from matplotlib>=3->open3d)\n",
+ " Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)\n",
+ "Collecting fonttools>=4.22.0 (from matplotlib>=3->open3d)\n",
+ " Downloading fonttools-4.56.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (101 kB)\n",
+ "Collecting kiwisolver>=1.0.1 (from matplotlib>=3->open3d)\n",
+ " Downloading kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl.metadata (6.3 kB)\n",
+ "Collecting packaging>=20.0 (from matplotlib>=3->open3d)\n",
+ " Downloading packaging-24.2-py3-none-any.whl.metadata (3.2 kB)\n",
+ "Requirement already satisfied: pyparsing>=2.3.1 in /usr/lib/python3/dist-packages (from matplotlib>=3->open3d) (2.4.7)\n",
+ "Collecting importlib-resources>=3.2.0 (from matplotlib>=3->open3d)\n",
+ " Downloading importlib_resources-6.4.5-py3-none-any.whl.metadata (4.0 kB)\n",
+ "Collecting fastjsonschema>=2.15 (from nbformat>=5.7.0->open3d)\n",
+ " Downloading fastjsonschema-2.21.1-py3-none-any.whl.metadata (2.2 kB)\n",
+ "Collecting jsonschema>=2.6 (from nbformat>=5.7.0->open3d)\n",
+ " Downloading jsonschema-4.23.0-py3-none-any.whl.metadata (7.9 kB)\n",
+ "Collecting jupyter-core!=5.0.*,>=4.12 (from nbformat>=5.7.0->open3d)\n",
+ " Downloading jupyter_core-5.7.2-py3-none-any.whl.metadata (3.4 kB)\n",
+ "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n",
+ "Collecting joblib>=1.1.1 (from scikit-learn>=0.21->open3d)\n",
+ " Downloading joblib-1.4.2-py3-none-any.whl.metadata (5.4 kB)\n",
+ "Collecting threadpoolctl>=2.0.0 (from scikit-learn>=0.21->open3d)\n",
+ " Downloading threadpoolctl-3.5.0-py3-none-any.whl.metadata (13 kB)\n",
+ "Collecting MarkupSafe>=2.1.1 (from werkzeug>=3.0.0->open3d)\n",
+ " Downloading MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.0 kB)\n",
+ "Collecting zipp>=3.1.0 (from importlib-resources>=3.2.0->matplotlib>=3->open3d)\n",
+ " Downloading zipp-3.20.2-py3-none-any.whl.metadata (3.7 kB)\n",
+ "Collecting backcall (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading backcall-0.2.0-py2.py3-none-any.whl.metadata (2.0 kB)\n",
+ "Collecting decorator (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading decorator-5.1.1-py3-none-any.whl.metadata (4.0 kB)\n",
+ "Collecting jedi>=0.16 (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading jedi-0.19.2-py2.py3-none-any.whl.metadata (22 kB)\n",
+ "Collecting matplotlib-inline (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading matplotlib_inline-0.1.7-py3-none-any.whl.metadata (3.9 kB)\n",
+ "Collecting pickleshare (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading pickleshare-0.7.5-py2.py3-none-any.whl.metadata (1.5 kB)\n",
+ "Collecting prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30 (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading prompt_toolkit-3.0.50-py3-none-any.whl.metadata (6.6 kB)\n",
+ "Requirement already satisfied: pygments>=2.4.0 in /usr/lib/python3/dist-packages (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d) (2.11.2)\n",
+ "Collecting stack-data (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading stack_data-0.6.3-py3-none-any.whl.metadata (18 kB)\n",
+ "Collecting pexpect>4.3 (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading pexpect-4.9.0-py2.py3-none-any.whl.metadata (2.5 kB)\n",
+ "Collecting attrs>=22.2.0 (from jsonschema>=2.6->nbformat>=5.7.0->open3d)\n",
+ " Downloading attrs-25.1.0-py3-none-any.whl.metadata (10 kB)\n",
+ "Collecting jsonschema-specifications>=2023.03.6 (from jsonschema>=2.6->nbformat>=5.7.0->open3d)\n",
+ " Downloading jsonschema_specifications-2023.12.1-py3-none-any.whl.metadata (3.0 kB)\n",
+ "Collecting pkgutil-resolve-name>=1.3.10 (from jsonschema>=2.6->nbformat>=5.7.0->open3d)\n",
+ " Downloading pkgutil_resolve_name-1.3.10-py3-none-any.whl.metadata (624 bytes)\n",
+ "Collecting referencing>=0.28.4 (from jsonschema>=2.6->nbformat>=5.7.0->open3d)\n",
+ " Downloading referencing-0.35.1-py3-none-any.whl.metadata (2.8 kB)\n",
+ "Collecting rpds-py>=0.7.1 (from jsonschema>=2.6->nbformat>=5.7.0->open3d)\n",
+ " Downloading rpds_py-0.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.2 kB)\n",
+ "\u001b[33mWARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))': /simple/platformdirs/\u001b[0m\u001b[33m\n",
+ "\u001b[0mCollecting platformdirs>=2.5 (from jupyter-core!=5.0.*,>=4.12->nbformat>=5.7.0->open3d)\n",
+ " Downloading platformdirs-4.3.6-py3-none-any.whl.metadata (11 kB)\n",
+ "Collecting narwhals>=1.15.1 (from plotly>=5.0.0->dash>=2.6.0->open3d)\n",
+ " Downloading narwhals-1.25.2-py3-none-any.whl.metadata (10 kB)\n",
+ "Collecting charset-normalizer<4,>=2 (from requests->dash>=2.6.0->open3d)\n",
+ " Downloading charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (35 kB)\n",
+ "Collecting idna<4,>=2.5 (from requests->dash>=2.6.0->open3d)\n",
+ " Downloading idna-3.10-py3-none-any.whl.metadata (10 kB)\n",
+ "Collecting urllib3<3,>=1.21.1 (from requests->dash>=2.6.0->open3d)\n",
+ " Downloading urllib3-2.2.3-py3-none-any.whl.metadata (6.5 kB)\n",
+ "Collecting certifi>=2017.4.17 (from requests->dash>=2.6.0->open3d)\n",
+ " Downloading certifi-2025.1.31-py3-none-any.whl.metadata (2.5 kB)\n",
+ "Collecting parso<0.9.0,>=0.8.4 (from jedi>=0.16->ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading parso-0.8.4-py2.py3-none-any.whl.metadata (7.7 kB)\n",
+ "Collecting ptyprocess>=0.5 (from pexpect>4.3->ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading ptyprocess-0.7.0-py2.py3-none-any.whl.metadata (1.3 kB)\n",
+ "Collecting wcwidth (from prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30->ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading wcwidth-0.2.13-py2.py3-none-any.whl.metadata (14 kB)\n",
+ "Collecting executing>=1.2.0 (from stack-data->ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading executing-2.2.0-py2.py3-none-any.whl.metadata (8.9 kB)\n",
+ "Collecting asttokens>=2.1.0 (from stack-data->ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading asttokens-3.0.0-py3-none-any.whl.metadata (4.7 kB)\n",
+ "Collecting pure-eval (from stack-data->ipython>=6.1.0->ipywidgets>=8.0.4->open3d)\n",
+ " Downloading pure_eval-0.2.3-py3-none-any.whl.metadata (6.3 kB)\n",
+ "Downloading numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.3 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m17.3/17.3 MB\u001b[0m \u001b[31m78.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading scipy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.5 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m34.5/34.5 MB\u001b[0m \u001b[31m61.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading h5py-3.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.3/5.3 MB\u001b[0m \u001b[31m102.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.4 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.4/12.4 MB\u001b[0m \u001b[31m105.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading open3d-0.19.0-cp38-cp38-manylinux_2_31_x86_64.whl (447.7 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m447.7/447.7 MB\u001b[0m \u001b[31m18.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading potpourri3d-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m881.1/881.1 kB\u001b[0m \u001b[31m31.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading plyfile-1.0.3-py3-none-any.whl (23 kB)\n",
+ "Downloading trimesh-4.6.1-py3-none-any.whl (707 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m707.0/707.0 kB\u001b[0m \u001b[31m27.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading dash-2.18.2-py3-none-any.whl (7.8 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.8/7.8 MB\u001b[0m \u001b[31m114.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading dash_core_components-2.0.0-py3-none-any.whl (3.8 kB)\n",
+ "Downloading dash_html_components-2.0.0-py3-none-any.whl (4.1 kB)\n",
+ "Downloading dash_table-5.0.0-py3-none-any.whl (3.9 kB)\n",
+ "Downloading flask-3.0.3-py3-none-any.whl (101 kB)\n",
+ "Downloading ipywidgets-8.1.5-py3-none-any.whl (139 kB)\n",
+ "Downloading matplotlib-3.7.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (9.2 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.2/9.2 MB\u001b[0m \u001b[31m109.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nbformat-5.10.4-py3-none-any.whl (78 kB)\n",
+ "Downloading pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl (4.5 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.5/4.5 MB\u001b[0m \u001b[31m99.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)\n",
+ "Downloading pytz-2025.1-py2.py3-none-any.whl (507 kB)\n",
+ "Downloading scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.1 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m11.1/11.1 MB\u001b[0m \u001b[31m100.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading tzdata-2025.1-py2.py3-none-any.whl (346 kB)\n",
+ "Downloading werkzeug-3.0.6-py3-none-any.whl (227 kB)\n",
+ "Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n",
+ "Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n",
+ "Downloading pyquaternion-0.9.9-py3-none-any.whl (14 kB)\n",
+ "Downloading tqdm-4.67.1-py3-none-any.whl (78 kB)\n",
+ "Downloading blinker-1.8.2-py3-none-any.whl (9.5 kB)\n",
+ "Downloading click-8.1.8-py3-none-any.whl (98 kB)\n",
+ "Downloading comm-0.2.2-py3-none-any.whl (7.2 kB)\n",
+ "Downloading contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (301 kB)\n",
+ "Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)\n",
+ "Downloading fastjsonschema-2.21.1-py3-none-any.whl (23 kB)\n",
+ "Downloading fonttools-4.56.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.7/4.7 MB\u001b[0m \u001b[31m101.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading importlib_resources-6.4.5-py3-none-any.whl (36 kB)\n",
+ "Downloading ipython-8.12.3-py3-none-any.whl (798 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m798.3/798.3 kB\u001b[0m \u001b[31m32.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading itsdangerous-2.2.0-py3-none-any.whl (16 kB)\n",
+ "Downloading jinja2-3.1.5-py3-none-any.whl (134 kB)\n",
+ "Downloading joblib-1.4.2-py3-none-any.whl (301 kB)\n",
+ "Downloading jsonschema-4.23.0-py3-none-any.whl (88 kB)\n",
+ "Downloading jupyter_core-5.7.2-py3-none-any.whl (28 kB)\n",
+ "Downloading jupyterlab_widgets-3.0.13-py3-none-any.whl (214 kB)\n",
+ "Downloading kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (1.2 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m46.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26 kB)\n",
+ "Downloading packaging-24.2-py3-none-any.whl (65 kB)\n",
+ "Downloading plotly-6.0.0-py3-none-any.whl (14.8 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m14.8/14.8 MB\u001b[0m \u001b[31m127.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading threadpoolctl-3.5.0-py3-none-any.whl (18 kB)\n",
+ "Downloading traitlets-5.14.3-py3-none-any.whl (85 kB)\n",
+ "Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB)\n",
+ "Downloading widgetsnbextension-4.0.13-py3-none-any.whl (2.3 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.3/2.3 MB\u001b[0m \u001b[31m79.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nest_asyncio-1.6.0-py3-none-any.whl (5.2 kB)\n",
+ "Downloading requests-2.32.3-py3-none-any.whl (64 kB)\n",
+ "Downloading retrying-1.3.4-py3-none-any.whl (11 kB)\n",
+ "Downloading attrs-25.1.0-py3-none-any.whl (63 kB)\n",
+ "Downloading certifi-2025.1.31-py3-none-any.whl (166 kB)\n",
+ "Downloading charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (144 kB)\n",
+ "Downloading idna-3.10-py3-none-any.whl (70 kB)\n",
+ "Downloading jedi-0.19.2-py2.py3-none-any.whl (1.6 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m56.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading jsonschema_specifications-2023.12.1-py3-none-any.whl (18 kB)\n",
+ "Downloading narwhals-1.25.2-py3-none-any.whl (305 kB)\n",
+ "Downloading pexpect-4.9.0-py2.py3-none-any.whl (63 kB)\n",
+ "Downloading pkgutil_resolve_name-1.3.10-py3-none-any.whl (4.7 kB)\n",
+ "Downloading platformdirs-4.3.6-py3-none-any.whl (18 kB)\n",
+ "Downloading prompt_toolkit-3.0.50-py3-none-any.whl (387 kB)\n",
+ "Downloading referencing-0.35.1-py3-none-any.whl (26 kB)\n",
+ "Downloading rpds_py-0.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (360 kB)\n",
+ "Downloading urllib3-2.2.3-py3-none-any.whl (126 kB)\n",
+ "Downloading zipp-3.20.2-py3-none-any.whl (9.2 kB)\n",
+ "Downloading backcall-0.2.0-py2.py3-none-any.whl (11 kB)\n",
+ "Downloading decorator-5.1.1-py3-none-any.whl (9.1 kB)\n",
+ "Downloading matplotlib_inline-0.1.7-py3-none-any.whl (9.9 kB)\n",
+ "Downloading pickleshare-0.7.5-py2.py3-none-any.whl (6.9 kB)\n",
+ "Downloading stack_data-0.6.3-py3-none-any.whl (24 kB)\n",
+ "Downloading asttokens-3.0.0-py3-none-any.whl (26 kB)\n",
+ "Downloading executing-2.2.0-py2.py3-none-any.whl (26 kB)\n",
+ "Downloading parso-0.8.4-py2.py3-none-any.whl (103 kB)\n",
+ "Downloading ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)\n",
+ "Downloading pure_eval-0.2.3-py3-none-any.whl (11 kB)\n",
+ "Downloading wcwidth-0.2.13-py2.py3-none-any.whl (34 kB)\n",
+ "Installing collected packages: wcwidth, pytz, pure-eval, ptyprocess, pickleshare, fastjsonschema, dash-table, dash-html-components, dash-core-components, backcall, addict, zipp, widgetsnbextension, urllib3, tzdata, typing-extensions, traitlets, tqdm, threadpoolctl, rpds-py, retrying, python-dateutil, prompt-toolkit, platformdirs, pkgutil-resolve-name, pillow, pexpect, parso, packaging, numpy, nest-asyncio, narwhals, MarkupSafe, kiwisolver, jupyterlab-widgets, joblib, itsdangerous, idna, fonttools, executing, decorator, cycler, configargparse, click, charset-normalizer, certifi, blinker, attrs, asttokens, werkzeug, trimesh, stack-data, scipy, requests, referencing, pyquaternion, plyfile, plotly, pandas, matplotlib-inline, jupyter-core, Jinja2, jedi, importlib-resources, h5py, contourpy, comm, scikit-learn, potpourri3d, matplotlib, jsonschema-specifications, ipython, flask, jsonschema, ipywidgets, dash, nbformat, open3d\n",
+ " Attempting uninstall: zipp\n",
+ " Found existing installation: zipp 1.0.0\n",
+ " Uninstalling zipp-1.0.0:\n",
+ " Successfully uninstalled zipp-1.0.0\n",
+ " Attempting uninstall: blinker\n",
+ " Found existing installation: blinker 1.4\n",
+ "\u001b[1;31merror\u001b[0m: \u001b[1muninstall-distutils-installed-package\u001b[0m\n",
+ "\n",
+ "\u001b[31m×\u001b[0m Cannot uninstall blinker 1.4\n",
+ "\u001b[31m╰─>\u001b[0m It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.\n",
+ "Collecting torch\n",
+ " Downloading torch-2.4.1-cp38-cp38-manylinux1_x86_64.whl.metadata (26 kB)\n",
+ "Collecting torchvision\n",
+ " Downloading torchvision-0.19.1-cp38-cp38-manylinux1_x86_64.whl.metadata (6.0 kB)\n",
+ "Collecting torchaudio\n",
+ " Downloading torchaudio-2.4.1-cp38-cp38-manylinux1_x86_64.whl.metadata (6.4 kB)\n",
+ "Collecting filelock (from torch)\n",
+ " Downloading filelock-3.16.1-py3-none-any.whl.metadata (2.9 kB)\n",
+ "Requirement already satisfied: typing-extensions>=4.8.0 in /usr/local/lib/python3.8/dist-packages (from torch) (4.12.2)\n",
+ "Collecting sympy (from torch)\n",
+ " Downloading sympy-1.13.3-py3-none-any.whl.metadata (12 kB)\n",
+ "Collecting networkx (from torch)\n",
+ " Downloading networkx-3.1-py3-none-any.whl.metadata (5.3 kB)\n",
+ "Collecting jinja2 (from torch)\n",
+ " Using cached jinja2-3.1.5-py3-none-any.whl.metadata (2.6 kB)\n",
+ "Collecting fsspec (from torch)\n",
+ " Downloading fsspec-2025.2.0-py3-none-any.whl.metadata (11 kB)\n",
+ "Collecting nvidia-cuda-nvrtc-cu12==12.1.105 (from torch)\n",
+ " Downloading nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\n",
+ "Collecting nvidia-cuda-runtime-cu12==12.1.105 (from torch)\n",
+ " Downloading nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\n",
+ "Collecting nvidia-cuda-cupti-cu12==12.1.105 (from torch)\n",
+ " Downloading nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl.metadata (1.6 kB)\n",
+ "Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch)\n",
+ " Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
+ "Collecting nvidia-cublas-cu12==12.1.3.1 (from torch)\n",
+ " Downloading nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\n",
+ "Collecting nvidia-cufft-cu12==11.0.2.54 (from torch)\n",
+ " Downloading nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\n",
+ "Collecting nvidia-curand-cu12==10.3.2.106 (from torch)\n",
+ " Downloading nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\n",
+ "Collecting nvidia-cusolver-cu12==11.4.5.107 (from torch)\n",
+ " Downloading nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl.metadata (1.6 kB)\n",
+ "Collecting nvidia-cusparse-cu12==12.1.0.106 (from torch)\n",
+ " Downloading nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl.metadata (1.6 kB)\n",
+ "Collecting nvidia-nccl-cu12==2.20.5 (from torch)\n",
+ " Downloading nvidia_nccl_cu12-2.20.5-py3-none-manylinux2014_x86_64.whl.metadata (1.8 kB)\n",
+ "Collecting nvidia-nvtx-cu12==12.1.105 (from torch)\n",
+ " Downloading nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl.metadata (1.7 kB)\n",
+ "Collecting triton==3.0.0 (from torch)\n",
+ " Downloading triton-3.0.0-1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (1.3 kB)\n",
+ "Collecting nvidia-nvjitlink-cu12 (from nvidia-cusolver-cu12==11.4.5.107->torch)\n",
+ " Downloading nvidia_nvjitlink_cu12-12.8.61-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl.metadata (1.7 kB)\n",
+ "Requirement already satisfied: numpy in /usr/local/lib/python3.8/dist-packages (from torchvision) (1.24.4)\n",
+ "Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.8/dist-packages (from torchvision) (10.4.0)\n",
+ "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.8/dist-packages (from jinja2->torch) (2.1.5)\n",
+ "Collecting mpmath<1.4,>=1.1.0 (from sympy->torch)\n",
+ " Downloading mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)\n",
+ "Downloading torch-2.4.1-cp38-cp38-manylinux1_x86_64.whl (797.1 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m797.1/797.1 MB\u001b[0m \u001b[31m33.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl (410.6 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m410.6/410.6 MB\u001b[0m \u001b[31m56.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (14.1 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m14.1/14.1 MB\u001b[0m \u001b[31m122.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (23.7 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m23.7/23.7 MB\u001b[0m \u001b[31m127.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (823 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m823.6/823.6 kB\u001b[0m \u001b[31m28.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m27.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl (121.6 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m121.6/121.6 MB\u001b[0m \u001b[31m63.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl (56.5 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.5/56.5 MB\u001b[0m \u001b[31m61.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl (124.2 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m124.2/124.2 MB\u001b[0m \u001b[31m63.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl (196.0 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m196.0/196.0 MB\u001b[0m \u001b[31m63.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_nccl_cu12-2.20.5-py3-none-manylinux2014_x86_64.whl (176.2 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m176.2/176.2 MB\u001b[0m \u001b[31m58.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (99 kB)\n",
+ "Downloading triton-3.0.0-1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (209.4 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m209.4/209.4 MB\u001b[0m \u001b[31m67.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading torchvision-0.19.1-cp38-cp38-manylinux1_x86_64.whl (7.0 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.0/7.0 MB\u001b[0m \u001b[31m101.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading torchaudio-2.4.1-cp38-cp38-manylinux1_x86_64.whl (3.4 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.4/3.4 MB\u001b[0m \u001b[31m91.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading filelock-3.16.1-py3-none-any.whl (16 kB)\n",
+ "Downloading fsspec-2025.2.0-py3-none-any.whl (184 kB)\n",
+ "Using cached jinja2-3.1.5-py3-none-any.whl (134 kB)\n",
+ "Downloading networkx-3.1-py3-none-any.whl (2.1 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.1/2.1 MB\u001b[0m \u001b[31m71.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading sympy-1.13.3-py3-none-any.whl (6.2 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.2/6.2 MB\u001b[0m \u001b[31m111.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading mpmath-1.3.0-py3-none-any.whl (536 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m536.2/536.2 kB\u001b[0m \u001b[31m17.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading nvidia_nvjitlink_cu12-12.8.61-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl (39.2 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m39.2/39.2 MB\u001b[0m \u001b[31m51.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hInstalling collected packages: mpmath, sympy, nvidia-nvtx-cu12, nvidia-nvjitlink-cu12, nvidia-nccl-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, networkx, jinja2, fsspec, filelock, triton, nvidia-cusparse-cu12, nvidia-cudnn-cu12, nvidia-cusolver-cu12, torch, torchvision, torchaudio\n",
+ "Successfully installed filelock-3.16.1 fsspec-2025.2.0 jinja2-3.1.5 mpmath-1.3.0 networkx-3.1 nvidia-cublas-cu12-12.1.3.1 nvidia-cuda-cupti-cu12-12.1.105 nvidia-cuda-nvrtc-cu12-12.1.105 nvidia-cuda-runtime-cu12-12.1.105 nvidia-cudnn-cu12-9.1.0.70 nvidia-cufft-cu12-11.0.2.54 nvidia-curand-cu12-10.3.2.106 nvidia-cusolver-cu12-11.4.5.107 nvidia-cusparse-cu12-12.1.0.106 nvidia-nccl-cu12-2.20.5 nvidia-nvjitlink-cu12-12.8.61 nvidia-nvtx-cu12-12.1.105 sympy-1.13.3 torch-2.4.1 torchaudio-2.4.1 torchvision-0.19.1 triton-3.0.0\n",
+ "Collecting torch-geometric\n",
+ " Downloading torch_geometric-2.6.1-py3-none-any.whl.metadata (63 kB)\n",
+ "Collecting torch-cluster\n",
+ " Downloading torch_cluster-1.6.3.tar.gz (54 kB)\n",
+ " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ "Collecting torch-scatter\n",
+ " Downloading torch_scatter-2.1.2.tar.gz (108 kB)\n",
+ " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ "Collecting torch-sparse\n",
+ " Downloading torch_sparse-0.6.18.tar.gz (209 kB)\n",
+ " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ "Collecting torch-spline-conv\n",
+ " Downloading torch_spline_conv-1.2.2.tar.gz (25 kB)\n",
+ " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ "Collecting aiohttp (from torch-geometric)\n",
+ " Downloading aiohttp-3.10.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.7 kB)\n",
+ "Requirement already satisfied: fsspec in /usr/local/lib/python3.8/dist-packages (from torch-geometric) (2025.2.0)\n",
+ "Requirement already satisfied: jinja2 in /usr/local/lib/python3.8/dist-packages (from torch-geometric) (3.1.5)\n",
+ "Requirement already satisfied: numpy in /usr/local/lib/python3.8/dist-packages (from torch-geometric) (1.24.4)\n",
+ "Collecting psutil>=5.8.0 (from torch-geometric)\n",
+ " Downloading psutil-6.1.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (22 kB)\n",
+ "Requirement already satisfied: pyparsing in /usr/lib/python3/dist-packages (from torch-geometric) (2.4.7)\n",
+ "Collecting requests (from torch-geometric)\n",
+ " Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)\n",
+ "Requirement already satisfied: tqdm in /usr/local/lib/python3.8/dist-packages (from torch-geometric) (4.67.1)\n",
+ "Collecting scipy (from torch-cluster)\n",
+ " Using cached scipy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (58 kB)\n",
+ "Collecting aiohappyeyeballs>=2.3.0 (from aiohttp->torch-geometric)\n",
+ " Downloading aiohappyeyeballs-2.4.4-py3-none-any.whl.metadata (6.1 kB)\n",
+ "Collecting aiosignal>=1.1.2 (from aiohttp->torch-geometric)\n",
+ " Downloading aiosignal-1.3.1-py3-none-any.whl.metadata (4.0 kB)\n",
+ "Collecting attrs>=17.3.0 (from aiohttp->torch-geometric)\n",
+ " Using cached attrs-25.1.0-py3-none-any.whl.metadata (10 kB)\n",
+ "Collecting frozenlist>=1.1.1 (from aiohttp->torch-geometric)\n",
+ " Downloading frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n",
+ "Collecting multidict<7.0,>=4.5 (from aiohttp->torch-geometric)\n",
+ " Downloading multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.0 kB)\n",
+ "Collecting yarl<2.0,>=1.12.0 (from aiohttp->torch-geometric)\n",
+ " Downloading yarl-1.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (56 kB)\n",
+ "Collecting async-timeout<6.0,>=4.0 (from aiohttp->torch-geometric)\n",
+ " Downloading async_timeout-5.0.1-py3-none-any.whl.metadata (5.1 kB)\n",
+ "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.8/dist-packages (from jinja2->torch-geometric) (2.1.5)\n",
+ "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.8/dist-packages (from requests->torch-geometric) (3.4.1)\n",
+ "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->torch-geometric) (3.10)\n",
+ "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->torch-geometric) (2.2.3)\n",
+ "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests->torch-geometric) (2025.1.31)\n",
+ "Requirement already satisfied: typing-extensions>=4.1.0 in /usr/local/lib/python3.8/dist-packages (from multidict<7.0,>=4.5->aiohttp->torch-geometric) (4.12.2)\n",
+ "Collecting propcache>=0.2.0 (from yarl<2.0,>=1.12.0->aiohttp->torch-geometric)\n",
+ " Downloading propcache-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.7 kB)\n",
+ "Downloading torch_geometric-2.6.1-py3-none-any.whl (1.1 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.1 MB\u001b[0m \u001b[31m26.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading psutil-6.1.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (287 kB)\n",
+ "Downloading aiohttp-3.10.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m49.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hUsing cached requests-2.32.3-py3-none-any.whl (64 kB)\n",
+ "Using cached scipy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.5 MB)\n",
+ "Downloading aiohappyeyeballs-2.4.4-py3-none-any.whl (14 kB)\n",
+ "Downloading aiosignal-1.3.1-py3-none-any.whl (7.6 kB)\n",
+ "Downloading async_timeout-5.0.1-py3-none-any.whl (6.2 kB)\n",
+ "Using cached attrs-25.1.0-py3-none-any.whl (63 kB)\n",
+ "Downloading frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (243 kB)\n",
+ "Downloading multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (129 kB)\n",
+ "Downloading yarl-1.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (319 kB)\n",
+ "Downloading propcache-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (213 kB)\n",
+ "Building wheels for collected packages: torch-cluster, torch-scatter, torch-sparse, torch-spline-conv\n",
+ " Building wheel for torch-cluster (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ " Created wheel for torch-cluster: filename=torch_cluster-1.6.3-cp38-cp38-linux_x86_64.whl size=731837 sha256=0610861bccf82c5fe17a84a9fe9f8ed62f6a20656578ce92a445469c8203c5e6\n",
+ " Stored in directory: /root/.cache/pip/wheels/83/ae/16/6e083c8e0651c589dba0257e7d82c6a142ee63cca2f9f41d2d\n",
+ " Building wheel for torch-scatter (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ " Created wheel for torch-scatter: filename=torch_scatter-2.1.2-cp38-cp38-linux_x86_64.whl size=536728 sha256=f8e1761f266b7222610528420c5df95cbbd81b72d16f2f5d126a51fc4ab20c1d\n",
+ " Stored in directory: /root/.cache/pip/wheels/54/0c/3d/5e4aea36abfd59a43f8bb9859f545baa46c2a880a99a428db6\n",
+ " Building wheel for torch-sparse (setup.py) ... \u001b[?25l\u001b[?25hcanceled\n",
+ "\u001b[31mERROR: Operation cancelled by user\u001b[0m\u001b[31m\n",
+ "\u001b[0m^C\n",
+ "Collecting git+https://github.com/nicolas-chaulet/torch-points3d.git\n",
+ " Cloning https://github.com/nicolas-chaulet/torch-points3d.git to /tmp/pip-req-build-k8zeklkk\n",
+ " Running command git clone --filter=blob:none --quiet https://github.com/nicolas-chaulet/torch-points3d.git /tmp/pip-req-build-k8zeklkk\n",
+ "Traceback (most recent call last):\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/base_command.py\", line 106, in _run_wrapper\n",
+ " status = _inner_run()\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/base_command.py\", line 97, in _inner_run\n",
+ " return self.run(options, args)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/req_command.py\", line 67, in wrapper\n",
+ " return func(self, options, args)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/commands/install.py\", line 386, in run\n",
+ " requirement_set = resolver.resolve(\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/resolution/resolvelib/resolver.py\", line 76, in resolve\n",
+ " collected = self.factory.collect_root_requirements(root_reqs)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/resolution/resolvelib/factory.py\", line 545, in collect_root_requirements\n",
+ " reqs = list(\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/resolution/resolvelib/factory.py\", line 501, in _make_requirements_from_install_req\n",
+ " cand = self._make_base_candidate_from_link(\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/resolution/resolvelib/factory.py\", line 233, in _make_base_candidate_from_link\n",
+ " self._link_candidate_cache[link] = LinkCandidate(\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/resolution/resolvelib/candidates.py\", line 304, in __init__\n",
+ " super().__init__(\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/resolution/resolvelib/candidates.py\", line 159, in __init__\n",
+ " self.dist = self._prepare()\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/resolution/resolvelib/candidates.py\", line 236, in _prepare\n",
+ " dist = self._prepare_distribution()\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/resolution/resolvelib/candidates.py\", line 315, in _prepare_distribution\n",
+ " return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/operations/prepare.py\", line 527, in prepare_linked_requirement\n",
+ " return self._prepare_linked_requirement(req, parallel_builds)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/operations/prepare.py\", line 598, in _prepare_linked_requirement\n",
+ " local_file = unpack_url(\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/operations/prepare.py\", line 159, in unpack_url\n",
+ " unpack_vcs_link(link, location, verbosity=verbosity)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/operations/prepare.py\", line 81, in unpack_vcs_link\n",
+ " vcs_backend.unpack(location, url=hide_url(link.url), verbosity=verbosity)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/vcs/versioncontrol.py\", line 589, in unpack\n",
+ " self.obtain(location, url=url, verbosity=verbosity)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/vcs/versioncontrol.py\", line 502, in obtain\n",
+ " self.fetch_new(dest, url, rev_options, verbosity=verbosity)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/vcs/git.py\", line 277, in fetch_new\n",
+ " self.run_command(\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/vcs/versioncontrol.py\", line 631, in run_command\n",
+ " return call_subprocess(\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/utils/subprocess.py\", line 151, in call_subprocess\n",
+ " line: str = proc.stdout.readline()\n",
+ " File \"/usr/lib/python3.8/codecs.py\", line 319, in decode\n",
+ " def decode(self, input, final=False):\n",
+ "KeyboardInterrupt\n",
+ "\n",
+ "During handling of the above exception, another exception occurred:\n",
+ "\n",
+ "Traceback (most recent call last):\n",
+ " File \"/usr/local/bin/pip\", line 8, in \n",
+ " sys.exit(main())\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/main.py\", line 80, in main\n",
+ " return command.main(cmd_args)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/base_command.py\", line 158, in main\n",
+ " return self._main(args)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/base_command.py\", line 240, in _main\n",
+ " return self._run_wrapper(level_number, options, args)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/cli/base_command.py\", line 142, in _run_wrapper\n",
+ " logger.critical(\"Operation cancelled by user\")\n",
+ " File \"/usr/lib/python3.8/logging/__init__.py\", line 1493, in critical\n",
+ " self._log(CRITICAL, msg, args, **kwargs)\n",
+ " File \"/usr/lib/python3.8/logging/__init__.py\", line 1589, in _log\n",
+ " self.handle(record)\n",
+ " File \"/usr/lib/python3.8/logging/__init__.py\", line 1599, in handle\n",
+ " self.callHandlers(record)\n",
+ " File \"/usr/lib/python3.8/logging/__init__.py\", line 1661, in callHandlers\n",
+ " hdlr.handle(record)\n",
+ " File \"/usr/lib/python3.8/logging/__init__.py\", line 954, in handle\n",
+ " self.emit(record)\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_internal/utils/logging.py\", line 179, in emit\n",
+ " style = Style(color=\"red\")\n",
+ " File \"/usr/local/lib/python3.8/dist-packages/pip/_vendor/rich/style.py\", line 146, in __init__\n",
+ " def _make_color(color: Union[Color, str]) -> Color:\n",
+ " File \"/usr/lib/python3.8/typing.py\", line 258, in inner\n",
+ " return cached(*args, **kwds)\n",
+ " File \"/usr/lib/python3.8/typing.py\", line 362, in __getitem__\n",
+ " return _GenericAlias(self, parameters)\n",
+ " File \"/usr/lib/python3.8/typing.py\", line 660, in __init__\n",
+ " self._inst = inst\n",
+ " File \"/usr/lib/python3.8/typing.py\", line 764, in __setattr__\n",
+ " super().__setattr__(attr, val)\n",
+ "KeyboardInterrupt\n",
+ "^C\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Mount Google Drive"
+ ],
+ "metadata": {
+ "id": "_y6wwlh8VI_7"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/content/drive')"
+ ],
+ "metadata": {
+ "id": "rhfhh89KVJcc",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "outputId": "09e03c2c-660c-4953-b799-7463b7d87dcf"
+ },
+ "execution_count": 2,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Mounted at /content/drive\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 2. Load Model and Data\n",
+ "\n",
+ "### Define Paths\n"
+ ],
+ "metadata": {
+ "id": "ghCuoMT8VQWo"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "CHECKPOINT_PATH = '/content/drive/My Drive/P8T/checkpoint.tar'\n",
+ "INPUT_PLY = '/content/drive/My Drive/P8T/Tibet-2.ply'\n",
+ "OUTPUT_PLY = '/content/drive/My Drive/P8T/Tibet-2-segmented.ply'"
+ ],
+ "metadata": {
+ "id": "M_I_JFtdVRAU"
+ },
+ "execution_count": 3,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Load Pretrained Model"
+ ],
+ "metadata": {
+ "id": "n37BVqFQVV7D"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import torch\n",
+ "from torch_points3d.models.segmentation import RandLANet\n",
+ "\n",
+ "# Load model\n",
+ "checkpoint = torch.load(CHECKPOINT_PATH, map_location='cpu')\n",
+ "model = RandLANet()\n",
+ "model.load_state_dict(checkpoint['model_state_dict'])\n",
+ "model.eval()"
+ ],
+ "metadata": {
+ "id": "m9FnRcZ6VVd9",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 384
+ },
+ "outputId": "87bda6ac-7761-41c3-fe06-920cbbde5a60"
+ },
+ "execution_count": 4,
+ "outputs": [
+ {
+ "output_type": "error",
+ "ename": "ModuleNotFoundError",
+ "evalue": "No module named 'torch_points3d'",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mtorch_points3d\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodels\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msegmentation\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mRandLANet\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m# Load model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mcheckpoint\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mCHECKPOINT_PATH\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmap_location\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'cpu'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'torch_points3d'",
+ "",
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0;32m\nNOTE: If your import is failing due to a missing package, you can\nmanually install dependencies using either !pip or !apt.\n\nTo view examples of installing some common dependencies, click the\n\"Open Examples\" button below.\n\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n"
+ ],
+ "errorDetails": {
+ "actions": [
+ {
+ "action": "open_url",
+ "actionText": "Open Examples",
+ "url": "/notebooks/snippets/importing_libraries.ipynb"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "\n",
+ "## 3. Run Inference\n",
+ "\n",
+ "### Load Point Cloud\n"
+ ],
+ "metadata": {
+ "id": "mYTWrGG5ViAl"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import open3d as o3d\n",
+ "import numpy as np\n",
+ "\n",
+ "# Load PLY file\n",
+ "pcd = o3d.io.read_point_cloud(INPUT_PLY)\n",
+ "points = np.asarray(pcd.points)"
+ ],
+ "metadata": {
+ "id": "hpgpIsnGVhB3"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Predict Classes\n",
+ "\n"
+ ],
+ "metadata": {
+ "id": "U0NvzDOLVv6G"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "with torch.no_grad():\n",
+ " inputs = torch.tensor(points, dtype=torch.float32).unsqueeze(0)\n",
+ " preds = model(inputs).argmax(dim=2).squeeze().numpy()"
+ ],
+ "metadata": {
+ "id": "wto82b90VvM1"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Assign Colors Based on Classes\n",
+ "\n",
+ "\n"
+ ],
+ "metadata": {
+ "id": "mh8LRz71VzCG"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "NUM_CLASSES = preds.max() + 1\n",
+ "COLORS = plt.get_cmap(\"tab10\")(np.linspace(0, 1, NUM_CLASSES))[:, :3] # RGB colors\n",
+ "colors = COLORS[preds]\n",
+ "\n",
+ "pcd.colors = o3d.utility.Vector3dVector(colors)"
+ ],
+ "metadata": {
+ "id": "xnUV9R6OVz75"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Save Segmented Point Cloud"
+ ],
+ "metadata": {
+ "id": "Goj13eLtV4ng"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "o3d.io.write_point_cloud(OUTPUT_PLY, pcd)\n",
+ "print(f\"Segmented point cloud saved at: {OUTPUT_PLY}\")"
+ ],
+ "metadata": {
+ "id": "wATW_FANV5Wq"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## 4. Visualization in CloudCompare\n",
+ "\n",
+ "- Download `Tibet-2-segmented.ply` from Google Drive.\n",
+ "- Open it in CloudCompare to view the segmented results."
+ ],
+ "metadata": {
+ "id": "8oISnb4nWK2u"
+ }
+ }
+ ]
+}
\ No newline at end of file
|