# Deploy computer vision models at scale

Serve detection, segmentation, and classification models behind managed API endpoints. Send images as URLs, base64, or file payloads — Beam scales the GPUs underneath.

frame 0348 · 30fpsperson 0.44vehicle 0.24pallet 0.6

## Serve any computer vision model

Image ingestion, warm weights, burst scaling, and batch backfills — handled by the platform, not your team.

### Send images any way  
Endpoints accept URLs, base64 payloads, or file uploads — whatever fits your client.  
Explore docs

### Warm weights per container  
on_start loads the model once per container so requests skip straight to inference.  
Explore docs

### Scale with request volume  
Autoscaling adds containers as traffic grows and drops to zero when it stops — no capacity planning.  
Explore docs

### Batch over image archives  
Backfill millions of images by fanning the same function out across containers with .map().  
Explore docs

### CPU or GPU per model  
Run small detectors on fractional CPUs and reserve GPUs for heavy segmentation — priced per second either way.  
Explore docs

### Per-second billing  
Pay for compute while frames are being processed — never for idle capacity between bursts.  
Explore docs

> “We would not have been able to get our API running and win our first enterprise contract without Beam.”  
> Daniel Heinen  
> Co-founder, GeoSpy  
[Read the case study](https://www.beam.cloud/customers/geospy-case-study)

3Minference requests in one month

>99.9%production uptime

100sof requests per minute at peak

## Run computer vision models at scale

01

### Wrap your model  
YOLO, DETR, SAM, or a custom classifier — load it in on_start and declare the hardware inline.

02

### Deploy the endpoint  
beam deploy returns an authenticated HTTPS URL with autoscaling already wired up.

03

### POST images, get predictions  
Send a URL or file payload and get structured detections back as JSON.

terminal
```
$ beam deploy app.py:detect
=> Deployed 🎉
=> https://object-detection-abc123.app.beam.cloud

$ curl -X POST https://object-detection-abc123.app.beam.cloud  
    -H 'Authorization: Bearer YOUR_TOKEN'  
    -d '{"image_url": "https://example.com/warehouse.jpg"}'

{"detections": [
  {"label": "forklift", "confidence": 0.94, "box": [102, 44, 380, 291]}
]}
```

## Frequently asked questions

### How do I send images to the endpoint?+
Three ways: pass a URL for the container to fetch, base64-encode the image into the JSON body, or send the file directly using Beam's file payload support.

### Which vision models work?+
Anything that runs in Python — YOLO and ultralytics models, DETR, SAM, CLIP, or vision-language models via transformers.

### Can I process video?+
Yes. For long videos, deploy the job as a task queue: split into frames or segments inside the container, process on GPU, and get a webhook when results are ready.

### What about latency-sensitive applications?+
Use keep_warm_seconds to hold containers hot, and pick a GPU close to your model's size. Cold boots take seconds and you're never billed for them.

### Do small models need a GPU at all?+
Often not. Beam lets you request fractional CPUs for lightweight models and attach a GPU only where it pays for itself.

### How do I run several vision models side by side?+
Deploy each model as its own endpoint with its own dependencies, hardware, and scaling settings — Beam scales them independently. Deployments are versioned, so rolling back a misbehaving model takes one click. GeoSpy manages multiple production vision models this way.
