Releases: roboflow/inference
v0.36.0
🚀 Added
Support for batch processing
- Feature/batch processing cli by @PawelPeczek-Roboflow in #971
💪 Improved
- Add new UQL extension - picking up bounding boxes that are inside specific class by @PawelPeczek-Roboflow in #981
- 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
- Added "Auto" Mode to the Stitch OCR Detections Block by @chandlersupple in #990
- 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
v0.32.0
🚀 Added
👀 Gaze detection in Workflows
@joaomarcoscrs (as part of hist first contribution 🏅) introduced Gaze detection model into Workflows.
Don't know what Gaze Detection is?
Gaze detection is a method to determine where a person is looking by analyzing their eye movements and gaze direction. It typically uses cameras or sensors to track eye position and orientation, identifying the point of focus in real time.
It is commonly used in areas like:
- Human-Computer Interaction: Controlling devices with eye movements.
- Behavioral Analysis: Understanding attention and interest.
- Marketing Research: Measuring what catches a person's attention.
Now - you can apply Workflows in such use-cases. Check out Gaze Detection block 📖 documentation to find more information.
Note
The block is currently not supported on Roboflow Hosted Platform. Check out how to send requests to localhost inference
server
🏋️♂️ New experimental Workflows blocks enabling new capabilities
@yeldarby prepared whole series of blocks to open-up new capabilities for Workflows, including:
- Workflows Buffer Block in #894
- Workflows Grid Visualization Block in #895
- Workflow Cache Get/Set Blocks in #893
- Workflows Outlier Detection Block in #896
💪 Improved
Florence 2
runs now up to 3x faster
🧙♂️ @isaacrob-roboflow did some magic 🪄 and now, all of the sudden Florence2
models deployed in inference
could run up to 3x faster 🤯 ❗
See details in #885
🔧 Fixed
Security vulnerability in landing page
We've fixed security issue in inference
server landing page: #890
Issue description
If a Next.js application is performing authorization in middleware based on pathname, it was possible for this authorization to be bypassed.
This issue was patched in Next.js 14.2.15
and later.
Caution
We advise all users of older versions of inference
server to migrate to version 0.32.0
Other fixes
- Add fix for the problem with inference-cli workflows predictions saving by @PawelPeczek-Roboflow in #891
- Improvements in blocks descriptions' by @EmilyGavrilenko (#898) and @casmwenger in (#897)
- Fix usage collector fps by @grzegorz-roboflow in #903
🚧 What's Changed
- Add test to detect blocks with missing init.py by @grzegorz-roboflow in #883
- Cache CLIP Text Embeddings in Workflow Block by @yeldarby in #892
- Allow using video metadata for rate limiter on recorded video by @yeldarby in #887
- Serialized owlv2 model by @probicheaux in #889
- Skip additional test by @PawelPeczek-Roboflow in #902
🏅 New Contributors
- @joaomarcoscrs made their first contribution in #888
Full Changelog: v0.31.1...v0.32.0
v0.31.1
🔧 Fixed
- Fix inference 0.30.0 release by @PawelPeczek-Roboflow in #882 - just we forgot
__init__.py
Full Changelog: v0.31.0...v0.31.1
v0.31.0
🚀 Added
📏 Easily create embeddings and compare them in Workflows
Thanks to @yeldarby, we have Clip Embedding and Cosine Similarity Workflows blocks. Just take a look what would now be possible.
💡 Application ideas
- Visual Search: Match text queries (e.g., "red shoes") to the most relevant images without training a custom model.
- Image Deduplication: Identify similar or duplicate images by calculating embeddings and measuring cosine similarity.
- Zero-Shot Classification: Classify images into categories by comparing their embeddings to pre-defined text labels (e.g., "cat," "dog").
- Outliers detection: Check which images do not match to general trend
✨ gemini-2.0-flash
🤝 Workflows
Check out model card and start using new model, simply pointing new model type in Google Gemini Workflow block 😄 All thanks to @EmilyGavrilenko
🔥 Recent supervision
versions are now supported
For a long time we had issue with not supporting up-to-date supervision
releases. This is no longer the case thanks to @LinasKo and his contribution #881 🙏
🐕🦺 React on changes in Workflows
We have new Delta Filter block that optimizes workflows by triggering downstream steps only when input values change, reducing redundant processing.
📊 Key Features:
- Value Changes Detection: Triggers actions only on value changes.
- Flexibility: Hooks up to changes in numbers, strings, and more.
- Per-Video Caching: Tracks changes using - changes for each video stream or batch element would be traced separately
💡 Use Case:
- Detect changes (e.g., people count) in video analysis and trigger downstream actions efficiently.
🔧 Fixed
confidence
threshold was not applied formulti-label
classification models. @grzegorz-roboflow fixed the problem in #873- Active Learning Data collection finally works for
multi-label
classification models - see @grzegorz-roboflow work in #874 - Fixed
model_id
bug with InferenceAggregator block by @robiscoding in #876 - Security issue:
nanoid
from 3.3.7 to 3.3.8 - see #878 - Fix measurement logic for segmentations in measurement block by @NickHerrig in #872
🚧 Changed
- Improve is_mergeable workflow speed by @grzegorz-roboflow in #846
- Additional DetectionsSelection Operations by @EmilyGavrilenko in #879
- Add Block Copy updates and Spellcheck by @casmwenger in #856
- Updated the OPC UA Writer Block Descriptions and Examples by @chandlersupple in #868
New Contributors
- @casmwenger made their first contribution in #856
Full Changelog: v0.30.0...v0.31.0
v0.30.0
🚀 Added
✨ Paligemma2 support!
Enhanced model support: We’re excited to introduce Paligemma2 integration, a next-generation model designed for more flexible and efficient inference. This upgrade facilitates smoother handling of multi-modal inputs like images and captions, offering better versatility in machine learning applications. Check out the implementation details and examples in this script to see how to get started.
Change added by @probicheaux in #864
Remaining changes
- Unpin
httpx
by @PawelPeczek-Roboflow in #861 - Fix docs builder CI by @grzegorz-roboflow in #863
- Add poison pill to connectionstatechange in webrtc by @grzegorz-roboflow in #862
- Bump version of rich by @PawelPeczek-Roboflow in #867
- Kapa: remove duplicate initialization by @LinasKo in #869
- Add model id output param by @robiscoding in #857
Full Changelog: v0.29.2...v0.30.0
v0.29.2
ultralytics
security issue fixed
Caution
Ultralytics maintainers notified the community, that code in the ultralytics
wheel 8.3.41
is not what's in GitHub and appears to invoke mining. Users of ultralytics who install 8.3.41 will unknowingly execute an xmrig miner.
Please see this issue for more details
Remaining fixes
- python 3.12 support by @hansent in #841
- Pin ultralytics version by @bigbitbus in #858
Full Changelog: v0.29.1...v0.29.2
v0.29.1
🛠️ Fixed
python-multipart
security issue fixed
Caution
We are removing the following vulnerability detected recently in python-multipart
library.
Issue summary
When parsing form data, python-multipart skips line breaks (CR \r
or LF \n
) in front of the first boundary and any tailing bytes after the last boundary. This happens one byte at a time and emits a log event each time, which may cause excessive logging for certain inputs.
An attacker could abuse this by sending a malicious request with lots of data before the first or after the last boundary, causing high CPU load and stalling the processing thread for a significant amount of time. In case of ASGI application, this could stall the event loop and prevent other requests from being processed, resulting in a denial of service (DoS).
Impact
Applications that use python-multipart to parse form data (or use frameworks that do so) are affected.
Next steps
We advise all inference
clients to migrate to version 0.29.1
, especially when inference
docker image is in use. Clients using
older versions of Python package may also upgrade the vulnerable dependency in their environment:
pip install "python-multipart==0.0.19"
Details of the change: #855
Remaining fixes
- Fix problem with docs rendering by @PawelPeczek-Roboflow in #854
- Remove piexif dependency by @iurisilvio in #851
Full Changelog: v0.29.0...v0.29.1