SAM 2 vs SAM 2.1: what changed, what did not, and the upgrade call
SAM 2.1 is SAM 2 retrained, not a new model. The four size tiers keep their parameter counts and their speed. Video scores move: up to 3.5 J&F points on SA-V test, at the one published protocol. The API surface does not change, and the license stays Apache 2.0. The upgrade is new checkpoint files plus four config lines, not a rewrite. This page carries the delta table, the upgrade mechanics, and the version decision, with every source read on 28 October 2026.
Last verified: 2026-10-28
The version map in four facts
The two releases sit nine weeks apart. Meta shipped SAM 2 on July 29, 2024. The improved SAM 2.1 checkpoints followed on September 29, 2024. Both dates come from the model zoo tables in the repository. The 2.1 news rode Meta's FAIR research roundup in October 2024 (Meta FAIR; first archive capture October 22, 2024). The rest of this page unpacks those two dates.
| Fact | SAM 2 | SAM 2.1 |
|---|---|---|
| Checkpoints shipped | July 29, 2024 | September 29, 2024 |
| Download folder | segment_anything_2/072824 | segment_anything_2/092824 |
| License | Apache 2.0 | Apache 2.0 |
| Where today | repo, Hugging Face | repo, Hugging Face, the repo's download script |
One row does quiet work. The repo's checkpoint download script now fetches only the four SAM 2.1 files; its SAM 2 block sits commented out. The publisher's own default is 2.1. Uncomment that block and the 2.0 files come back.
The delta table, one protocol for both versions
Every number below comes from one source: the two model zoo tables in the repo README, read 28 October 2026. The protocol columns match across both versions. Speed basis: one A100, torch 2.5.1, CUDA 12.4, as printed under the tables. J&F is the standard quality score for video segmentation. Higher is better.
| Tier | Params, both versions | FPS, SAM 2 | FPS, SAM 2.1 | SA-V test J&F, SAM 2 | SA-V test J&F, SAM 2.1 | MOSE val J&F, SAM 2 | MOSE val J&F, SAM 2.1 | LVOS v2 J&F, SAM 2 | LVOS v2 J&F, SAM 2.1 |
|---|---|---|---|---|---|---|---|---|---|
| tiny | 38.9 M | 91.5 | 91.2 | 75.0 | 76.5 | 70.9 | 71.8 | 75.3 | 77.3 |
| small | 46 M | 85.6 | 84.8 | 74.9 | 76.6 | 71.5 | 73.5 | 76.4 | 78.3 |
| base-plus | 80.8 M | 64.8 | 64.1 | 74.7 | 78.2 | 72.8 | 73.7 | 75.8 | 78.2 |
| large | 224.4 M | 39.7 | 39.5 | 76.0 | 79.5 | 74.6 | 74.6 | 79.8 | 80.6 |
Three readings, each checkable cell by cell.
The parameter counts do not move. All four tiers print the same size in both versions, from 38.9 M to 224.4 M. Same design, same tiers, same memory class.
The speed does not move either. The FPS gaps run 0.2 to 0.8 frames per second, with 2.1 a touch slower in every tier, on the same card and stack. SAM 2.1 is not a speed release.
The quality moves, and the middle tiers gain most. On SA-V test, base-plus and large each gain 3.5 points, tiny gains 1.5, small gains 1.7. On LVOS v2 the gains run 0.8 to 2.4. MOSE val holds the one flat cell on this page: the large tier scores 74.6 in both versions. A published zero-delta. That cell matters. MOSE is the complex-scenes video benchmark, per its own home page. If your work matches its shape, the large-tier upgrade buys nothing on that benchmark.
One honest gap, carried as a dash, not a guess: no same-protocol image-side delta exists in any published table. The zoo tables are video benchmarks. The paper's image-side numbers cannot fill the cell, for a reason that needs its own paragraph below.
What Meta changed: three training moves, four config lines
The official change statement is one sentence pair in the October 2024 post. Meta calls SAM 2.1 "an updated checkpoint with stronger performance". Then it names the moves: "additional data augmentation techniques to simulate the presence of visually similar objects and small objects where SAM 2 previously struggled". Plus "improved SAM 2's occlusion handling capability by training the model on longer sequences of frames and making some tweaks to positional encoding of spatial and object pointer memory" (Meta FAIR).
That is the whole training story. Retraining with targeted augmentation. Longer training sequences for occlusion. Two small encoding tweaks. Now the part no explainer page carries: the exact code delta. The config files pin it. Diff any tier's 2.0 config against its 2.1 config. This session did that for all four tiers on 28 October 2026. The entire difference is four lines:
| Config line | SAM 2 | SAM 2.1 | What it is |
|---|---|---|---|
| no_obj_embed_spatial | absent | true | a learned embedding for frames where the object is absent |
| add_tpos_enc_to_obj_ptrs | false | true | time encoding added to the object pointer tokens |
| proj_tpos_enc_in_obj_ptrs | absent | true | a projection applied to that encoding |
| use_signed_tpos_enc_to_obj_ptrs | absent | true | the encoding tells before from after the current frame |
The four lines are the same in all four tiers. They are the blog's "tweaks to positional encoding of spatial and object pointer memory", in machine form. The first line adds a part: a learned parameter, built only when the config sets the flag. The other three change how the model encodes time on the object pointers that carry identity across frames.
The new parts surface in the wild, in one error thread worth quoting. A developer loading the 2.1 large checkpoint the day after release hit this:
RuntimeError: Error(s) in loading state_dict for SAM2Base:
Unexpected key(s) in state_dict: "no_obj_embed_spatial", "obj_ptr_tpos_proj.weight", "obj_ptr_tpos_proj.bias".
That is issue 337, opened September 30, 2024. Meta's maintainer reply names the cause: the 2.1 checkpoints "require using the latest code in this repository, which includes a few updated module components". The unexpected keys are the new embedding and the new pointer projection. Both appear in today's model source. The thread's fix was plain. The installed package had kept the old config files. The user copied in the 2.1 config. Weights, code, and config move together, or nothing loads.
What did not change
The API surface is the same objects under the same names. Both versions run through build_sam2, SAM2ImagePredictor, SAM2VideoPredictor, and SAM2AutomaticMaskGenerator. The repo's README example loads a 2.1 checkpoint through the same builder call either config tree takes. One repo serves both config trees, configs/sam2/ and configs/sam2.1/, and today's code loads both checkpoint families. Hugging Face hosts both card families. The base-plus pair differs only in the model id strings. The large pair adds one wording line. The 2.1 card says "for more details", the 2.0 card "for details". Both pairs were re-diffed at fix time, 28 October 2026 (model card). The transformers library runs both through one pipeline, mask-generation, with no version fork in the interface.
The internals you meet in production did not change either. Each has its own page in this set. The seven-frame memory bank that bounds the model's own video memory is the same design (the memory writeup owns that story). The automatic mask generation sweep, its 1,024 stock prompts, and every knob are the same (the AMG page owns the sweep). The mask generator's single-predictor design and its concurrency limits are unchanged (the thread safety page owns that one).
One code-level change did land after both releases, and it is not a version change. In December 2024 the repo reworked the video predictor class. Each tracked object is now inferred on its own. You can add new objects after tracking starts. The old class moved to a legacy file. The release notes state the benchmark results "should remain the same" (release notes). The rework applies to both checkpoint families. It also moved the minimum PyTorch version to 2.5.1. Compare your numbers against someone else's. The repo code date matters as much as the checkpoint version.
The upgrade mechanics
The upgrade is three moves, all file-level.
First, update the code. Pull the latest repo and reinstall the package. That is the repo's own instruction, in its release notes: uninstall the old package, pull, reinstall. The 2.1 checkpoints will not load on code from before September 30, 2024. The error is the state-dict string quoted above.
Second, pair the checkpoint with its config. The file names carry the version. sam2.1_hiera_large.pt pairs with configs/sam2.1/sam2.1_hiera_l.yaml. The 2.0 pair is sam2_hiera_large.pt with configs/sam2/sam2_hiera_l.yaml. A mismatched pair fails at build time, not at mask time. The config-mismatch error family has its own walkthrough on the AMG page.
Third, take the checkpoints from the right folder. The 2.1 files live under 092824 in the publisher's public file store. The 2.0 files live under 072824. Both sets stay downloadable today. Nothing about the 2.0 release was withdrawn.
For fine-tuning, the developer suite that shipped with 2.1 includes the training code, and it targets the 2.1 configs. The repo's own MOSE recipe runs sam2.1_hiera_b+_MOSE_finetune.yaml and reports an expected MOSE J&F of 79.4 after fine-tuning the base-plus tier, on the recipe's sample validation list (training README). That is a different basis from the zoo table's MOSE val column. The two numbers never sit in one comparison.
The upgrade call
| Your situation | Call | Why |
|---|---|---|
| Starting a new project | 2.1 | the publisher's default; the download script fetches 2.1 only |
| Video with occlusions or lookalike objects | 2.1 | the retraining targeted exactly these failure modes |
| Image-only prompted work | either | no published image-side delta separates them; the API is the same |
| Comparing against published numbers | check the paper date | the revised paper's numbers are all 2.1, whatever the table says |
| A stack pinned to old repo code | 2.0, for now | 2.1 checkpoints demand the updated code and configs |
| Fine-tuning on your data | 2.1 | the released training code and recipes target the 2.1 configs |
The paper row needs its own paragraph, because it is the quiet trap in this version question. The SAM 2 paper was revised on October 28, 2024, and the revision carries this footnote: "All the results presented in this paper are based on a new version of SAM 2, which we will refer to as SAM 2 throughout for brevity" (SAM 2 paper, revised copy). The footnote's cut parenthetical names the repo and the SAM 2.1 label. Every table in the revised paper prints 2.1 numbers under the name SAM 2. Quote the paper's tables as your SAM 2 baseline, and you compare 2.1 against 2.1.
The pre-revision paper and the repo zoo tables are the two places the original 2.0 numbers live. The paper's speed numbers also sit on a different basis: A100 with PyTorch 2.3.1, against the zoo table's torch 2.5.1. FPS quotes need their source named.
One third-party study checks the delta on a real task. An aerial imagery study of solar panel work compared SAM, SAM 2, and SAM 2.1 across resolutions and lighting. Its abstract reads: "SAM 2.1 demonstrated notable improvements, particularly in sub-optimal lighting and low resolution conditions". The same authors report improved inference time for 2.1 on their hardware (the study). That is a third-party finding on their data, not a general benchmark. It matches the direction of the official tables.
License, availability, and what came after
Both releases sit under one license. The repo's license section: "The SAM 2 model checkpoints, SAM 2 demo code (front-end and back-end), and SAM 2 training code are licensed under Apache 2.0". Commercial use is permitted. No separate weights license file exists in the repository; the checkpoints ride the same Apache 2.0 grant. That absence was checked directly on 28 October 2026.
Where the versions live: the GitHub repo for code, configs, and both checkpoint sets. Hugging Face for both card families. And since February 2025, Amazon SageMaker JumpStart hosts SAM 2.1 as a provisioned model. The instances run inside your own cloud account, per the AWS post. That is a rent-the-hardware shape, priced per instance, not per call.
What came after: Meta's hosted model API now serves the SAM 3.1 generation, with noun-phrase prompts, "a box and a pixel mask for every match", not the 2.x checkpoints (Meta Model API cookbook, read 28 October 2026). As of this page's date, the 2.1 checkpoints remain the current generation you can download, self-host, and fine-tune under Apache 2.0. The 2-versus-2.1 question is a question about the open-weights line. Both of its answers stay open.
The hosted lane
The base-plus tier of this family runs as a hosted lane on this platform's vision route. The model id is sam2.1-base. The lane runs the automatic mode by design: whole image in, every mask out. It has served since 6 October 2026 and sits on the public list as of 28 October 2026. The large tier is not on the public list, and no date rides with it. The lane's mechanics, its 400 behavior on prompted fields, and its record format belong to the AMG page. The model sheet is sam2.1-base.
A first call, whole thing:
curl -sS $IRONSTRATUM_BASE_URL/v1/vision \
-H "Authorization: Bearer $IRONSTRATUM_API_KEY" \
-F "model=sam2.1-base" \
-F "file=@frame.jpg" \
-F "response_format=json"
import os
import requests
resp = requests.post(
os.environ["IRONSTRATUM_BASE_URL"] + "/v1/vision",
headers={"Authorization": "Bearer " + os.environ["IRONSTRATUM_API_KEY"]},
data={"model": "sam2.1-base", "response_format": "json"},
files=[("file", open("frame.jpg", "rb"))],
timeout=30,
)
resp.raise_for_status()
answer = resp.json()
print(len(answer["annotations"]), "mask objects, billed", answer["usage"]["images"], "images")
The bill counts images, not masks and not prompts. Either checkpoint generation bills the same way: one image in, one image billed, and a refused request bills nothing. Rates render on the pricing page, never typed by hand on pages like this one:
| Model | Context | $/1M in | $/1M out | $/1M cached |
|---|---|---|---|---|
| Qwen | ||||
| qwen3.8-27b | 262K | $0.35 | $2.55 | $0.105 |
| qwen3.6-35b | 131K | $0.11 | $0.8 | $0.044 |
| Minimax | ||||
| minimax-m2.7 | 197K | $0.24 | $0.95 | $0.072 |
| Muse | ||||
| muse-glimmer-30b | 131K | $0.28 | $1.2 | $0.084 |
| Ornith | ||||
| ornith-1.5-35b | 100K | $0.35 | $2.55 | $0.105 |
| ornith-1.5-9b | 100K | $0.1 | $0.3 | $0.03 |
| Glm | ||||
| glm-5.3-flash | 1049K | $0.11 | $0.35 | $0.033 |
| Deepseek | ||||
| deepseek-v4-flash-0731 | 1311K | $0.15 | $0.42 | $0.045 |
| Gemma | ||||
| gemma-4-31b-it | 262K | $0.22 | $0.49 | $0.066 |
| Deepseek | ||||
| deepseek-v4-pro | 1000K | $1.13 | $2.21 | $0.339 |
| deepseek-v4.1-flash | 1000K | $0.19 | $0.71 | $0.06 |
| deepseek-v4.1-flash-1017 | 1049K | $0.16 | $0.65 | $0.003 |
| Glm | ||||
| glm-5.3 | 1000K | $1.32 | $4.25 | $0.4 |
| Flux | ||||
| flux-1-schnell | — | $0.003/image | ||
| flux-pro-1.1 | — | $0.04/image | ||
| Chatterbox | ||||
| chatterbox-tts | — | $25/1M chars | ||
| Kokoro | ||||
| kokoro-tts | — | $15/1M chars | ||
| pocket-tts | — | $16/1M chars | ||
| Audio | ||||
| audio8-tts | — | $8/1M chars | ||
| Hayamimi | ||||
| hayamimi-stt | — | $0.6/audio-hr | ||
| Bge | ||||
| bge-m3 | — | $0.05/1M tokens | ||
| bge-reranker-v2-m3 | — | $1.5/1k searches | ||
| Ocr | ||||
| ocr-print | — | $1/1k pages | ||
| ocr-archival | — | $3/1k pages | ||
| Whisper | ||||
| whisper | — | $0.12/audio-hr | ||
| Iab | ||||
| iab-2x | — | $0.7/1k pages | ||
| iab-3x | — | $0.7/1k pages | ||
| Gliner | ||||
| gliner-extract | — | $0.9/1k searches | ||
| Jev | ||||
| jev-fast | 1K | $0.03 | $0 | — |
| jev-causal | 1K | $0.03 | $0 | — |
| jev-batch | 1K | $0.03 | $0 | — |
| Wemm | ||||
| wemm-embed | — | $0.09/1M tokens | ||
| Molmo | ||||
| molmo2-er | 8K | $1 | $5 | $0.5 |
| Cosmos | ||||
| cosmos-reason2-2b | 4K | $0.1 | $0.4 | $0.05 |
| Sam | ||||
| sam2.1-base | — | $0.02/image | ||
| Da | ||||
| da3-small | — | $0.05/image | ||
| Smolvla | ||||
| smolvla | — | $0.001/call | ||
| Openvla | ||||
| openvla-oft | — | $0.006/call | ||
| Act | ||||
| act | — | $0.001/call | ||
When a hosted call fits your loop, open the console, create a key, and send one frame. For the wider choice between families, the YOLO comparison covers detection against this model, and the hosted alternatives page surveys who else serves this family.
Frequently asked questions
Is SAM 2.1 a new model?
No. It is the same design, retrained, shipped as four new checkpoint files. The parameter counts are the same per tier, from 38.9 M to 224.4 M. The API classes are unchanged. The machine-level delta is four config lines and two small new parts inside the model.
Is SAM 2.1 faster than SAM 2?
No. On the repo's own A100 table, the 2.1 tiers run 0.2 to 0.8 frames per second slower than the 2.0 files. The basis is printed under the table: torch 2.5.1, CUDA 12.4. One third-party study measured better inference time for 2.1 on its own hardware. Treat that as a task-specific report, not a general speed claim.
Can I load SAM 2.1 checkpoints with SAM 2 code?
No. The 2.1 files carry new state-dict keys, no_obj_embed_spatial and obj_ptr_tpos_proj, and older code refuses them at load. The error string is quoted on this page. Update the repo code and the config files together, and the checkpoint loads.
Which version should I use for image-only work?
Either. No published table separates the two versions on image-only work at one protocol. The zoo tables are video benchmarks. The revised paper's image numbers are all 2.1 under the SAM 2 name. The image predictor API is the same. Most new image work should still start on 2.1, because it is the maintained default.
What is the latest Segment Anything model?
For hosted APIs, Meta's own model API serves SAM 3.1 with noun-phrase prompts, read 28 October 2026. For open weights under Apache 2.0, SAM 2.1 is the current checkpoint generation as of this page's date.
What license are the SAM 2 and SAM 2.1 checkpoints under?
Apache 2.0, for both versions: checkpoints, demo code, and training code. Commercial use is permitted, and no separate weights license exists in the repository.
The version question has a short answer. Same model, better weights, four config lines of new machinery, one flat benchmark cell worth knowing. Take the upgrade when you can update code and configs together. Measure on your own data either way. Let the pricing page carry the cost math for the hosted lane. A key starts at signup.
Last verified: 2026-10-28