需要 Python 3.10 或更高版本;数据集与去噪器等可选依赖需额外安装 pip install deepinv[dataset,denoisers];使用预训练重建模型和去噪器时需另行下载模型权重。
deepinv
deepinvBSD-3-Clause活跃维护基于 PyTorch 的成像逆问题求解库,把去噪、去模糊、MRI 重建等任务统一到深度学习框架下,内置扩散模型和即插即用先验。
DeepInverse: a PyTorch library for solving imaging inverse problems using deep learning
pip install deepinvREADME 未说明具体显存或 GPU 型号要求;库基于 PyTorch,CI 同时有 CPU 与 GPU 测试流程,说明 CPU 与 GPU 环境均可运行。
基于 PyTorch 的成像逆问题深度学习库,用统一模块化框架统一问题与算法
基于 PyTorch 的成像逆问题求解库,把去噪、去模糊、MRI 重建等任务统一到深度学习框架下,内置扩散模型和即插即用先验。
核心能力
- 提供大量预定义成像算子,覆盖多种成像物理模型
- 内置多种 SOTA 神经网络与开箱即用的预训练重建模型、去噪器
- 支持即插即用恢复、优化与展开式架构的完整框架
- 提供逆问题训练损失与扩散模型采样算法做不确定性量化
- 提供逆问题数据集构建框架,提升研究可复现性
容易踩的坑
- v0.5.0Release v0.5.0最新正式版2026-10-26 · 2026-10-26 14:18 UTC
New Features
- Add :func:
deepinv.utils.load_rawto load a camera raw file as a Pytorch tensor along with a metadata dictionary containing ISP hyper-parameters (#1361 by Raphael Achddou) - Add physics
deepinv.physics.UltrasoundPlaneWavefor ultrasound plane-wave imaging, which can simulate and reconstruct raw RF data. (#1338 by Adrien Besson) - Add pretrained SwinIR weights for 2x super-resolution (#1304 by Vicky De Ridder)
- Add
deepinv.sampling.PiGDMDataFidelity,deepinv.sampling.MomentMatchingDataFidelity,deepinv.sampling.ALDDataFidelity,deepinv.sampling.ScoreSDEDataFidelityanddeepinv.sampling.ILVRDataFidelitynoisy data-fidelity terms for diffusion posterior sampling, with a new exampledemo_noisy_data_fidelity.py(#1279 by Samuel Hurault) - Publish the docs in
llms.txtformat using the sphinx-llm https://github.com/NVIDIA/sphinx-llm extension (#1362 by Julian Tachella) - Add distributed backward propagation and training for samples too large to fit on a single device (#1088 by Benoît Malézieux)
- Add :func:
deepinv.physics.TomographyWithAstra.from_astra_geometryto build the operator directly from pre-createdastrageometries (#1102 by Margaret Duff) - Add downloadable pretrained weights to
deepinv.models.FFDNet(#1357 by Vicky De Ridder) - Add :func:
deepinv.utils.plotto disable image rescaling withrescale_mode=None. (#1339 by Delphine Doutsas) - Add
deepinv.datasets.CalgarySliceDatasetfor raw MRI data from Calgary-Campinas dataset(#1374 by Andrew Wang) - Add
deepinv.models.DIRECTModelpretrained models for MRI (Joint IC-Net, Recurrent VarNet, vSHARP, XPDNet etc.) (#1374 by Andrew Wang) - Add :func:
deepinv.utils.load_ismrmrd_rawto load data withismrmrdlibrary (#1374 by Andrew Wang) - Add
deepinv.physics.NonCartesianMRInon-Cartesian MRI physics withmri-nufft(#1381 by Andrew Wang) - Add
deepinv.datasets.DeteCTDatasetdataset for real CT sinograms (#1378 by Andrew Wang) - Add
deepinv.datasets.Set5HR,deepinv.datasets.BSD100HR,deepinv.datasets.McMasteranddeepinv.datasets.Kodak24datasets (#1382 by Vicky De Ridder) - Add ptychography acquisition geometries
deepinv.physics.PtychographyGeometry,deepinv.physics.FarFieldPtychographyGeometryanddeepinv.physics.NearFieldPtychographyGeometry, allowing to convert physical scan positions to pixel shifts (#1379 by Shantanu Kodgirwar) - Add
deepinv.models.WienerDeconvolutionfor closed-form Wiener deconvolution (#1315 by Ashish Verma) - Add
deepinv.optim.RDPprior (#1322 by Thibaut Modrzyk) - Add
deepinv.optim.BSREMalgorithm for emission tomography and new PET demos (#1322 by Thibaut Modrzyk) - Add blind Richardson-Lucy algorithm
deepinv.optim.BlindRLfor blind deconvolution along with a demo (#988 by Thibaut Modrzyk) - Add colorblind palette and marker cyclers to :func:
deepinv.utils.plotting.config_matplotlib(#1420 by Thibaut Modrzyk) - Add
deepinv.optim.SmoothedTVPriorprior ([#1326](https://gith
- Add :func:
- v0.4.2Release v0.4.22026-08-30 · 2026-08-30 08:53 UTC
查看更新说明
New Features
- Add
deepinv.loss.metric.RecoveryCoefficientRecovery Coefficient (RC) metric to evaluate reconstructed activity relative to ground truth within a mask, with dtype-aware numerical stability and a dedicated loss transformation for training (#1228 by Kushagra Shukla) - Add 2D and 3D
deepinv.physics.PET(#1099 by Julian Tachella) - Add support for multi-channel (chromatic) diffraction PSFs in
deepinv.physics.generator.DiffractionBlurGeneratorwith physically consistent wavelength scaling of the pupil cut-off frequency and Zernike coefficients. (#1242 by Pierre Weiss and Florian Sarron) - Add caching to demo/archive downloads (#1234 by Julian Tachella)
- Add :func:
deepinv.utils.load_tiffto load images/ volumes from TIFF files (#1249 by Andrew Wang) - Add :func:
deepinv.utils.plot_naparito interactively view 2D images/3D vols with napari (#1249 by Andrew Wang) - Add support for :func:
Liu-Jia padding <deepinv.physics.functional.liu_jia_pad>(#934 by Jérémy Scanvic) - Add support for TV-L1 priors
deepinv.optim.TVL1Prior(#1236 by Sarra Amiri) - Add support for mixed-precision (float16 and bfloat16) to the trainer (#1208 by Vicky De Ridder)
- Add
deepinv.optim.OSEMalgorithm for tomographic reconstruction and update PET demos to showcase OSEM (#1255 by Thibaut Modrzyk) - Add utilities for subsetted tomography physics :func:
deepinv.physics.split_physicsand :func:deepinv.physics.split_measurements(#1255 by Thibaut Modrzyk) - Add
deepinv.loss.metric.NRMSEmetric (#1255 by Thibaut Modrzyk) - Add espirit_crop parameter to control ESPIRiT multicoil MRI map estimation (#1263 by Andrew Wang)
- Add
deepinv.loss.metric.BRISQUEanddeepinv.loss.metric.NIMAno-reference image quality metrics (#1310 by Julian Tachella) - Add
deepinv.datasets.BrainWebPET(#1286 by Thibaut Modrzyk) - Add
use_dict_outputoption to every dataset class, returning a dict{"x", "y", "params"}instead of a tuple; propagate support to all deepinv internals (#1244 by Romain Vo)
Changed
- (Breaking) Drop support for deprecated parameters
num_channelsindeepinv.physics.generator.PSFGenerator,deepinv.physics.generator.GaussianBlurGenerator,deepinv.physics.generator.MotionBlurGenerator,deepinv.physics.generator.DiffractionBlurGenerator,deepinv.physics.generator.DiffractionBlurGenerator3D(#1242 by Pierre Weiss and Florian Sarron) - Extend :func:
DST-I <deepinv.physics.functional.dst1>to make it n-dimensional and add an option to have it compute the regular DST-I instead of the non-standard sign-flipped orthogonal variant (#934 by Jérémy Scanvic) - Extend:
deepinv.optim.MLEMnow supportsdeepinv.physics.PET(#1255 by Thibaut Modrzyk) - (Breaking) Make
deepinv.optim.TVPrior()compute an explicit choice of subgradient instead of using autodiff. (#1271 by Thibaut Modrzyk) - Extend:
deepinv.models.DEALnow accepts two new arguments:inner_iterandouter_iter. (#1335 by Paul Bernard)
Fixed
- Deprecat
- Add
- v0.4.1Release v0.4.12026-06-06 · 2026-06-06 13:51 UTC
查看更新说明
New Features
- Add
deepinv.models.DEALmodel (#1107 by Hossein Alimohammadi) - Add install guidelines for different platforms (
pixi,conda,pip,uv) in docs (#1108 by Julian Tachella) - Add
deepinv.optim.SIRTalgorithm for tomographic reconstruction (#985 by Thibaut Modrzyk) - Add
deepinv.optim.MLEMalgorithm for Poisson inverse problems (#1051 by Thibaut Modrzyk) - Add the equivariant splitting loss
deepinv.loss.EquivariantSplittingLosswith equivariant reconstructorsdeepinv.models.EquivariantReconstructorand virtual physicsdeepinv.physics.VirtualLinearPhysics(#881 by Jérémy Scanvic) - Add
DEEPINV_CACHE_DIRenvironment variable to set the cache directory for datasets and pretrained weights (#1105 by Minh Hai Nguyen) - Add
deepinv.models.SRResNet(the generator of SRGAN) for single image super-resolution. (#1164 by Vicky De Ridder) - NIQE weight fitting on custom datasets, using
deepinv.loss.metric.NIQE.create_weights(#911 by Vicky De Ridder) - Add
deepinv.loss.metric.GMSD, the Gradient Magnitude Similarity Deviation metric (#1171 by Vicky De Ridder) - Add
deepinv.models.FFDNetfor non-blind Gaussian denoising (#1174 by Vicky De Ridder) - Extend :func:
deepinv.physics.functional.gaussian_blurto 1D and 3D. Adddeepinv.physics.generator.GaussianBlurGenerator(#1152 by Romain Vo) - Add a fast re-implementation of BM3D for
deepinv.models.BM3D(#1195 by Kaibo Tang)
Changed
- Refactor CI to use
pixifor compatibility with mixed conda/pip environments (#1108 by Julian Tachella) - Add support for arbitrary learning-free reconstructors in the trainer (#881 by Jérémy Scanvic)
- Make available every mask used at evaluation for splitting models
deepinv.loss.SplittingLoss.SplittingModelwheneval_n_samples > 1(#881 by Jérémy Scanvic) - Deprecate
Loss.namein favor of the class name as done in the trainer (#881 by Jérémy Scanvic) - Update references for single pixel demo (#1151 by Laura C. Diaz-Delgado)
- Add changelog section to the contributing guidelines (#1153 by Thibaut Modrzyk)
- Unify patching / tiling and unpatching / un-tiling logic in physics and utils, with support for padding and non-overlapping patches. Add :func:
deepinv.utils.image_to_patchesand :func:deepinv.utils.patches_to_imageutility functions, and refactor physics to use them instead ofunfold(#1104 by Minh Hai Nguyen) - New
deepinv.loss.metric.NIQEimplementation, this drops PyIQA requirement, values given by NIQE vary between implementations (#911 by Vicky De Ridder)
Fixed
- Add warning when options
reduce="mean"andreduce="none"are used indeepinv.physics.StackedLinearPhysics. Removereductionargument fromdeepinv.distributed.DistributedStackedLinearPhysics(#1071 by Romain Vo) - Correct the value of
Transform.n_transin composed transformations (#881 by Jérémy Scanvic) - Add support for computing the evaluation loss for splitting losses like `deep
- Add
- v0.4.0Release v0.4.02026-03-11 · 2026-03-11 10:42 UTC
查看更新说明
New Features
deepinv.models.WaveletNoiseEstimatoranddeepinv.models.PatchCovarianceNoiseEstimatorfor noise level estimation (#1015 by Matthieu Terris)deepinv.physics.Scatteringphysics for non-linear inverse scattering problems (#1020 by Julian Tachella)deepinv.physics.Physics.compute_normlocal operator norm computation for non-linear physics (#1020 by Julian Tachella)deepinv.models.BilateralFiltermodel (#997 by Thomas Boulanger)- distributed computing framework with
deepinv.distributed.DistributedContext,deepinv.distributed.DistributedStackedPhysics,deepinv.distributed.DistributedProcessing,deepinv.distributed.DistributedDataFidelityanddeepinv.distributed.distributefactory function. Supports multi-GPU/multi-process execution with physics-based and spatial tiling distribution strategies (#790` by Benoît Malézieux) deepinv.loss.metric.CosineSimilarityto the metrics (#944 by Avithal Lautman)- New option to initialize 3D networks (DRUNet, DnCNN, DScCP) from pretrained 2D weights (#958 by Romain Vo)
- Add
deepinv.physics.TiledSpaceVaryingBlurphysics anddeepinv.physics.generator.TiledBlurGenerator(#1033 by Minh Hai Nguyen and Paul Escande)
Changed
- (Breaking) Make
deepinv.physics.BlurFFTcompute a true convolution (now) instead of cross-correlation (before). It is now equivalent todeepinv.physics.Blurwithpadding="circular"(#825 by Minh Hai Nguyen). For even kernel sizes, the output is now shifted by one pixel to the top-left compared to before. - Refactor folder structure of least-squares solvers (#1011 by Julian Tachella)
- Removed
epsparameter fromdeepinv.optim.linear.conjugate_gradient(#1011 by Julian Tachella) deepinv.loss.metric.LPIPSusestorchmetricsinstead ofpyiqa. (#1041 by Andrew Wang)- Remove
pyiqaoptional dep (#1041 by Andrew Wang) - Deprecated
verbose_individual_lossesparameter indeepinv.Trainer. Individual losses are now always added to logs when multiple losses are present (#928 by Tiberiu Sabau) - Deprecate historical attributes in HDF5Dataset (#764 by Jérémy Scanvic)
Fixed
- Implement/extend functional for 2D/3D convolution with spatial and FFT (:func:
deepinv.physics.functional.conv3danddeepinv.physics.functional.conv_transpose3d), support all padding modes with equivalent outputs (#825 by Minh Hai Nguyen) - Fix ZeroPrior
deepinv.optim.ZeroPrior(#1001 by Victor Sechaud) - Fix single-disperser CASSI adjointness (#1029 by Andrew Wang)
- Add
deepinv.physics.ComposedPhysics,deepinv.physics.ComposedLinearPhysicsto online documentation (#1000 by Romain Vo) - Have test ground truths returned in HDF5Dataset when present (#764 by Jérémy Scanvic)
- Dispose of invalid physics parameters in HDF5Dataset loading (#764 by Jérémy Scanvic)
deepinv.utils.plot_ortho3Ddoesn't perform sqrt on images (#1068 by Andrew Wang)- Deprecate
self.devicein `deepin
- v0.3.7Release v0.3.72025-12-15 · 2025-12-15 12:09 UTC
查看更新说明
New Features
- Add
deepinv.physics.LaplaceNoisemodel (#921 by Brayan Monroy) - New way to create optimization models. Standard optimization algorithms (and their unfolded versions) can be created using their class name directly instead of using the
optim_builder(orunfolded_builder) function. (#592 by Samuel Hurault) - New
vminandvmaxarguments in :func:deepinv.utils.plotto set custom clipping bounds when usingrescale_mode='clip'(#967 by Thibaut Modrzyk) - Added :func:
deepinv.utils.dirac_comband :func:deepinv.utils.dirac_comb_like(#946 by Julian Tachella) - Added testmon https://www.testmon.org/ and conditional run of sphinx-gallery examples to CI to speed up tests (#966 by Julian Tachella)
- Add
kernel estimation network <deepinv.models.KernelIdentificationNetwork>for blind deconvolution (#971 by Julian Tachella) - Add blind inverse problems section to reconstruction user guide (#971 by Julian Tachella)
- Add
deepinv.loss.metric.BlurStrengthanddeepinv.loss.metric.SharpnessIndexno-reference metrics for blind deblurring (#971 by Julian Tachella)
Changed
- Faster
deepinv.models.RAMimplementation by avoiding certain redundant computations (#946 by Julian Tachella) - (Breaking) Change
deepinv.physics.TomographyWithAstraphysics interface to better match the interface of the PyTorch-basedTomographyphysics (#747 by Alexander Skorikov) - Add support for Poisson2Sparse (#677 by Jérémy Scanvic)
- (Breaking)
Tomographyphysics uses the true adjoint by default.TomographyandTomographyWithAstraimplement the pseudo-inverse as the solution of a least-squares problem, with the option to usefbp. (#930 by Romain Vo) - Add a check in
deepinv.datasets.FMDto avoid unnecessary downloads (#962 by Jérémy Scanvic) - Trainer checkpoint loading verbose (#982 by Andrew Wang)
Fixed
- Fixed
deepinv.sampling.DPSinitialization when measurements have different size than image (#946 by Julian Tachella) - Fixed
deepinv.physics.PtychographyA_daggerinitialization bug (#946 by Julian Tachella) - Reduce CI cache size by using
uvcaching (#943 by Minh Hai Nguyen) generate_datasetreceived a general refactor, now supports PIL image datasets and doesn't break when validation dataset returnsTensorList(#948 by Vicky De Ridder)- test_physics.test_tomography correctly implements the pseudo-inverse test (:gh:
930by Romain Vo)
- Add
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
.. image:: https://github.com/deepinv/deepinv/raw/main/docs/source/figures/deepinv_logolarge.png :width: 500px :alt: deepinv logo :align: center
|pip install| |stars| |discord| |colab| |youtube| |paper|
|Test Status| |GPU Test Status| |Docs Status| |GPU Docs Status| |Python Version| |Black| |codecov|
Introduction
DeepInverse <https://deepinv.org>_ is an open-source PyTorch-based library for solving imaging inverse problems with deep learning.
The library is part of the official PyTorch Ecosystem <https://pytorch.landscape2.io/?item=modeling--computer-vision--deepinverse>_.
deepinv accelerates deep learning research across imaging domains, enhances research reproducibility via a common modular framework of problems and algorithms, and lowers the entrance bar to new practitioners.
.. image:: https://github.com/deepinv/deepinv/raw/main/docs/source/figures/deepinv_schematic.png :width: 1000px :alt: deepinv schematic :align: center
Get started
Read our documentation at deepinv.org <https://deepinv.org>. Check out our 5 minute quickstart tutorial <https://deepinv.org/auto_examples/basics/demo_quickstart.html>, our comprehensive examples <https://deepinv.org/auto_examples/index.html>, or our User Guide <https://deepinv.org/user_guide.html>.
deepinv features
- A large framework of
predefined imaging operators <https://deepinv.org/user_guide/physics/physics.html>_ - Many
state-of-the-art deep neural networks <https://deepinv.org/user_guide/reconstruction/introduction.html>, including pretrained out-of-the-boxreconstruction models <https://deepinv.org/user_guide/reconstruction/pretrained-models.html>anddenoisers <https://deepinv.org/user_guide/reconstruction/denoisers.html>_ - Comprehensive frameworks for
plug-and-play restoration <https://deepinv.org/user_guide/reconstruction/iterative.html>,optimization <https://deepinv.org/user_guide/reconstruction/optimization.html>andunfolded architectures <https://deepinv.org/user_guide/reconstruction/unfolded.html>_ Training losses <https://deepinv.org/user_guide/training/loss.html>_ for inverse problemsSampling algorithms and diffusion models <https://deepinv.org/user_guide/reconstruction/sampling.html>_ for uncertainty quantification- A framework for
building datasets <https://deepinv.org/user_guide/training/datasets.html>_ for inverse problems
Mailing list
`Join our mailing list <https://forms.gle/TFyT7M2HAWkJYfvQ7>`_ for occasional updates on releases and new features.
Install
-------
Install the latest stable release of ``deepinv`` with python 3.10 or higher
(see `docs <https://deepinv.org/#install>`_ installing with `uv`, `pixi` and `conda`):
.. code-block:: bash
pip install deepinv
Or, to also install optional dependencies:
.. code-block:: bash
pip install deepinv[dataset,denoisers]
Since ``deepinv`` is under active development, you can install the latest nightly version using:
.. code-block:: bash
pip install git+https://github.com/deepinv/deepinv.git#egg=deepinv
Or, for updating an existing installation:
.. code-block:: bash
pip install --upgrade --force-reinstall --no-deps git+https://github.com/deepinv/deepinv.git#egg=deepinv
Finding help
------------
If you have any questions or suggestions, please join the conversation in our
`Discord server <https://discord.gg/qBqY5jKw3p>`_. The recommended way to get in touch with the developers about any bugs or issues is to
`open an issue <https://github.com/deepinv/deepinv/issues>`_.
Maintainers
~~~~~~~~~~~
Get in touch with our `MAINTAINERS <https://github.com/deepinv/deepinv/blob/main/MAINTAINERS.md>`_.
Contributing
------------
DeepInverse is a `community-driven project <https://deepinv.org/community.html>`_ and we encourage contributions of all forms.
We are building a comprehensive library of inverse problems and deep learning,
and we need your help to get there!
Interested? `Check out how you can contribute <https://deepinv.org/contributing.html>`_!
Citation
--------
If you use DeepInverse in your research, please cite `our paper on JOSS <https://joss.theoj.org/papers/10.21105/joss.08923>`_:
.. code-block:: bash
@article{tachella2025deepinverse,
title = {DeepInverse: A Python package for solving imaging inverse problems with deep learning},
journal = {Journal of Open Source Software},
doi = {10.21105/joss.08923},
url = {https://doi.org/10.21105/joss.08923},
year = {2025},
publisher = {The Open Journal},
volume = {10},
number = {115},
pages = {8923},
author = {Tachella, Julián and Terris, Matthieu and Hurault, Samuel and Wang, Andrew and Davy, Leo and Scanvic, Jérémy and Sechaud, Victor and Vo, Romain and Moreau, Thomas and Davies, Thomas and Chen, Dongdong and Laurent, Nils and Monroy, Brayan and Dong, Jonathan and Hu, Zhiyuan and Nguyen, Minh-Hai and Sarron, Florian and Weiss, Pierre and Escande, Paul and Massias, Mathurin and Modrzyk, Thibaut and Levac, Brett and Liaudat, Tobías I. and Song, Maxime and Hertrich, Johannes and Neumayer, Sebastian and Schramm, Georg},
}
Star history
------------
.. image:: https://api.star-history.com/chart?repos=deepinv/deepinv&type=date&legend=top-left&sealed_token=_m7-ngEzgaicNO-u585LK2zkRyHzwKnkM4SNVz6AhngSG7DpKD9wHcVOSqlwsi2X-cTgbZgVQ1FvK-bznTJ7pyOIY4L0-c83JnpoDxMBCkI27h-UOkx2B1d_j1sPoRQcT8q31PZSR7RTOCs34Bfm3fb0PiUJyNtv5syxkOIJb75nuwzomOtNwVCZwQtG
:alt: Star History Chart
:target: https://api.star-history.com/chart?repos=deepinv/deepinv&type=date&legend=top-left&sealed_token=_m7-ngEzgaicNO-u585LK2zkRyHzwKnkM4SNVz6AhngSG7DpKD9wHcVOSqlwsi2X-cTgbZgVQ1FvK-bznTJ7pyOIY4L0-c83JnpoDxMBCkI27h-UOkx2B1d_j1sPoRQcT8q31PZSR7RTOCs34Bfm3fb0PiUJyNtv5syxkOIJb75nuwzomOtNwVCZwQtG
.. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
.. |Test Status| image:: https://github.com/deepinv/deepinv/actions/workflows/test_cpu.yml/badge.svg?branch=main&event=push
:target: https://github.com/deepinv/deepinv/actions/workflows/test_cpu.yml
.. |GPU Test Status| image:: https://github.com/deepinv/deepinv/actions/workflows/test_gpu.yml/badge.svg?branch=main&event=push
:target: https://github.com/deepinv/deepinv/actions/workflows/test_gpu.yml
.. |Docs Status| image:: https://github.com/deepinv/deepinv/actions/workflows/docs_cpu.yml/badge.svg
:target: https://github.com/deepinv/deepinv/actions/workflows/docs_cpu.yml
.. |GPU Docs Status| image:: https://github.com/deepinv/deepinv/actions/workflows/docs_gpu.yml/badge.svg?branch=main&event=push
:target: https://github.com/deepinv/deepinv/actions/workflows/docs_gpu.yml
.. |Python Version| image:: https://img.shields.io/badge/python-3.10%2B-blue
:target: https://www.python.org/downloads/release/python-3100/
.. |codecov| image:: https://codecov.io/gh/deepinv/deepinv/branch/main/graph/badge.svg?token=77JRvUhQzh
:target: https://codecov.io/gh/deepinv/deepinv
.. |pip install| image:: https://img.shields.io/pypi/dm/deepinv.svg?logo=pypi&label=pip%20install&color=fedcba
:target: https://pypistats.org/packages/deepinv
.. |discord| image:: https://dcbadge.limes.pink/api/server/qBqY5jKw3p?style=flat
:target: https://discord.gg/qBqY5jKw3p
.. |colab| image:: https://colab.research.google.com/assets/colab-badge.svg
:target: https://colab.research.google.com/github/deepinv/deepinv/blob/gh-pages/auto_examples/_notebooks/basics/demo_quickstart.ipynb
.. |youtube| image:: https://img.shields.io/badge/YouTube-deepinv-red?logo=youtube
:target: https://www.youtube.com/@deepinv
.. |paper| image:: https://joss.theoj.org/papers/10.21105/joss.08923/status.svg
:target: https://doi.org/10.21105/joss.08923
.. |stars| image:: https://img.shields.io/github/stars/deepinv/deepinv?style=flat&label=%E2%AD%90%20Star%20us%20on%20GitHub
:target: https://github.com/deepinv/deepinv