[pypi-image]: https://badge.fury.io/py/MinkowskiEngine.svg
[pypi-url]: https://pypi.org/project/MinkowskiEngine/
[pypi-download]: https://img.shields.io/pypi/dm/MinkowskiEngine
[slack-badge]: https://img.shields.io/badge/slack-join%20chats-brightgreen
[slack-url]: https://join.slack.com/t/minkowskiengine/shared_invite/zt-piq2x02a-31dOPocLt6bRqOGY3U_9Sw
# Minkowski Engine
[![PyPI Version][pypi-image]][pypi-url] [![pypi monthly download][pypi-download]][pypi-url] [![slack chat][slack-badge]][slack-url]
The Minkowski Engine is an auto-differentiation library for sparse tensors. It supports all standard neural network layers such as convolution, pooling, unpooling, and broadcasting operations for sparse tensors. For more information, please visit [the documentation page](http://nvidia.github.io/MinkowskiEngine/overview.html).
## News
- 2021-08-11 Docker installation instruction added
- 2021-08-06 All installation errors with pytorch 1.8 and 1.9 have been resolved.
- 2021-04-08 Due to recent errors in [pytorch 1.8 + CUDA 11](https://github.com/NVIDIA/MinkowskiEngine/issues/330), it is recommended to use [anaconda for installation](#anaconda).
- 2020-12-24 v0.5 is now available! The new version provides CUDA accelerations for all coordinate management functions.
## Example Networks
The Minkowski Engine supports various functions that can be built on a sparse tensor. We list a few popular network architectures and applications here. To run the examples, please install the package and run the command in the package root directory.
| Examples | Networks and Commands |
|:---------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Semantic Segmentation | <img src="https://nvidia.github.io/MinkowskiEngine/_images/segmentation_3d_net.png"> <br /> <img src="https://nvidia.github.io/MinkowskiEngine/_images/segmentation.png" width="256"> <br /> `python -m examples.indoor` |
| Classification | ![](https://nvidia.github.io/MinkowskiEngine/_images/classification_3d_net.png) <br /> `python -m examples.classification_modelnet40` |
| Reconstruction | <img src="https://nvidia.github.io/MinkowskiEngine/_images/generative_3d_net.png"> <br /> <img src="https://nvidia.github.io/MinkowskiEngine/_images/generative_3d_results.gif" width="256"> <br /> `python -m examples.reconstruction` |
| Completion | <img src="https://nvidia.github.io/MinkowskiEngine/_images/completion_3d_net.png"> <br /> `python -m examples.completion` |
| Detection | <img src="https://nvidia.github.io/MinkowskiEngine/_images/detection_3d_net.png"> |
## Sparse Tensor Networks: Neural Networks for Spatially Sparse Tensors
Compressing a neural network to speedup inference and minimize memory footprint has been studied widely. One of the popular techniques for model compression is pruning the weights in convnets, is also known as [*sparse convolutional networks*](https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Liu_Sparse_Convolutional_Neural_2015_CVPR_paper.pdf). Such parameter-space sparsity used for model compression compresses networks that operate on dense tensors and all intermediate activations of these networks are also dense tensors.
However, in this work, we focus on [*spatially* sparse data](https://arxiv.org/abs/1409.6070), in particular, spatially sparse high-dimensional inputs and 3D data and convolution on the surface of 3D objects, first proposed in [Siggraph'17](https://wang-ps.github.io/O-CNN.html). We can also represent these data as sparse tensors, and these sparse tensors are commonplace in high-dimensional problems such as 3D perception, registration, and statistical data. We define neural networks specialized for these inputs as *sparse tensor networks* and these sparse tensor networks process and generate sparse tensors as outputs. To construct a sparse tensor network, we build all standard neural network layers such as MLPs, non-linearities, convolution, normalizations, pooling operations as the same way we define them on a dense tensor and implemented in the Minkowski Engine.
We visualized a sparse tensor network operation on a sparse tensor, convolution, below. The convolution layer on a sparse tensor works similarly to that on a dense tensor. However, on a sparse tensor, we compute convolution outputs on a few specified points which we can control in the [generalized convolution](https://nvidia.github.io/MinkowskiEngine/sparse_tensor_network.html). For more information, please visit [the documentation page on sparse tensor networks](https://nvidia.github.io/MinkowskiEngine/sparse_tensor_network.html) and [the terminology page](https://nvidia.github.io/MinkowskiEngine/terminology.html).
| Dense Tensor | Sparse Tensor |
|:---------------------------------------------------------------------------:|:----------------------------------------------------------------------------:|
| <img src="https://nvidia.github.io/MinkowskiEngine/_images/conv_dense.gif"> | <img src="https://nvidia.github.io/MinkowskiEngine/_images/conv_sparse.gif"> |
--------------------------------------------------------------------------------
## Features
- Unlimited high-dimensional sparse tensor support
- All standard neural network layers (Convolution, Pooling, Broadcast, etc.)
- Dynamic computation graph
- Custom kernel shapes
- Multi-GPU training
- Multi-threaded kernel map
- Multi-threaded compilation
- Highly-optimized GPU kernels
## Requirements
- Ubuntu >= 14.04
- CUDA >= 10.1.243 and **the same CUDA version used for pytorch** (e.g. if you use conda cudatoolkit=11.1, use CUDA=11.1 for MinkowskiEngine compilation)
- pytorch >= 1.7 To specify CUDA version, please use conda for installation. You must match the CUDA version pytorch uses and CUDA version used for Minkowski Engine installation. `conda install -y -c nvidia -c pytorch pytorch=1.8.1 cudatoolkit=10.2`)
- python >= 3.6
- ninja (for installation)
- GCC >= 7.4.0
## Installation
You can install the Minkowski Engine with `pip`, with anaconda, or on the system directly. If you experience issues installing the package, please checkout the [the installation wiki page](https://github.com/NVIDIA/MinkowskiEngine/wiki/Installation).
If you cannot find a relevant problem, please report the issue on [the github issue page](https://github.com/NVIDIA/MinkowskiEngine/issues).
- [PIP](https://github.com/NVIDIA/MinkowskiEngine#pip) installation
- [Conda](https://github.com/NVIDIA/MinkowskiEngine#anaconda) installation
- [Python](https://github.com/NVIDIA/MinkowskiEngine#system-python) installation
- [Docker](https://github.com/NVIDIA/MinkowskiEngine#docker) installation
### Pip
The MinkowskiEngine is distributed via [PyPI MinkowskiEngine][pypi-url] which can be installed simply with `pip`.
First, install pytorch following the [instruction](https://pytorch.org). Next, install `openblas`.
```
sudo apt install build-essential python3-dev libopenblas-dev
pip install torch ninja
pip install -U MinkowskiEngine --install-option="--blas=openblas" -v --no-deps
# For pip installation from the latest source
# pip install -U git+https://github.com/NVIDIA/MinkowskiEngine --no-deps
```
If you want to specify arguments for the setup script, please refer to the following command.
```
# Uncomment some options if things don't work
# export CXX=c++; # set this if you want to u
Minkowski engine代码
需积分: 0 63 浏览量
更新于2024-02-20
收藏 5.62MB ZIP 举报
《Minkowski Engine:深度学习中的点云语义理解利器》
在当今的计算机视觉领域,3D点云数据处理正逐渐成为研究的热点。点云数据作为一种非结构化的数据形式,广泛存在于激光雷达、无人机、3D扫描仪等设备中,为自动驾驶、室内导航、虚拟现实等领域提供了丰富的信息。然而,由于其数据量大、结构复杂,处理起来颇具挑战。Minkowski Engine的出现,为解决这一问题提供了一种高效且灵活的解决方案。
Minkowski Engine 是一个专门用于处理3D点云数据的深度学习库,它主要由Python编写,并利用CUDA技术进行GPU加速,以实现高效计算。该库的核心是将3D点云数据转化为可被卷积神经网络(CNN)处理的格式,即所谓的“稀疏三维卷积”(Sparse 3D Convolution)。这种转换使得深度学习模型能直接对点云数据进行操作,避免了传统方法中繁琐的数据预处理步骤。
深度学习,尤其是卷积神经网络,在2D图像处理上取得了显著的成功。然而,直接将2D卷积应用到3D点云数据并不适用,因为3D空间的复杂性和数据的稀疏性。Minkowski Engine 引入了“体素化”(Voxelization)的概念,即将3D空间分割成小的立方体(体素),然后对每个体素内的点进行统计,如计数或平均,将其转换为连续的特征向量。接着,这些特征向量可以作为输入,通过稀疏卷积进行学习,从而处理整个3D空间。
在Minkowski Engine中,稀疏卷积运算的实现采用了动态图(Dynamic Graph)策略,这使得该库能够灵活地处理不同大小和密度的点云数据。与传统的固定大小网格相比,这种灵活性大大降低了内存需求,提高了计算效率,尤其是在处理大规模点云数据时更为明显。
Minkowski Engine 的代码库,如`MinkowskiEngine-master`,包含了完整的源代码、示例和文档,方便开发者进行二次开发和研究。开发者可以基于此进行点云语义分割、实例分割、3D目标检测等任务。同时,这个库支持多GPU并行计算,进一步提升了模型训练的速度。
在实际应用中,Minkowski Engine 已经被广泛用于自动驾驶领域的语义地图构建,以及室内环境的语义理解。通过这个库,研究人员和工程师可以构建出更精确的3D环境模型,提高智能系统的感知能力和决策质量。
Minkowski Engine是点云处理领域的一个重要工具,它结合了深度学习和3D几何的理解,提供了一种高效且灵活的点云数据处理方案。对于涉及3D点云的科研和工程实践,掌握Minkowski Engine的使用无疑将大大提升工作效率和研究水平。
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
kfchandsome
- 粉丝: 0
- 资源: 4
最新资源
- 《Rust 语言教程》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- (源码)基于Windows操作系统的SGOMaster游戏大师.zip
- 基于Comsol电-固-热耦合分析的电磁热仿真模型:高压直流电源内部发热与材料形变效应研究,Comsol电磁热仿真模型:解析高压直流电源内电-固-热耦合现象及其对电场与材料形变的影响,comsol电
- pycharm安装教程.md
- pycharm安装教程.md
- 《基于 ESP32 的机器人和嵌入式应用开发板的项目》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- pycharm安装教程.md
- 基于MATLAB的ANSYS结构刚度与质量矩阵快速提取程序:实现刚度矩阵提取、质量矩阵提取及自振频率计算,基于Matlab的Ansys有限元模型刚度矩阵与质量矩阵快速提取工具,基于matlab的ans
- 清华大学DeepSeek三部曲
- pycharm安装教程.md
- 《一个强大的反应Native 入门模板,可引导您的移动应用程序的开发》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 基于单向整流器与无功功率补偿器STATCOM的电路拓扑图及功率性能分析,单向整流器带无功功率补偿器STATCOM的图解分析与电路拓扑图详解,单向整流器带无功功率补偿器 STATCOM 图一整体电路拓扑
- 《STM32 MCU 的开发板和软件模板》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- MATLAB实现A星算法与最优配送方案:路径规划的智能优化策略,MATLAB环境下的A*算法实现路径规划及最优配送方案设计,matlab 路径规划 a星算法 a*算法 最优配送方案 ,matla
- 基于两相步进电机位置闭环的4细分Matlab Simulink仿真模型搭建与电机模型推导研究,基于两相步进电机位置闭环控制的4细分Matlab Simulink仿真模型搭建与电机模型推导研究,两相步进
- 《Go by Example 通过例子学 Golang》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip