Skip to content

Commit

Permalink
Merge 'origin/develop' into image_manip_refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-luxonis committed Jun 17, 2022
2 parents 6a14671 + 6c47ae3 commit b94176c
Show file tree
Hide file tree
Showing 67 changed files with 1,338 additions and 232 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ jobs:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9, '3.10']
python-architecture: [x64, x86]
fail-fast: false
steps:
- name: Cache .hunter folder
uses: actions/cache@v2
Expand Down Expand Up @@ -230,6 +231,7 @@ jobs:
strategy:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9, '3.10']
fail-fast: false
steps:
- name: Cache .hunter folder
uses: actions/cache@v2
Expand Down
32 changes: 29 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ if(NOT WIN32)
set(HUNTER_CONFIGURATION_TYPES "Release" CACHE STRING "Hunter dependencies list of build configurations")
endif()

# Specify path separator
set(SYS_PATH_SEPARATOR ";")
if(UNIX)
set(SYS_PATH_SEPARATOR ":")
endif()

# Generate combined Hunter config
file(READ depthai-core/cmake/Hunter/config.cmake depthai_core_hunter_config)
file(READ cmake/Hunter/config.cmake hunter_config)
Expand All @@ -17,8 +23,8 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/generated/Hunter/config.cmake ${final_hun

include("cmake/HunterGate.cmake")
HunterGate(
URL "https://github.com/cpp-pm/hunter/archive/v0.23.320.tar.gz"
SHA1 "9b4e732afd22f40482c11ad6342f7d336634226f"
URL "https://github.com/cpp-pm/hunter/archive/v0.23.322.tar.gz"
SHA1 "cb0ea1f74f4a2c49a807de34885743495fccccbe"
FILEPATH ${CMAKE_CURRENT_BINARY_DIR}/generated/Hunter/config.cmake # Combined config
)

Expand Down Expand Up @@ -97,6 +103,23 @@ pybind11_add_module(${TARGET_NAME}
src/log/LogBindings.cpp
)

if(WIN32)
# Copy dlls to target directory - Windows only
# TARGET_RUNTIME_DLLS generator expression available since CMake 3.21
if(CMAKE_VERSION VERSION_LESS "3.21")
file(GLOB depthai_dll_libraries "${HUNTER_INSTALL_PREFIX}/bin/*.dll")
else()
set(depthai_dll_libraries "$<TARGET_RUNTIME_DLLS:${TARGET_NAME}>")
endif()
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND
${CMAKE_COMMAND} -E copy ${depthai_dll_libraries} $<TARGET_FILE_DIR:${TARGET_NAME}>
COMMAND_EXPAND_LISTS
)

# Disable "d" postfix, so python can import the library as is
set_target_properties(${TARGET_NAME} PROPERTIES DEBUG_POSTFIX "")
endif()

# Add stubs (pyi) generation step after building bindings
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" "from mypy import api" RESULT_VARIABLE error OUTPUT_QUIET ERROR_QUIET)
if(error)
Expand All @@ -108,7 +131,10 @@ else()
endif()
message(STATUS "Mypy available, creating and checking stubs. Running with generate_stubs.py ${TARGET_NAME} ${bindings_directory}")
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND
${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_LIST_DIR}/generate_stubs.py" "${TARGET_NAME}" "${bindings_directory}"
${CMAKE_COMMAND} -E env
# Python path (to find compiled module)
"PYTHONPATH=$<TARGET_FILE_DIR:${TARGET_NAME}>${SYS_PATH_SEPARATOR}$ENV{PYTHONPATH}"
${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_LIST_DIR}/generate_stubs.py" "${TARGET_NAME}" "$<TARGET_FILE_DIR:${TARGET_NAME}>"
DEPENDS "${CMAKE_CURRENT_LIST_DIR}/generate_stubs.py"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
Expand Down
6 changes: 0 additions & 6 deletions ci/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ RUN apt-get update && apt-get install -y wget build-essential cmake pkg-config l

ADD ci/docker_dependencies.sh .
RUN ./docker_dependencies.sh
RUN wget https://github.com/libusb/libusb/releases/download/v1.0.24/libusb-1.0.24.tar.bz2
RUN tar xf libusb-1.0.24.tar.bz2
RUN cd libusb-1.0.24 && \
./configure --disable-udev && \
make -j && make install


