Project Type: Object Detection
Operating System & Browser: Windows 11 Pro & Chrome Version 141.0.7390.77
Workspace/Project ID: main-epy5a/bird-id-dipgw
Hello all,
I just started using Roboflow and am new to computer vision in general, but Iâm a software developer, so itâs embarrassing that Iâm sure this is a very simple oversight.
Iâm trying to just do object detection with a specialized model that picks up hummingbirds better than the stock object detection models do with generic âbirdâ matches.
Iâve trained a model that works, Iâve tested it in the web browser with images and it works.
Iâm trying to use a local inference server in Docker to run against. So⌠I installed Docker, made sure the desktop version had CUDA and WSL 2, per this page: GPU support | Docker Docs. The benchmarks work fine, seemingly, the GPU is available to Docker.
I have a Python 3 project running in IntelliJ using just a standard virtualenv and pip. I installed the following packages for the project:
google-cloud-videointelligence
inference
inference-sdk
inference-gpu
inference-cli
ultralytics
supervision
I started the inference server using the regular âinference server startâ and it booted up in a Docker container.
I know my Roboflow API key is working because I have a script that invokes a workflow using my model with âInferencePipeline.init_with_workflowâ and it works just fine.
However, I followed the general instructions on this page to try to run an inference pipeline on my Docker container, it looks something like this:
from inference_sdk import InferenceConfiguration, InferenceHTTPClient
MODEL_ID = "bird-id-dipgw/5"
# the following path definitely exists on my local machine.
video_path = r'C:\Users\<my username>\Videos\test video 003.mp4'
config = InferenceConfiguration(confidence_threshold=0.5, iou_threshold=0.5)
client = InferenceHTTPClient(
api_url="http://localhost:9001",
api_key=API_KEY,
)
client.configure(config)
client.select_model(MODEL_ID)
pipeline_data = client.start_inference_pipeline_with_workflow(
video_reference=video_path,
workflow_id="bird-flow-1",
workspace_name="main-epy5a",
# workflows_thread_pool_workers=16, # tried this with 4 and 16, no diff
)
pipeline_id = pipeline_data['context']['pipeline_id']
print(f"pipeline ID = {pipeline_id}")
for i in range(10): #this is temp, "while True" eventually locks up the server.
print("pipelines...")
pprint(client.list_inference_pipelines())
print("status...")
pprint(client.get_inference_pipeline_status(pipeline_id))
print("results...")
pprint(client.consume_inference_pipeline_result(pipeline_id))
This pipeline basically fails out of the gate because it gives âSourceConnectionErrorâ:
{âcontextâ: âinference_pipelineâ,
âevent_typeâ: âINFERENCE_ERRORâ,
âpayloadâ: {âerror_contextâ: âinference_threadâ,
âerror_messageâ: 'Cannot â
'connect â
'to â
'video â
'source â
'under â
'reference: â
'C:\Users\\Videos\â
'\test â
'video â
â003.mp4â,
âerror_typeâ: âSourceConnectionErrorâ},
âseverityâ: 40,
âtimestampâ: â2025-10-18T20:13:35.690396â},
So, I donât know what is ultimately SUPPOSED to happen when this HTTPs client runs.
The documentation clearly states you can reference local web streams OR files for the video_reference component.
However, I feel like thereâs a POST limit youâd run into if you select a really large video for this kind of thing, so IDK if itâs actually trying to encode and upload the video in the body, it seems like NOT when I look at the API at on my local Docker container at port 9001.
I also thought, ok well maybe you have to upload the video to the inference server running in Docker, but the API locally doesnât seem to have the same Roboflow upload API that allows uploading files.
I feel like Iâm missing something obvious, but I know they say âobject inference on videos locally is experimentalâ but I would hope that doesnât mean âdoesnât work at all.â