Repository navigation
v1.8.2
🚀 Added
🩻 Anomaly detection gets its own blocks
roboflow_core/anomaly_detection_model@v1 runs a PatchCore or FoundAD model and returns the raw anomaly_score, the threshold in effect, the is_anomalous verdict and the float32 anomaly_map that the classification block used to drop. roboflow_core/anomaly_heatmap_visualization@v1 paints that map over the image with the same ramp the Roboflow app draws, or any OpenCV colour map. Heads-up on the contract: the request confidence now decides the verdict, sigmoid((score - threshold) / scale) >= confidence, so you tune the operating point like for any other model; omit it and you get the model-eval recommendation, and the response gains anomaly_scale so you can re-decide yourself. PatchCore also stops allocating a 2 GiB distance matrix per request: 16 concurrent requests on an L4 went from 16× HTTP 500 to 16× 200 (@probicheaux, #3201).
🏭 Read the line before you run the model
The OPC UA Reader enterprise block (roboflow_enterprise/opc_reader@v1) returns the latest value of one OPC UA variable on every frame, so gating a video workflow on "is the line running" no longer needs a custom Python block. It subscribes instead of polling: the first run connects, every later run reads from memory, so the per-frame cost is the same at 60 fps as at 1 fps and a dead server never stalls the pipeline. During an outage runs repeat the last value with error_status set while the block reconnects in the background. Not available on the hosted platform (@rvirani1, #3176).
🧱 A new serving stack lands in the repo (preview)
@grzegorz-roboflow is cooking foundations for new server - change is here: #2251) - stay tuned for further update.
🧵 Detections Stitch stops round-tripping masks
With overlap_filtering_strategy: none every mask survives, so encoding each crop as a compact mask and decoding it again was pure overhead. Masks are now copied straight into one dense output array. Median block latency: 300 masks from twelve 640×640 crops 18.7 ms → 11.2 ms; 48 fragmented masks 14.1 ms → 0.7 ms (@rafel-roboflow, #3103).
🔧 Fixed
pip install inference-cliworks again — supervision 0.31 removedByteTrack, so a fresh CLI install failed on import; supervision is now capped<0.31.0in every package. 1.8.1 shipped this fix to PyPI without a GitHub release (@YashwinReddy29, #3217; @PawelPeczek-Roboflow, #3224).- Dataset upload v1 compiles again — its
imagesfield advertisedimageas the schema name, so compilation raisedBlockInterfaceErrorand/describe_interfacecrashed (@PawelPeczek-Roboflow, #3210). - SAM 3 remote mode returns the masks you asked for — the proxy routes dropped
formatandnms_iou_threshold, sosam3@v3asked for RLE, got polygons and silently returned zero detections.binarynow gets a 501 instead of polygon JSON it did not ask for (@iurisilvio, #3243). - YOLO-World, Grounding DINO and OWLv2 reach model monitoring — pingback results carried
model_id: null, so Roboflow rejected them and failed the whole batch with them: 7,109 results from 113 devices in one month. Results now name the model that ran and carry a numeric requested confidence (@iurisilvio, #3205). - Buffer block keeps its history straight — later frames mutated earlier frames' outputs, corrupting histories and batch results downstream (@rafel-roboflow, #3242).
- Property extraction on tracked and empty frames —
tracker_idis read from its native field, empty frames return[]instead of raising, and a missing property names the upstream block that should supply it (@rafel-roboflow, #3106). - SDK directory loader keeps path casing —
Images/FRAME.JPGwas lowercased into a path that does not exist on Linux, and files differing only by case collapsed into one (@Ricardo-M-L, #3209). - CLI says what to do when nothing listens on 9001 —
inference infernow explains it needs a server and how to start one or point--hostat the hosted API; retries and async timeouts keep the right error class (@tsayin4, #3129; @dkosowski87, #3258). - Windows installer imports torchvision — native operators were missing from the bundle and the GPU build could keep CPU wheels; each flavour now installs a verified torch/torchvision pair, CUDA 12.6 for GPU (@ColePBryan, #3214).
⚙️ Execution Engine v1.17.0
Bumped from 1.16.1. Workflow syntax errors no longer echo the failing step's literal field values, so a password or a URL with credentials stays out of the HTTP error and the server log. ExecutionEngine.close() releases what blocks hold between runs (OPC UA Reader, MQTT Reader and Kafka Consumer connections): streamvision calls it when a pipeline is joined and the HTTP route queues it after the sink tasks. Blocks initialised before a failing block are closed instead of leaking threads. No workflow changes needed. Details in workflows/CHANGELOG.md (@rvirani1, #3176; @dkosowski87, #3264).
🚧 Maintenance
- Versions —
inference1.8.2,inference-models0.39.5,roboflow-workflows0.2.13,streamvision0.1.3(@MTaraszewski, #3261, #3262, #3265). - inference-models 0.39.5 extras —
anomaly_scalein anomaly metadata, TensorRT models fall back totensorrt_lean, SAM3 visual prompts can return RLE, an opt-in vLLM proxy backend for Qwen3 VLMs, and boolean env vars accept1/0,yes/noandon/off. Full list ininference_models/docs/changelog.md. - aiohttp
~=3.14.4— picks up the fixes for GHSA-2g87-pp6c-29x5 and GHSA-5wr8-gcqf-gqf3 across workflows, streamvision, SDK and CLI (@grzegorz-roboflow, #3227). - CI builds each image once — every push to
mainsaves the CPU and GPU images in Depot Registry and bothUSE_INFERENCE_MODELSlegs pull the same digest; hosted E2E runs as four parallel shards (@MTaraszewski, #3211, #3228). - T4 runner stops re-downloading weights — model caches persist between stages and runs, and
/model/clearnow honoursDISK_CACHE_CLEANUP(@MTaraszewski, #3232); SAM3 integration tests clear weights once per module instead of re-pulling 3.4 GB per test (@grzegorz-roboflow, #3229); uv caches reset weekly after growing to 19 GB (@grzegorz-roboflow, #3225). - Test and review hygiene — active-learning quota test pinned to one clock minute (@dkosowski87, #3256); batched tensor-native classification on the new server keeps one
images_metadataentry per image (@grzegorz-roboflow, #3226); a legacy-to-new-stack parity review skill (@grzegorz-roboflow, #3255); CODEOWNERS update (@dkosowski87, #3257). - Docs —
max_fpsdocstrings now describe what the code does: streams drop frames, video files process every frame unlessENABLE_FRAME_DROP_ON_VIDEO_FILE_RATE_LIMITING=True(@ssrajadh, #3163).
⚠️ Windows installer notice
The GPU installer attached to this release uses PyTorch CUDA 12.6 wheels. Blackwell GPUs, including GeForce RTX 50-series, are not supported by it; use the CPU installer on those machines. Docker images have their own compatibility matrix.
🏅 New Contributors
- @YashwinReddy29 made their first contribution in #3217
- @ssrajadh made their first contribution in #3163
- @Ricardo-M-L made their first contribution in #3209
- @tsayin4 made their first contribution in #3129
Full Changelog: v1.8.0...v1.8.2