Skip to content

Commit

Permalink
Merge pull request #83 from AxisCommunications/sync-20230113-1
Browse files Browse the repository at this point in the history
Sync 20230113 1
  • Loading branch information
pataxis authored Jan 13, 2023
2 parents 311c512 + b4219b3 commit caa2707
Show file tree
Hide file tree
Showing 143 changed files with 326 additions and 192 deletions.
2 changes: 1 addition & 1 deletion docs/api/beta-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ The best way to leave feedback is to use the GitHub issue tracker of the Beta
API implementation (for example if the prototype is an ACAP application image)
or in the Beta API example if there is one available.

### ACAP Runtime and Parameter API
### Parameter API

Feedback on the service and API can be given in the [ACAP Computer Vision SDK
examples](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/issues) issue tracker.
49 changes: 27 additions & 22 deletions docs/api/computer-vision-sdk-apis.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,16 @@ SDK version | Available from firmware version
1.3 | 10.12
1.4 | 11.0
1.5 | 11.1
1.6 | 11.2

## SDK index

**[SDK packages with AXIS-specific functionality](#sdk-packages-with-axis-specific-functionality)**

- [ACAP Runtime APIs](#acap-runtime-apis)
- [Video capture API](#video-capture-api): [OpenCV with VDO](#opencv-with-vdo)
- [Machine learning API](#machine-learning-api): [TensorFlow Serving](#tensorflow-serving-inference-client)
- [BETA - ACAP Runtime](#beta---acap-runtime)
- [BETA - Parameter API](#beta---parameter-api)

**[SDK package index](#sdk-package-index)**

Expand All @@ -55,8 +57,22 @@ SDK version | Available from firmware version

## SDK packages with AXIS-specific functionality

### ACAP Runtime APIs

The ACAP Runtime service is an installable ACAP application that provides:

- [Video capture API](#video-capture-api): Enables capture of images from a camera
- [Machine learning API](#machine-learning-api): Tensorflow Serving for inference service
- [BETA - Parameter API](#beta---parameter-api): Axis parameter service

The ACAP Runtime uses [gRPC](https://grpc.io) and a [Unix Socket Domain (UDS)](https://grpc.github.io/grpc/cpp/md_doc_naming.html) socket for access. The access is restricted to applications in the device that belongs to the `sdk` user group. Installable versions for devices equipped with ARTPEC-7 and ARTPEC-8 chips are available [here](https://hub.docker.com/r/axisecp/acap-runtime).

In order to use the APIs, there is a requirement to install the acap-runtime application on the Axis network device. Detailed instructions for installing acap-runtime can be found [here](https://hub.docker.com/r/axisecp/acap-runtime). The acap-runtime acts as a server that exposes the gRPC APIs.

### Video capture API

The Video capture API is one of the services of ACAP runtime.

The [OpenCV package](#opencv-with-vdo) has been extended with functionality for capturing camera images and accessing and modifying video stream and image properties. This was done by making the [OpenCV VideoCapture-class](https://docs.opencv.org/4.5.3/d8/dfe/classcv_1_1VideoCapture.html) interface with the [AXIS VDO library](src/api/vdostream/html/index.html), which allows for treating the Axis camera like any other OpenCV-compatible camera.

The parts of the OpenCV API that are affected by this addition are documented below.
Expand Down Expand Up @@ -148,34 +164,23 @@ services:
### Machine learning API
The Machine learning API is one of the services of ACAP runtime.
The ACAP Computer Vision SDK provides a flexible way of allowing machine learning inference in the form of TensorFlow Serving and a [TensorFlow Serving client](#tensorflow-serving-inference-client). TensorFlow Serving allows for making inference calls over gRPC to another container running a model server. This has several benefits, including exposing a common API for inference and having a single process handle all apps' DLPU communication.
Through Docker Hub and the ACAP Computer Vision SDK, both a model server for _larod_ and a Python client are available. The model server, called `larod-inference-server`, is available on Docker Hub under the [axisecp/larod-inference-server](https://hub.docker.com/r/axisecp/larod-inference-server) repository. The Python client is available in the ACAP Computer Vision SDK under `/axis/python-tfserving` and imported in Python as `InferenceClient`, which is available in the `tf_proto_utils` module. The client exposes a single `infer(inputs, model_name)` function that enables easy inference using the model server.

A minimal, but complete, example of how a Python client and a model server running on the same camera could be set up is shown in the [minimal-ml-example](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/main/minimal-ml-inference) on GitHub which is a part of the [ACAP Computer Vision SDK examples](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples).

### BETA - ACAP Runtime

**This API is a [Beta version](./beta-api) and developers are encouraged to
test and leave feedback.**

The ACAP Runtime service is an installable ACAP application that provides:

- Inference API - Tensorflow Serving for inference service
- Parameter API - Axis parameter service
- Video capture API - Enables capture of images from a camera
#### Code Examples

The ACAP Runtime uses [gRPC](https://grpc.io) and a [Unix Socket Domain (UDS)](https://grpc.github.io/grpc/cpp/md_doc_naming.html) socket for access. The access is restricted to applications in the device that belongs to the `sdk` user group. Installable versions for devices equipped with ARTPEC-7 and ARTPEC-8 chips are available [here](https://hub.docker.com/r/axisecp/acap-runtime).
- [minimal-ml-inference](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/main/minimal-ml-inference) - A minimal, but complete, example of how a Python client and a model server running on the same camera.
- [object-detector-cpp](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/main/object-detector-cpp) - A complete example of how a C++ client and a model server running on the same camera.

### BETA - Parameter API

**This API is a [Beta version](./beta-api) and developers are encouraged to
test and leave feedback.**
**This API is a [Beta version](./beta-api) and developers are encouraged to test and leave feedback.**

The Parameter API is one of the services of ACAP runtime.

In order to use the Parameter API, there is a requirement to install the acap-runtime application on the Axis network device. Detailed instructions for installing acap-runtime can be found [here](https://hub.docker.com/r/axisecp/acap-runtime). The acap-runtime acts as a server that exposes the gRPC Parameter API.

The Parameter API enables an application to read the parameters of an Axis network device. There are a lot of parameters on an Axis network device in the form of key-value pairs, and the Parameter API allows us to pass the name of the parameter as the key, which will return the value of the parameter. This API can be used to read existing parameters; it can not set any new parameters.

It is necessary to use the exact parameter name to get the expected results. The parameter list can be found using the URL `http://<ip address>/axis-cgi/param.cgi?action=list` where `<ip address>` is the IP address of your device.
Expand All @@ -190,8 +195,8 @@ root.Brand.ProdNbr

#### Code Examples

- [parameter-api-cpp](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/master/parameter-api-cpp) - A C++ example which reads device parameters using the Parameter-API.
- [parameter-api-python](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/master/parameter-api-python) - A Python example which reads device parameters using the Parameter-API.
- [parameter-api-cpp](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/master/parameter-api-cpp) - A C++ example which reads device parameters using the Parameter API.
- [parameter-api-python](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/master/parameter-api-python) - A Python example which reads device parameters using the Parameter API.

## SDK package index

Expand Down Expand Up @@ -229,13 +234,13 @@ A Python OpenCV package is included in the `/axis/opencv` package as a module ca

#### [TensorFlow Serving inference client](https://github.com/AxisCommunications/acap-computer-vision-sdk/blob/main/sdk/tfserving/tf_proto_utils.py)

`/axis/python-tfserving`: A Python client for the TensorFlow Serving framework. Detailed in the [Machine Learning API section](#machine-learning-api).
`/axis/python-tfserving`: A Python client for the TensorFlow Serving framework. Detailed in the [Machine learning API section](#machine-learning-api).

---

### [OpenCV](https://github.com/opencv/opencv) with VDO

`/axis/opencv`: A computer vision library with functionality that covers many different fields within computer vision. The VDO integration allows accessing the camera's video streams through the OpenCV VideoCapture class, as detailed in [Video Capture API](#video-capture-api). Compiled with OpenBLAS.
`/axis/opencv`: A computer vision library with functionality that covers many different fields within computer vision. The VDO integration allows accessing the camera's video streams through the OpenCV VideoCapture class, as detailed in [Video capture API](#video-capture-api). Compiled with OpenBLAS.

---

Expand Down
6 changes: 4 additions & 2 deletions docs/api/native-sdk-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ SDK version | Available from firmware version
1.3 | 10.12
1.4 | 11.0
1.5 | 11.1
1.6 | 11.2

## Video capture API

Expand Down Expand Up @@ -80,6 +81,7 @@ Axis OS version | VdoStream API version | New functions added
10.12 | 8.0.15 | `vdo_map_get_pair32i`, `vdo_map_get_pair32u`, `vdo_map_set_pair32i`, `vdo_map_set_pair32u`
11.0 | 9.0.4 | -
11.1 | 9.8.16 | -
11.2 | 9.18.0 | -

### Known issues

Expand All @@ -99,7 +101,7 @@ Axis OS version | VdoStream API version | New functions added

## Machine learning API

Larod provides a simple unified C API for running machine learning and image preprocessing efficiently. Larod is open source on GitLab, see [Introduction to larod](https://gitlab.com/unimatrix/larod/-/blob/master/doc/introduction-for-app-developers.md)
Larod provides a simple unified C API for running machine learning and image preprocessing efficiently. Larod is open source on GitLab, see [Introduction to larod](https://gitlab.com/unimatrix/larod/-/blob/master/doc/introduction-for-app-developers.md).

Go to the [ACAP API Documentation](src/api/larod/html/index.html) for detailed functional descriptions of this API.

Expand Down Expand Up @@ -247,7 +249,7 @@ The Axevent API was introduced in Native SDK 1.0.
- The example code is written in C which sends an ONVIF event periodically.
- [subscribe_to_event](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/master/axevent/subscribe_to_event)
- The example code is written in C which subscribe to the ONVIF event sent from application "send_event".
- [subscribe_to_event_s](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/master/axevent/subscribe_to_events)
- [subscribe_to_events](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/master/axevent/subscribe_to_events)
- The example code is written in C which subscribes to different predefined events.

## License Key API
Expand Down
2 changes: 1 addition & 1 deletion docs/api/src/api/axevent/html/ax__event_8h.html
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#a37fcd4106a9ed74e315bbbec
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event_8h.html">ax_event.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion docs/api/src/api/axevent/html/ax__event_8h_source.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event_8h.html">ax_event.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -598,7 +598,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#a7d0e2163268cce49b3c6df5d
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event__element__item_8h.html">ax_event_element_item.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event__element__item_8h.html">ax_event_element_item.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion docs/api/src/api/axevent/html/ax__event__error_8h.html
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#a0e90b0c84b2661abd22cd238
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event__error_8h.html">ax_event_error.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event__error_8h.html">ax_event_error.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion docs/api/src/api/axevent/html/ax__event__handler_8h.html
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#ae18cd4f8d25c6fc555d91fde
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event__handler_8h.html">ax_event_handler.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event__handler_8h.html">ax_event_handler.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -974,7 +974,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#ae895165e54d69f3243eb2abf
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event__key__value__set_8h.html">ax_event_key_value_set.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event__key__value__set_8h.html">ax_event_key_value_set.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion docs/api/src/api/axevent/html/ax__event__types_8h.html
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#a46c0af445cf18cc10ef48d78
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event__types_8h.html">ax_event_types.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="ax__event__types_8h.html">ax_event_types.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion docs/api/src/api/axevent/html/axevent_8h.html
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ <h1><a class="anchor" id="ax_event_handler_callbacks"></a>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="axevent_8h.html">axevent.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion docs/api/src/api/axevent/html/axevent_8h_source.html
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="axevent_8h.html">axevent.h</a></li>
<li class="footer">Copyright &copy; 2009-2022 Axis Communications AB. All rights reserved.</li>
<li class="footer">Copyright &copy; 2009-2023 Axis Communications AB. All rights reserved.</li>
</ul>
</div>
</body>
Expand Down
Loading

0 comments on commit caa2707

Please sign in to comment.