Real-time Depth from Monocular Image using the MiDaS v2 neural network with Unity's Barracuda inference framework.
This project includes the correct .onnx model that works well with Barracuda. You can always re-download the model from its official source if you encounter the infamous InvalidProtocolBufferException error.
See discussions that led to the choice of this specific model here (Unity) and here (Intel ISL). (June 2021)
| Platform | Version |
|---|---|
| Unity | 2021.2 or higher |
| com.unity.barracuda | 3.0.0 |
| com.unity.collections | 2.1.0-pre.11 |
| com.unity.mathematics | 1.2.6 |
| com.unity.burst | 1.8.3 |
Add this line to your manifest.json:
"ulc-nn-depth":"https://github.com/GeorgeAdamon/monocular-depth-unity.git?path=/MonocularDepthBarracuda/Packages/DepthFromImage#main",Add this line to your manifest.json:
"ulc-nn-depth":"https://github.com/GeorgeAdamon/monocular-depth-unity.git?path=/MonocularDepthBarracuda/Packages/DepthFromImage#v1.0.0",Find the DEPTH_FROM_IMAGE prefab

Use the Texture you like in the Input Texture slot. Works with RenderTextures and Texture2D objects. Video is supported through RenderTextures.

Parameterize the visual output in the Depth Mesher object. Use Shader method for best performance, or Mesh to get an actual tangible mesh.
If Color Texture is left blank, the mesh will be colorized with the depth data by default.

Sustained 60 fps on GTX 970 & i7 5930K (2015 rig) when using the shader-based displacement. Sustained 160 fps on RTX 3080Ti & i7 5930K when using the shader-based displacement.
The mesh-based displacement doesn't fully utilize the AsyncGPUReadback command. A command queue needs to be implemented, to process pending commands.