RUN pip install -U pip && pip install --extra-index-url https://www.piwheels.org/simple/ --prefer-binary opencv-python

Expand Down
2 changes: 1 addition & 1 deletion depthai-core
Submodule depthai-core updated 51 files
+3 −3 .github/workflows/main.workflow.yml
+4 −4 .github/workflows/test.workflow.yml
+6 −3 CMakeLists.txt
+3 −6 README.md
+2 −2 cmake/ClangFormat.cmake
+1 −1 cmake/Depthai/DepthaiDeviceSideConfig.cmake
+19 −6 cmake/Hunter/config.cmake
+7 −1 cmake/depthaiDependencies.cmake
+12 −0 cmake/toolchain/asan.cmake
+12 −0 cmake/toolchain/ubsan.cmake
+36 −3 examples/CMakeLists.txt
+88 −0 examples/IMU/imu_firmware_update.cpp
+1 −0 examples/IMU/imu_rotation_vector.cpp
+18 −0 examples/MobileNet/rgb_mobilenet.cpp
+151 −0 examples/NeuralNetwork/detection_parser.cpp
+0 −1 examples/Script/script_forward_frames.cpp
+15 −0 examples/SpatialDetection/spatial_tiny_yolo.cpp
+12 −2 examples/StereoDepth/rgb_depth_aligned.cpp
+12 −2 examples/StereoDepth/rgb_depth_confidence_aligned.cpp
+1 −1 examples/bootloader/bootloader_config.cpp
+1 −1 examples/bootloader/bootloader_version.cpp
+1 −1 examples/bootloader/flash_bootloader.cpp
+10 −2 include/depthai/device/DeviceBase.hpp
+2 −2 include/depthai/openvino/OpenVINO.hpp
+9 −0 include/depthai/pipeline/datatype/StereoDepthConfig.hpp
+5 −0 include/depthai/pipeline/node/DetectionNetwork.hpp
+107 −0 include/depthai/pipeline/node/DetectionParser.hpp
+6 −0 include/depthai/pipeline/node/IMU.hpp
+9 −0 include/depthai/pipeline/node/StereoDepth.hpp
+6 −0 include/depthai/pipeline/node/VideoEncoder.hpp
+1 −0 include/depthai/pipeline/nodes.hpp
+4 −1 include/depthai/utility/Initialization.hpp
+18 −6 include/depthai/xlink/XLinkConnection.hpp
+1 −1 shared/depthai-shared
+63 −32 src/device/DeviceBase.cpp
+10 −9 src/device/DeviceBootloader.cpp
+15 −3 src/openvino/OpenVINO.cpp
+5 −0 src/pipeline/datatype/StereoDepthConfig.cpp
+15 −15 src/pipeline/node/DetectionNetwork.cpp
+94 −0 src/pipeline/node/DetectionParser.cpp
+4 −0 src/pipeline/node/IMU.cpp
+12 −12 src/pipeline/node/SpatialDetectionNetwork.cpp
+4 −0 src/pipeline/node/StereoDepth.cpp
+8 −5 src/pipeline/node/VideoEncoder.cpp
+22 −3 src/utility/Initialization.cpp
+4 −3 src/utility/Resources.cpp
+199 −165 src/xlink/XLinkConnection.cpp
+46 −12 tests/CMakeLists.txt
+33 −0 tests/integration/CMakeLists.txt
+8 −0 tests/integration/src/main.cpp
+23 −0 tests/src/openvino_blob_test.cpp
2 changes: 2 additions & 0 deletions docs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ else()
add_custom_target(sphinx ALL
${CMAKE_COMMAND} -E env
# Environment variables
# PATH (dlls)
"PATH=${HUNTER_INSTALL_PREFIX}/bin${SYS_PATH_SEPARATOR}$ENV{PATH}"
# Python path (to find compiled module)
"PYTHONPATH=$<TARGET_FILE_DIR:${TARGET_NAME}>${SYS_PATH_SEPARATOR}$ENV{PYTHONPATH}"
# ASAN in case of sanitizers
Expand Down
60 changes: 52 additions & 8 deletions docs/source/components/bootloader.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,62 @@
Bootloader
==========

Depthai bootloader is a small program which aids in booting and updating bootloader or depthai application packages.
DepthAI bootloader is a small program which **handles the booting process**, either by **booting the flashed application**,
or by **initializing the OAK PoE camera** so DepthAI API can connect to it.

To be able to run standalone (:ref:`documentation here <Standalone mode>`), the Depthai bootloader must be first
flashed to the devices flash. This step is required only once.
To be able to run in :ref:`Standalone mode`, the Depthai bootloader must be first flashed to the devices flash.
This step is required only once.

Once the device has the bootloader flashed, it will perform the same as before. Running pipelines with a host
connected doesnt require any changes.
connected doesn't require any changes.

Suggested workflow is to perform as much of development as possible with the host connected as the
iteration cycle is greatly improved.

Once desired pipeline is created, use the following function to flash: :code:`DeviceBootloader::flash`
Device Manager
##############

``device_manager.py`` is a Python helper that interfaces with device :ref:`Bootloader` and bootloader configuration.
It can be found at `depthai-python/utilities <https://github.com/luxonis/depthai-python/tree/main/utilities>`__.

.. image:: https://user-images.githubusercontent.com/18037362/171629704-0f78f31a-1778-4338-8ac0-bdfb0d2d593f.png

Device Manager Usage
--------------------

**About device tab** - Select a camera to see its metadata - like MxID, flashed bootloader version, device state etc.

* First we have to select the device we want to connect (boot) to, you can select that using:

* **Dropdown** which contains found device MX Ids. Dropdown will only get updated when starting the app.
* **Specify IP** button if your OAK PoE camera isn't in the same LAN.
* **Search** feature - a new window will show that has a table with all available cameras (either via USB port or on LAN - OAK PoEs), their MxId, name, and status. Clicking on a table row will select that device and boot to it.
* ``Flash newest Bootloader`` button will flash the ``newest bootloader`` to the device. You can select AUTO, USB or NETWORK bootloader.

* **AUTO** will select the connection type of bootloader with which the camera is currently connected to. If you are connected via USB (doing factory reset) to an OAK PoE camera, you shouldn't select AUTO, as it will flash USB bootloader.
* **USB** bootloader will try to boot the application that is stored on flash memory. If it can't find flashed application, it will just behave as normal USB OAK - so it will wait until a host computer initializes the application.
* **NETWORK** bootloader is used by the OAK PoE cameras, and is flashed at the factory. It handles network initialization so the OAK PoE cameras can be booted through the LAN.
* ``Factory reset`` will erase the whole flash content and re-flash it with only the USB or NETWORK bootloader. Flashed application (pipeline, assets) and bootloader configurations will be lost.
* ``Boot into USB recovery mode`` will force eg. OAK PoE camera to be available through the USB connector, even if its boot pins are set to PoE booting. It is mostly used by our firmware developers.

**Configuration settings tab** - After you select a device that has bootloader flashed, you can also configure bootloader
configuration.

- If the device has **NETWORK bootloader flashed**, you will be able to set its static/dynamic IP/mask/gateway, DNS, MAC, etc.
- If the device has **USB bootloader flashed**, you will be able to set its USB max speed and USB timeout.

After setting some values, you have to click on the ``Flash configuration`` button. You can also flash a :ref:`DAP`,
or clear the bootloader config.

Boot switches
#############

- **Boot from flash** - DIP switch: 0x03 (switches 5,6 ON) - used by OAK PoE and USB cameras when bootloader is installed.
- **Recovery mode for USB** - DIP switch: 0x16 (switches 2,4,5 ON) - to boot directly into USB mode, so camera waits for the host to connect to it via USB.

.. image:: https://user-images.githubusercontent.com/18037362/154956812-c3fcc961-af46-4dfd-8080-e15c8c6b43f0.png

OAK-D-PoE with switches 2,4,5 ON, for the purpose of connecting to the device via USB.

API
###
Expand All @@ -33,15 +77,15 @@ or update the bootloader itself.
progressCb parameter takes a callback function, which will be called each time an progress update occurs (rate limited to 1 second). This is mainly
used to inform the user of the current flashing progress.

You can also check the version of the current bootloader by using the :ref:`Bootloader Version` example.
.. _DAP:

DepthAI Application Package (.dap)
##################################

Depthai application package is a binary file format which stores sections of data. The purpose of this format is to be able to extract
**DepthAI application package** is a binary file format which stores sections of data. The purpose of this format is to be able to extract
individual sections and do OTA updates without requiring to update all data. Example: Between update 1 and 2 of users application,
Depthai firmware, Asset storage (50MiB neural network) and asset structure remained the same, but some additional processing nodes were added
to the pipeline. Instead of transferring the whole package only Pipeline description can be sent and updated.
to the pipeline. Instead of transferring the whole package, only Pipeline description can be sent and updated.

Depthai application package (**.dap**) consists of:

Expand Down
14 changes: 14 additions & 0 deletions docs/source/components/device.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,20 @@ When you create the device in the code, firmware is uploaded together with the p
cfg = depthai.ImageManipConfig()
input_q.send(cfg)
Connect to specified device
###########################

If you have multiple devices and only want to connect to a specific one, or if your OAK PoE camera is outside of your
subnet, you can specify the device (either with MxID, IP, or USB port name) you want to connect to.

.. code-block:: python
# Specify MXID, IP Address or USB path
device_info = depthai.DeviceInfo("14442C108144F1D000") # MXID
#device_info = depthai.DeviceInfo("192.168.1.44") # IP Address
#device_info = depthai.DeviceInfo("3.3.3") # USB port name
with depthai.Device(pipeline, device_info) as device:
# ...
Multiple devices
################
Expand Down
11 changes: 10 additions & 1 deletion docs/source/components/nodes/color_camera.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,15 @@ Click `here <https://en.wikipedia.org/wiki/Image_processor>`__ for more informat

**Image Post-Processing** converts YUV420 planar frames from the **ISP** into :code:`video`/:code:`preview`/:code:`still` frames.

When setting sensor resolution to 12MP and using :code:`video`, you will get 4K video output. 4K frames are cropped from 12MP frames (not downsampled).
``still`` (when a capture is triggered) and ``isp`` work at the max camera resolution, while ``video`` and ``preview`` are
limited to max 4K (3840 x 2160) resolution, which is cropped from ``isp``.
For IMX378 (12MP), the **post-processing** works like this:

.. code-block::
┌─────┐ Cropping to ┌─────────┐ Downscaling ┌──────────┐
│ ISP ├────────────────►│ video ├───────────────►│ preview │
└─────┘ max 3840x2160 └─────────┘ and cropping └──────────┘
Usage
#####
Expand Down Expand Up @@ -93,6 +101,7 @@ Here are known camera limitations for the Myriad X:

- **ISP can process about 600 MP/s**, and about **500 MP/s** when the pipeline is also running NNs and video encoder in parallel
- **3A algorithms** can process about **200..250 FPS overall** (for all camera streams). This is a current limitation of our implementation, and we have plans for a workaround to run 3A algorithms on every Xth frame, no ETA yet
- **ISP Scaling** numerator value can be 1..16 and denominator value 1..32 for both vertical and horizontal scaling. So you can downscale eg. 12MP (4056x3040) only to resolutions `calculated here <https://docs.google.com/spreadsheets/d/153yTstShkJqsPbkPOQjsVRmM8ZO3A6sCqm7uayGF-EE/edit#gid=0>`__

Examples of functionality
#########################
Expand Down
2 changes: 0 additions & 2 deletions docs/source/components/nodes/imu.rst
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,6 @@ IMU devices
List of devices that have an IMU sensor on-board:

* `OAK-D <https://docs.luxonis.com/projects/hardware/en/latest/pages/BW1098OAK.html>`__
* `OAK-D-IoT-40 <https://docs.luxonis.com/projects/hardware/en/latest/pages/DM1092.html>`__
* `OAK-D-IoT-75 <https://docs.luxonis.com/projects/hardware/en/latest/pages/DM1098OBC.html>`__
* `OAK-D-PoE <https://docs.luxonis.com/projects/hardware/en/latest/pages/SJ2088POE.html>`__
* `OAK-D CM4 PoE <https://docs.luxonis.com/projects/hardware/en/latest/pages/SJ2088POE.html>`__
* `OAK-FFC-3P <https://docs.luxonis.com/projects/hardware/en/latest/pages/DM1090.html>`__
Expand Down
2 changes: 1 addition & 1 deletion docs/source/components/nodes/neural_network.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
NeuralNetwork
=============

This node runs neural inference on input data. Any OpenVINO neural networks can be run using this node, as long as the VPU `supports all layers <https://docs.luxonis.com/en/latest/pages/model_conversion/#unsupported-layer-type-layer-type>`__.
This node runs neural inference on input data. Any OpenVINO neural networks can be run using this node, as long as the VPU `supports all layers <https://docs.luxonis.com/en/latest/pages/model_conversion/#supported-layers>`__.
This allows you to pick from **200+ pre-trained model** from `Open Model Zoo <https://github.com/openvinotoolkit/open_model_zoo>`__ and `DepthAI Model Zoo <https://github.com/luxonis/depthai-model-zoo>`__
and directly run it on the OAK device.

Expand Down
7 changes: 3 additions & 4 deletions docs/source/components/nodes/spi_in.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
SPIIn
=====

SPIIn node is used for **receiving data** that was sent **from a MCU** (via SPI). `OAK-IOT <https://docs.luxonis.com/projects/hardware/en/latest/#iot-designs>`__ devices
have an on-board ESP32 that is connected to the VPU (MyriadX) via SPI. You can find demos `here <https://github.com/luxonis/depthai-experiments/tree/master/gen2-spi>`__.
SPIIn node is used for **receiving data** that was sent **from a MCU** (via SPI).
You can find demos `here <https://github.com/luxonis/esp32-spi-message-demo>`__.

This allows you for example to control eg. :ref:`ColorCamera` or :ref:`ImageManip` from the MCU or send a :ref:`Buffer` of data from the MCU to a :ref:`Script` node.

Expand Down Expand Up @@ -65,8 +65,7 @@ Usage
Examples of functionality
#########################

- `SPI demos (host side) <https://github.com/luxonis/depthai-experiments/tree/master/gen2-spi>`__
- `ESP32 code demos <https://github.com/luxonis/esp32-spi-message-demo>`__
- `SPI code demos with ESP32 <https://github.com/luxonis/esp32-spi-message-demo>`__

Reference
#########
Expand Down
7 changes: 3 additions & 4 deletions docs/source/components/nodes/spi_out.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
SPIOut
======

SPIOut node is used for **sending data to a MCU** (via SPI). `OAK-IOT <https://docs.luxonis.com/projects/hardware/en/latest/#iot-designs>`__ devices
have an on-board ESP32 that is connected to the VPU (MyriadX) via SPI. You can find demos `here <https://github.com/luxonis/depthai-experiments/tree/master/gen2-spi>`__.
SPIOut node is used for **sending data to a MCU** (via SPI).
You can find demos `here <https://github.com/luxonis/esp32-spi-message-demo>`__.

:ref:`SPIIn` is used for receiving data from the MCU (via SPI).

Expand Down Expand Up @@ -63,8 +63,7 @@ Usage
Examples of functionality
#########################

- `SPI demos (host side) <https://github.com/luxonis/depthai-experiments/tree/master/gen2-spi>`__
- `ESP32 code demos <https://github.com/luxonis/esp32-spi-message-demo>`__
- `SPI code demos with ESP32 <https://github.com/luxonis/esp32-spi-message-demo>`__

Reference
#########
Expand Down
4 changes: 4 additions & 0 deletions docs/source/includes/install_req.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
This example script **requires external file(s) to run**. If you are using:

- depthai-python, run :code:`python3 examples/install_requirements.py` to download required file(s)
- dephtai-core, required file(s) will get downloaded automatically when building the example
2 changes: 1 addition & 1 deletion docs/source/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ Run the :code:`rgb_preview.py` example inside a Docker container on a Linux host
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
luxonis/depthai-library:latest \
python3 /depthai-python/examples/rgb_preview.py
python3 /depthai-python/examples/ColorCamera/rgb_preview.py
To allow the container to update X11 you may need to run :code:`xhost local:root` on the host.

Expand Down
3 changes: 1 addition & 2 deletions docs/source/samples/ColorCamera/autoexposure_roi.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ Setup

.. include:: /includes/install_from_pypi.rst

This example also requires MobilenetSDD blob (:code:`mobilenet-ssd_openvino_2021.2_5shave.blob` file) to work - you can download it from
`here <https://artifacts.luxonis.com/artifactory/luxonis-depthai-data-local/network/mobilenet-ssd_openvino_2021.2_5shave.blob>`__
.. include:: /includes/install_req.rst

Source code
###########
Expand Down
3 changes: 1 addition & 2 deletions docs/source/samples/MobileNet/mono_mobilenet.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ Setup

.. include:: /includes/install_from_pypi.rst

This example also requires MobilenetSDD blob (:code:`mobilenet-ssd_openvino_2021.2_6shave.blob` file) to work - you can download it from
`here <https://artifacts.luxonis.com/artifactory/luxonis-depthai-data-local/network/mobilenet-ssd_openvino_2021.2_6shave.blob>`__
.. include:: /includes/install_req.rst

Source code
###########
Expand Down
3 changes: 1 addition & 2 deletions docs/source/samples/MobileNet/rgb_mobilenet.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ Setup

.. include:: /includes/install_from_pypi.rst

This example also requires MobilenetSDD blob (:code:`mobilenet-ssd_openvino_2021.2_6shave.blob` file) to work - you can download it from
`here <https://artifacts.luxonis.com/artifactory/luxonis-depthai-data-local/network/mobilenet-ssd_openvino_2021.2_6shave.blob>`__
.. include:: /includes/install_req.rst

Source code
###########
Expand Down
3 changes: 1 addition & 2 deletions docs/source/samples/MobileNet/rgb_mobilenet_4k.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ Setup

.. include:: /includes/install_from_pypi.rst

This example also requires MobilenetSDD blob (:code:`mobilenet-ssd_openvino_2021.2_5shave.blob` file) to work - you can download it from
`here <https://artifacts.luxonis.com/artifactory/luxonis-depthai-data-local/network/mobilenet-ssd_openvino_2021.2_5shave.blob>`__
.. include:: /includes/install_req.rst

Source code
###########
Expand Down
5 changes: 1 addition & 4 deletions docs/source/samples/MobileNet/video_mobilenet.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,7 @@ Setup

.. include:: /includes/install_from_pypi.rst

This example also requires MobilenetSDD blob (:code:`mobilenet-ssd_openvino_2021.2_8shave.blob` file) and prerecorded video
(:code:`construction_vest.mp4` file) to work - you can download them
here: `mobilenet-ssd_openvino_2021.2_8shave.blob <https://artifacts.luxonis.com/artifactory/luxonis-depthai-data-local/network/mobilenet-ssd_openvino_2021.2_8shave.blob>`__
and `construction_vest.mp4 <https://artifacts.luxonis.com/artifactory/luxonis-depthai-data-local/network/construction_vest.mp4>`__
.. include:: /includes/install_req.rst

Source code
###########
Expand Down
3 changes: 1 addition & 2 deletions docs/source/samples/ObjectTracker/object_tracker.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ Setup

.. include:: /includes/install_from_pypi.rst

This example also requires MobilenetSDD blob (:code:`mobilenet.blob` file) to work - you can download it from
`here <https://artifacts.luxonis.com/artifactory/luxonis-depthai-data-local/network/mobilenet-ssd_openvino_2021.2_6shave.blob>`__
.. include:: /includes/install_req.rst

Source code
###########
Expand Down
3 changes: 1 addition & 2 deletions docs/source/samples/ObjectTracker/object_tracker_video.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ Setup

.. include:: /includes/install_from_pypi.rst

This example also requires MobilenetSDD based person-detection blob (:code:`person-detection-0201_openvino_2021.3_7shave.blob` file) to work - you can download it from
`here <https://artifacts.luxonis.com/artifactory/luxonis-depthai-data-local/network/person-detection-0201_openvino_2021.3_7shave.blob>`__
.. include:: /includes/install_req.rst

Source code
###########
Expand Down
3 changes: 1 addition & 2 deletions docs/source/samples/ObjectTracker/spatial_object_tracker.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ Setup

.. include:: /includes/install_from_pypi.rst

This example also requires MobilenetSDD blob (:code:`mobilenet.blob` file) to work - you can download it from
`here <https://artifacts.luxonis.com/artifactory/luxonis-depthai-data-local/network/mobilenet-ssd_openvino_2021.2_6shave.blob>`__
.. include:: /includes/install_req.rst

Source code
###########
Expand Down
Loading

0 comments on commit b94176c

Please sign in to comment.