Add bf16 precision option for ViTMatte (--precision, default fp32)
bf16 halves the matting model's activation memory -- its full-resolution attention is the pipeline's memory peak -- with visually identical alpha (measured: 0 px alpha deviation > 0.25 on samples; cross-check veto behaviour unchanged, region IoU 0.984). Guarded by a hardware check so it never lands on a slow emulation path: CUDA requires torch.cuda.is_bf16_supported(); CPU requires the same oneDNN native-bf16 gate PyTorch uses for matmul routing (AVX512-BF16/ AMX). Without support it warns and falls back to fp32 -- on a Zen2 EPYC the fallback kernels measured 17-370x slower than fp32, so silent bf16 there would be a performance landmine. Segmentation stays fp32: torchvision deform_conv2d (used by BiRefNet) has no bf16 CPU kernel, and the segmenter is not the memory peak. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -89,9 +89,11 @@ D:\MiniConda\envs\lightML\python.exe -m bgfilter.cli `
|
||||
No `--config` is needed — the built-in defaults are identical to
|
||||
`configs/default.yaml`. Pass `--config configs\default.yaml` only after you edit that
|
||||
file to tune the detailed parameters. Runtime choices stay on the command line:
|
||||
`--device` (default **CPU**; use `--device cuda` for GPU), `--seg-backend` (default
|
||||
`birefnet`; `anime-seg` for anime characters), `--screen-color` (default: auto-detect
|
||||
the flat background), and `--trimap-mode`.
|
||||
`--device` (default **CPU**; use `--device cuda` for GPU), `--precision` (default
|
||||
`fp32`; `bf16` halves the matting model's activation memory with visually identical
|
||||
alpha — needs bf16-capable hardware, falls back to fp32 elsewhere), `--seg-backend`
|
||||
(default `birefnet`; `anime-seg` for anime characters), `--screen-color` (default:
|
||||
auto-detect the flat background), and `--trimap-mode`.
|
||||
|
||||
## Batch
|
||||
|
||||
|
||||
Reference in New Issue
Block a user