Releases: roboflow/inference
v0.41.0
🚀 Added
🔥 Batch Processing Released ✨
We've released Roboflow Batch Processing - a fully managed solution powered by Workflows that allows you to process large volumes of videos and images without writing code. It offers an easy-to-use UI for quick tasks and a comprehensive API for automating data processing—fitting both small and large workloads.
This service is suitable for use cases that do not require real-time responses, such as:
- Analysing pre-recorded video files
- Making predictions from a large pool of images stored in your storage
- Automatic data labeling
Visit our docs 📖 to learn more.
batch_processing_ga_demo.mp4
💪 Other changes
- First 3 Quickstart Guides by @yeldarby in #1056
- Add CSRF Token to Builder by @yeldarby in #1050
- synchronize inputs to onnx session on GPU by @isaacrob-roboflow in #1061
- Add camera calibration util by @grzegorz-roboflow in #1066
- Prevent pipeline creation if there is insufficient memory available by @grzegorz-roboflow in #1060
- Catch ZeroDivisionError in video source by @robiscoding in #1062
- Migrate to new batch processing with CLI tool by @PawelPeczek-Roboflow in #1063
- Added code to improve cleanup when there are multiple workers/servers… by @bigbitbus in #1064
- add env for roboflow serverless service by @PacificDou in #1059
Full Changelog: v0.40.0...v0.41.0
v0.40.0
🚀 Added
![]() |
![]() |
- Camera calibration block
This block uses the OpenCV calibrateCamera function to remove lens distortions from an image.
This block expands workflows capabilities in the area of taking measurements with camera. With distortions removed measurements performed by size measurement block are more accurate.
Block added by @grzegorz-roboflow in #1053
💪 Improved
- Add Background Compilation for OWLv2 Vision Model by @lrosemberg in #1049
Other changes
- Add ability to inject metrics collector URL by @PawelPeczek-Roboflow in #1047
- Fix workflows batch processing for Windows paths by @PawelPeczek-Roboflow in #1051
- Fix / do not check if torch is in dir() by @grzegorz-roboflow in #1054
- Measure execution time of workflow execution and model inference by @grzegorz-roboflow in #1052
Full Changelog: v0.39.0...v0.40.0
v0.39.0
🚀 Added
- Yolov12 support was added to Inference by @probicheaux!
- Use precomputed owl embeddings (change by probicheaux) in #977
- Added the Enterprise MS SQL Server Block by @chandlersupple in #1043
💪 Improved
- Multistage build improved by @bigbitbus in #1041
Other changes
- Fix broken links in docs by @PawelPeczek-Roboflow in #1032
- fix broken docs by @hansent in #1039
- Apply confidence when inferring on classification models by @grzegorz-roboflow in #1036
- Handle environment and classes embedded directly within getWeights payload by @grzegorz-roboflow in #1038
- Add upper version pin for opencv-python-headless by @grzegorz-roboflow in #1045
- Additional action to push to Public artifacts registry by @bigbitbus in #1037
- Align
inference
cli with new data export for RF batch processing by @PawelPeczek-Roboflow in #1040 - add openapi.json to whitelist of dedicated deployment authorizer by @PacificDou in #1048
Full Changelog: v0.38.0...v0.39.0
v0.38.0
🚀 Added
Qwen2.5-VL 🤝 Workflows
Thanks to @Matvezy, we’ve enabled Qwen2.5-VL model in inference
and the Workflows ecosystem, making it easier than ever to utilise its powerful vision-language capabilities. 🎉
💡 About Qwen2.5-VL
Qwen2.5-VL is a Visual Language model which understands both images and text, allowing it to analyze documents, detect objects, and interpret videos with human-like comprehension. All of those advancements are now available in Workflows 🤯
Take a look at docs 📖 to find more details.
🚗 Speed improvements in inference
🏁
@isaacrob-roboflow is not slowing down - and with him, literally whole inference
is moving faster. In this release, he added few important changes:
- 🎯 Torch-base images pre-processing: ability to run pre-processing on GPU using
pytorch
to utilise underlying hardware more efficiently. - 💡 ONNX IO bindings enabled: technique which minimise data round-trip time to and from memory (especially helpful when pre-processing can happen directly on GPU)
- 🕵️ Details of the change: #941
Want to hear about results?
- 🏍️ For big images (for instance of size
2048 x 2048
) we observe substantial drop in inference latency - in example case latency dropped from 130-140ms 👉 50-60ms - that's nearly 3x speedup 🤯
We can't wait future optimisations 💪
💻 New home page for inference
docs
You may have already noticed, but just to be sure, let's take a look at the new design of inference
home page prepared by @isoceles.
Check out here
🚨 Deprecated
Caution
We needed to take immediate actions. Vulnerability was detected in transformers
library forced us to introduce changes into inference
dependencies, effectively removing part of the components which we could not prepare security patches for. Vulnerability description CVE-2024-11393:
Hugging Face Transformers MaskFormer Model Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of Hugging Face Transformers. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file. The specific flaw exists within the parsing of model files. The issue results from the lack of proper validation of user-supplied data, which can result in deserialization of untrusted data. An attacker can leverage this vulnerability to execute code in the context of the current user.
We advise all clients to migrate into inference 0.38.0
and stop using old builds in production.
🐳 CogVLM was removed
First of the implication of CVE-2024-11393 was upgrade to newest transformers
version which was conflicting with CogVLM model requirements - as a result we decided to end of support of the model in inference
.
As far as we are concerned, CogVLM turned out not to be the most popular model in the ecosystem, but if anyone is looking for alternatives - we can suggest other models existing in inference
and Workflows ecosystem - like newly introduced Qwen2.5-VL.
Effective immediately, model was removed from the library, we left usage examples and and stub Workflow block which would fire an error if one tries to run it in Execution Engine providing the information about deprecation.
🐍 Python 3.8 no longer supported
Python 3.8 has already reached End Of Life and as a result - many libraries dropped support for this version of the interpreter. We tried to keep our codebase compatible as long as possible, but we were not able to apply security patch (as newer version of dependencies related to transformers
already dropped support). As a result - inference
will no longer support Python 3.8.
🥡 End Of Life - Jetson with Jetpack 4.5
As a result of Python 3.8 deprecation, we also needed to abandon builds for Jetson with Jetpack 4.5 which were bounded into this Python version.
📗 Other changes
- Prepare version of Workflows EE where thread pool executor is injectable instead of created at each run by @PawelPeczek-Roboflow in #1014
- Add changes to make it possible to register WebHooks by @PawelPeczek-Roboflow in #1020
- Fix docs homepage mobile nav by @yeldarby in #1023
- Aspect ratio operation by @EmilyGavrilenko in #1025
- Workflow error message improvements by @EmilyGavrilenko in #1018
- Add --metrics-enabled and --metrics-disabled to inference server start by @grzegorz-roboflow in #1024
- Expose decoding buffer size and predictions queue size as inference pipeline manager request parameters by @grzegorz-roboflow in #1022
- Update Workflows Changelog by @PawelPeczek-Roboflow in #1027
- Extend dynamic_zones block to expose updated detections as extra output by @grzegorz-roboflow in #1029
- Loginless Builder by @yeldarby in #1030
- Bump esbuild from 0.19.12 to 0.25.0 in /theme in the npm_and_yarn group across 1 directory by @dependabot in #1021
gpu_speedups
code review by @grzegorz-roboflow in #1031- Add an option to use pytorch for GPU-based image preprocessing by @isaacrob-roboflow in #941
- Handle new getWeights in RoboflowInferenceModel by @grzegorz-roboflow in #1028
- Addition of Qwen 2.5 VL to Inference and Workflows by @Matvezy in #1019
- Add rustc to OS dependencies by @grzegorz-roboflow in #975
- Fix problem with assertions by @PawelPeczek-Roboflow in #1033
- Fix broken CI by @PawelPeczek-Roboflow in #1034
- Fix broken parallel GPU CI by @PawelPeczek-Roboflow in #1035
🏅 New Contributors
Full Changelog: v0.37.1...v0.38.0
v0.37.1
🚀 Added
🪄 Workflows AI Assistant is ready to help you
The Workflows UI keeps improving, but we know navigating the ecosystem can still be challenging - whether it's understanding errors or getting up to speed with a growing number of blocks.
That’s why we’re launching the Workflows AI Assistant! 🤖 Now, you can ask any question about your Workflow and get context-aware guidance tailored to your setup.
Say goodbye to guesswork and hello to smarter, faster problem-solving! Try it out today. 🔥
ai_assistant_video.mp4
✂️ SAHI - Image Slicer v2
We've noticed that Image Slicer block was producing inconsistent crops when dimensions of the crop weren't matching the original image. We've introduced new version of the block to fix the problem.
If you are interested, take look at Image Slicer v2
docs 📝 and PR with change #1001
⚙️ Roboflow Batch Processing
We are actively working on Roboflow Batch Processing - new feature that we've presented in last release. This time we are adding bunch of improvements and extensions to make the processing more efficient.
Details of the changes: #1002, #1004, #1006
Stay tuned for future updates.
Features added to Workflows Blocks
- Add SequenceElementsCount UQL operation by @grzegorz-roboflow in #1005
- Add option to scale dynamic zone by @grzegorz-roboflow in #1007
🔧 Fixed
- Add opencv-contrib-python to requirements to resolve problems with rtsp streaming by @grzegorz-roboflow in #1015
💪 Improved
📝 Docs are changing
We are continuously improving our documentation to make it more helpful, but we know this is an ongoing challenge. Enhancing clarity and coverage takes time, and we’re committed to making it better every day. Here are the recent changes: #1000, #1012, #1013, #999, #995
📗 Other changes
- Update Block Copy by @EmilyGavrilenko in #996
- Flush usage_collector on shutdown by @grzegorz-roboflow in #994
- Pin pypdfium2 in requirements.jetson.txt by @grzegorz-roboflow in #997
- Handle WorkflowSyntaxError separately from WorkflowDefinitionError by @grzegorz-roboflow in #998
- Apply fix for pydnatic validation of error message by @PawelPeczek-Roboflow in #1009
- Fix e2e tests by @grzegorz-roboflow in #1010
- adjust initializer for allow_access_to_environmental_variables by @grzegorz-roboflow in #1016
Full Changelog: v0.36.1...v0.37.1
v0.36.1
What's Changed
- Fix issue with detections filter and perspective transformation by @PawelPeczek-Roboflow in #992
- Apply changes to filtering by parent class by @PawelPeczek-Roboflow in #993
Full Changelog: v0.36.0...v0.36.1
v0.36.0
🚀 Added
🏋 Workflows Batch Processing in Roboflow cloud
We’re thrilled to introduce early access for Workflows Batch Processing in Roboflow Cloud! Now, you can process entire directories of images or video files using your Workflows - no coding required!
⚡ Feature characteristics
- Asynchronous batch processing – You kick of a job that run in the background, and you can retrieve results later
- High throughput - Feature is designed to process a lot of data - so if your machine is not capable enough to process the data you have - this solution may be for you 🎯
- Fully managed – Runs on our cloud, so you don’t have to worry about infrastructure.
- No UI yet, but CLI ready – Use the updated
inference-cli
to access the feature.
📺 Check out the demo to see it in action!
This is an alpha release, and we’re inviting a small group of early adopters to test it out. Let us know if you’d like to be among the first to try it! 🚀
batch_processing_short_demo.mp4
🔍 Select Bounding Boxes Contained Within a Specific Class
We’ve heard your feedback! A common challenge in object detection is distinguishing objects contained within another object - and we’ve got you covered.
For example:
- 🚗 People inside a car vs. standing on the street
- 📦 Products on a store shelf vs. misplaced items
- 🔍 Defects within a specific component vs. background noise
We’re excited to announce a new Workflows operation that lets you filter bounding boxes based on spatial containment within a selected class. This makes it easier than ever to refine detections and extract the insights that matter most!
new_detections_filter.mp4
Check the details here
Auto mode in Stitch OCR Detections Block
Previously, users needed to manually specify the direction of text (e.g., left-to-right
, top-to-bottom
) before stitching. With the new "auto" mode, text direction is automatically detected as either left-to-right or top-to-bottom.
Check the details of @chandlersupple change here
💪 Improved
- Handle paligemma through new getWeights endpoint by @grzegorz-roboflow in #980
- Add optional language_hints input parameter to be passed as imageContext.languageHints by @grzegorz-roboflow in #982
- Prevent pipeline manager from entering infinite loop if workflow could not be parsed by @grzegorz-roboflow in #983
- When stream output received in camera streaming payload is not WorkflowImageData, select first available WorkflowImageData output by @grzegorz-roboflow in #984
- Add 'longer' and 'shorter' keys to the output of size_measurement block by @grzegorz-roboflow in #987
- When running bounding_rect update mask and xyxy of source sv.Detections so results can be visualized by @grzegorz-roboflow in #986
- remove print from cli docs generation script by @hansent in #978
- Extend query_language DetectionsProperty to cover sv.Detections data keys produced by blocks by @grzegorz-roboflow in #985
- Simplify dedicated deployments authorizer middleware to rely on workspace ID match by @grzegorz-roboflow in #988
- Fix platform tests by @PawelPeczek-Roboflow in #991
- HotFix for
aiortc
release breaking the build by @PawelPeczek-Roboflow in #989
Full Changelog: v0.35.0...v0.36.0
v0.35.0
🚀 Added
PLC Modbus TCP Block
This new block brings Modbus TCP communication to Workflows. The block uses the pymodbus library to read from and write to PLC registers over Modbus TCP. It supports three modes of operation:
read: Reads specified registers from a PLC.
write: Writes specified values to PLC registers.
read_and_write: Performs both reading and writing operations in one execution.
Adding Modbus TCP support allows workflows to interact with a broader range of PLCs and industrial devices that use the Modbus protocol.
- Change by @reedajohns in #951
Velocity block
New analytics block was added to Workflows to calculate and embed velocities and speeds of tracked objects across video frames.
Key Features:
- Velocity Calculation: Computes raw and smoothed velocities based on object movements between frames.
- Speed Calculation: Determines the magnitude of velocity vectors to obtain speed.
This block supports smoothing of velocity measurements using an exponential moving average with configurable smoothing_alpha
.
Incorporated unit conversion from pixels to meters via the pixels_per_meter parameter
- Change by @reedajohns in #754
Add support to run ResNet Classification Model in Inference
The recent update to the Roboflow Inference repository introduces support for ResNet classification models, as described in the seminal paper "Deep Residual Learning for Image Recognition" (He et al., 2015, [arXiv:1512.03385](https://arxiv.org/abs/1512.03385)). This integration enables users to leverage the powerful ResNet architecture for image classification tasks, enhancing the model options available within the inference engine and expanding its utility for diverse computer vision applications.
💪 Improved
Multiple changes enhancing Inference documentation!
- Docs: /start by @yeldarby in #936
- Block gallery refactor by @hansent in #955
- fix requirement command in doc build workflow by @hansent in #960
- Docs: Fix Typo by @yeldarby in #963
- Change "fire" to "run" in rate limiter description by @capjamesg in #968
Improvements to Workflows Blocks
- Detection Offset - Use bbox for percent padding by @sberan in #970
- Fix/perspective correction input accept output of dynamic zones by @grzegorz-roboflow in #972
- Fix Google Vision Block bounding box parsing by @brunopicinin in #961
Security improvements
- Added robots noindex meta tag by @bigbitbus in #964
- Fix/improve security in the inference server start command by @bigbitbus in #940
Improvements to webcam workflow preview
- Send raw image over WebRTC if no visualization is available by @grzegorz-roboflow in #967
- Handle wildcard outputs in webrct by @grzegorz-roboflow in #979
Other changes
- Add changes to enable indexing video processing results in workflows CLI by @PawelPeczek-Roboflow in #962
- send api key for model registry to make it work on dedicated deployments by @hansent in #974
- Add logging when workflow ID is known and internal workflow ID was not passed by @grzegorz-roboflow in #965
- Copy internal workflow id to specification before it's cached by @grzegorz-roboflow in #966
- Suppress ONNX providers warning by @grzegorz-roboflow in #969
Full Changelog: v0.34.0...v0.35.0
v0.34.0
🚀 Added
Introducing Stability AI Image Generation Block v1 🖌️✨
![]() |
![]() |
![]() |
Your gateway to limitless creativity with Stability AI! Block leverages Stability AI’s robust API with an easy-to-use interface. Just plug in your Stability AI API key, and you’re ready to go!
Main features:
- Text-to-Image Magic - Generate entirely new images from text prompts in seconds.
- Image Variations Made Easy - Start with an image and let the block transform it into captivating variations. Adjust the influence of your input image with precise control (strength parameter).
- Positive Prompts: Describe what you want to see.
- Negative Prompts: Specify what you don’t want to include.
- Model Selection: Choose from cutting-edge models (core, ultra, sd3) to best suit your creative needs.
- change by @deependujha in #933
💪 Improved
@hansent contributions enhancing Inference documentation!
- auto generate command line docs for CLI
- Http API Referene Docs
- add cli requirements to github workflow for generating docs
- update ui manifest for all blocks
- docstrings for SDK reference docs
- remove outdated active learning docs
⚡ Support for Roboflow Instant Models
Roboflow Instant Models are now supported in Inference! While this feature is part of the broader Roboflow Instant Models initiative, Inference now includes the ability to load these models seamlessly.
Roboflow Instant Models leverage the power of box prompting, utilizing your entire dataset as prompts during inference for enhanced performance and smarter predictions.
- Support for loading Roboflow Instant in Inference added by @grzegorz-roboflow in #929
Other changes
- Added Percent Padding to the Detection Offset Block by @chandlersupple in #956
- Add changes required to effectively index content of batch processing by @PawelPeczek-Roboflow in #942
- Fix the
class_name
alias for keypoint detection in workflows by @shantanubala in #946 - Handle optional workflow_id if passed as part of request to /workflows/run by @grzegorz-roboflow in #954
- Security improvement - avoid passing user value to isfile by @grzegorz-roboflow in #957
- Fix OwlV2.init by @grzegorz-roboflow in #937
- Pass is_preview if available when handling workflow request by @grzegorz-roboflow in #952
New Contributors
- @deependujha made their first contribution in #933
Full Changelog: v0.33.0...v0.34.0
v0.33.0
🚀 Added
Llama Vision 3.2 🤝 other VLMs supported in Workflows
![]() |
![]() |
![]() |
We welcome new block bringing Llama Vision 3.2 to workflows ecosystem!
Llama 3.2 is a new generation of vision and lightweight models that fit on edge devices, tailored for use cases that require more private and personalized AI experiences.
Related changes:
- Fix/onboarding llama 3.2 by @PawelPeczek-Roboflow in #927
- Tests for LLama Vision 3.2 by @PawelPeczek-Roboflow in #928
MQTT Writer Enterprise Workflow Block (added in #930)
This block enables our enterprise users to publish messages to an MQTT broker through Workflows.
MQTT (Message Queuing Telemetry Transport) is a lightweight messaging protocol designed for low-bandwidth, high-latency, or unreliable networks. It's widely used in applications where devices need to communicate with minimal overhead, such as the Internet of Things (IoT).
With this change workflows can communicate with the world through MQTT!
Change introduced by @chandlersupple
Plc EthernetIP Enterprise Workflow Block (added in #905)
This block enables our enterprise users to interface with PLC.
A Programmable Logic Controller (PLC) is an industrial computer specifically designed to automate machinery and processes in manufacturing and other industries. It monitors inputs (e.g., sensors), processes data based on a programmed logic, and controls outputs (e.g., actuators) to perform tasks.
This block is utilizing pylogix
library over Ethernet/IP. Block supports three modes of operation:
- read: Reads specified tags from the PLC.
- write: Writes specified values to the PLC tags.
- read_and_write: Performs both read and write operations in a single execution.
This change brings vision capabilities into real-world industrial plants!
Change introduced by @reedajohns
💪 Improved
Documentation improvements
@yeldarby transforms Inference docs with streamlined navigation, styling, and instant rendering!
- Refresh README
- Update Docs Styling & Nav
- Add Side Nav to Blocks and Kinds Gallery Page
- Add Instant Rendering for Docs
- Docs: Update Links
- Update Landing Page
More contributions enhancing Inference documentation:
- better version handling in generated block pages by @hansent in #922
- Update README.md by @ThatOrJohn in #921
Improvements to CI by @alexnorell
Other changes
- Add env-injectable headers to RF API requests by @PawelPeczek-Roboflow in #932
- Pass roboflow workflow ID as usage_workflow_id if available by @grzegorz-roboflow in #926
- Collect usage after execution of decorated methods by @grzegorz-roboflow in #931
- Improved the SizeMeasurementBlock Docs by @chandlersupple in #916
New Contributors
- @AHB102 made their first contribution in #866
- @ThatOrJohn made their first contribution in #921
Full Changelog: v0.32.0...v0.33.0