Skip to content

v0.2.4

Compare
Choose a tag to compare
@denisvmedyantsev denisvmedyantsev released this 12 Jul 13:20

After a month of hard work, we have released a new version of Savant packed with new features and samples: 0.2.4. The latest version is more functional and provides more instruments to craft blazingly fast, reliable computer vision pipelines quickly.

New Demos

We believe that samples are worth thousands of words, so we focus on only writing documentation but demonstrating the features in an easy-to-try way.

The release includes three new examples:

  • Age/gender prediction example showing how to use YoloV5-Face, how to work with a custom attributive model predicting age and gender, and advanced in-GPU affine transformations based on facial landmarks with OpenCV-CUDA and Python;
  • Conditional video encoding example demonstrating the pipeline that draws on frames and encodes a video stream only when a user requests that (in the sample, only when a model detects objects); it shows how to avoid wasting computing resources when the footage is required based on certain external condition;
  • Multiple RTSP streams example featuring a simple pipeline that processes two RTSP streams and casts them to RTSP; Savant is very different from what people expect regarding the dynamic stream processing; they try to overcomplicate things, so we implemented a simple pipeline processing multiple streams simultaneously to show how it works.

New Features

  • Conditional Drawing and Encoding, which helps to decrease traffic and use CPU/GPU resources wisely;
  • New FFmpeg-based RTSP source adapter, which works much better than GStreamer-based when streams include B-frames;
  • New generic FFmpeg-based source adapter, which can work with every input supported by FFmpeg;

Quality Assurance

  • Now we track possible performance regressions when merging every ticket; our idea is to make Savant faster, not slower, so we want to monitor how our code affects performance;
  • Move from Python-based internals to Rust-based: we implement a core functionality library, Savant-rs, where we test the code carefully; we gradually replace Python-based components with Rust-based to ensure Savant works GIL-free where possible and the code has high quality. It is a long way to go; in future 0.2.5, we will introduce more GIL-free integrations.

Documentation

  • We have documented source and sink adapters carefully;
  • We have demonstrated how to use image preprocessing in common documentation and a full-features sample (age/gender prediction);
  • Wrote a new section on configuring the development environment in VS Code.

DeepStream 6.2 Bug Workaround

We reported a bug related to NVENC functionality on Jetson devices. DeepStream 0.6.2 is affected: NVENC incorrectly sequences encoded frames when the framerate is not equal to configured, which happens in RTSP or when frames are skipped based on certain conditions.

In Savant, we implemented a workaround: we reorder frames when necessary. We hope Nvidia will fix it in the upcoming DS release.

What Is Planned In 0.2.5

The new release will integrate more Rust code to make the pipelines less GIL-dependent. More functions related to dynamic pipeline configuration and edge-related development. Three to four new samples covering basic and advanced functions.