Skip to content

v1.3.8

Choose a tag to compare

@PawelPeczek-Roboflow PawelPeczek-Roboflow released this 31 Jul 19:12
d576c26

πŸš€ Added

⚑ Opt-in model pre-loading for Workflows in InferencePipeline

Video processing deserves predictable startup β€” until now, every model used by a Workflow was loaded lazily on the first frame, so the pipeline connected to the stream and then stalled while weights downloaded. InferencePipeline.init_with_workflow(...) gains an opt-in parameter that pre-loads all Roboflow models declared by the workflow's blocks at pipeline init, before a single frame is processed (@PawelPeczek-Roboflow, #2737):

pipeline = InferencePipeline.init_with_workflow(
    video_reference="rtsp://...",
    workflow_specification=workflow,
    workflows_dependencies_pre_init=["roboflow_platform_model"],
    on_prediction=my_sink,
)
  • Concrete model ids (like yolov8n-640 in the spec) register in the model manager at init β€” weights are fetched upfront, first-frame latency stays flat.
  • Input-fed model ids (model_id: "$inputs.model") resolve once, on the first frame, when runtime parameters are known β€” including ids that blocks synthesize from version fields (e.g. clip/<version>).
  • Pre-loading honors the effective step execution mode β€” nothing is fetched when steps execute remotely β€” and if a size-bounded model manager evicts a pre-loaded model, you get a warning instead of a silent cold start.
  • Everything defaults to off: without the parameter, behavior is exactly as before.

The same knob is available on ExecutionEngine.init(..., dependencies_pre_init=...) for anyone embedding the Workflows Execution Engine directly. Under the hood, Workflow blocks can now declare their dependent resources (Roboflow models, Roboflow projects, third-party hosted models) through a typed, serializable contract, and the compiler can deduce the full dependency set of a compiled workflow β€” groundwork that pre-loading is the first consumer of. Execution Engine version goes to v1.14.0; see the Execution Engine changelog and the block creation docs for the block-author contract.

🏷️ Rich Label visualization + Label v2 with adaptive text sizing

image

Detection labels finally look good: the new Rich Label visualization block renders sharp, anti-aliased text using TrueType fonts instead of OpenCV's dated bitmap fonts, with a dropdown of 20 approved fonts (downloaded from pinned URLs and verified against SHA-256 checksums). Alongside it, Label v2 adds an Automatic text-sizing mode that scales label text to the image resolution, keeping labels readable from thumbnails up to 4K (@SkalskiP, #2722).

πŸ€– Gemini v4 with native object detection coordinates

image

The new google_gemini@v4 Workflow block switches to Gemini-native box_2d object detection output and enforces a JSON output schema, eliminating the malformed-response parsing failures seen in v3. Across every tested Gemini model, v4 increased mAP@50 while reducing average token usage and inference time per image; the supported model catalog is expanded and v3 behavior is preserved for existing workflows (@SkalskiP, #2734).

🌍 Uniform region & environment selection

One switch selects the region, one the environment β€” and inference, the CLI, the SDK, and inference-models all resolve their default hosts from the same registry (@imbgar-roboflow, #2701):

ROBOFLOW_REGION=eu inference ...                              # api.roboflow.eu
ROBOFLOW_REGION=eu ROBOFLOW_ENVIRONMENT=staging inference ... # api.roboflow-eu.one

The scattered per-file host ternaries are gone; inference_sdk/regions.py is the single source of truth for the region Γ— environment matrix.

πŸŽ›οΈ Execution & operations

  • RF-DETR object detection now uses the full execution plan, aligning it with the rest of the inference_models execution stack (@dkosowski87, #2731; follow-up test fixes in #2733).
  • RTSPS streams fall back to OpenCV/FFmpeg TLS when the primary path cannot negotiate the transport (@NVergunst-ROBO, #2727).
  • Structured stream error codes for RTSPS and auth failures β€” stream connection problems now surface as typed, actionable errors instead of generic failures (@NVergunst-ROBO, #2725).

πŸ”§ Fixed

  • Workflow output serialization no longer 500s on string-declared kinds β€” output kinds declared as plain strings (e.g. "string") crashed serialization with TypeError: unhashable type: 'list'; such kinds are now resolved by name and the matching serializer applied (@rafel-roboflow, #2730).
  • Profiling handles read-only filesystems β€” an OSError when dumping profiler traces on read-only deployments is caught instead of failing the run (@iamfaham, #2732).
  • SAM3 usage tracking fixed (@grzegorz-roboflow, #2720).

🚧 Maintenance


πŸ“¦ Side note: dual GPU build for Cosmos 3

There is still no released transformers version that ships the NVIDIA Cosmos 3 model code, so this release again publishes two GPU server builds:

  • roboflow/roboflow-inference-server-gpu:1.3.8 β€” the standard build, with the regular dependency stack (no Cosmos 3).

  • roboflow/roboflow-inference-server-gpu:1.3.8-cosmos3 β€” identical server, but with the custom transformers dependency set required by NVIDIA Cosmos 3 Edge:

    docker pull roboflow/roboflow-inference-server-gpu:1.3.8-cosmos3

Use the -cosmos3 tag only if you need the Cosmos 3 Edge preview self-hosted; all other images are single-build.


Full changelog: v1.3.7...v1.3.8

πŸ… New Contributors

Full Changelog: v1.3.7...v1.3.8