Views
No views yet
npm i @huggingface/transformersVitMatteForImageMatting model.1import { AutoProcessor, VitMatteForImageMatting, RawImage } from '@huggingface/transformers';
2
3// Load processor and model
4const processor = await AutoProcessor.from_pretrained('Xenova/vitmatte-base-composition-1k');
5const model = await VitMatteForImageMatting.from_pretrained('Xenova/vitmatte-base-composition-1k', { quantized: false });
6
7// Load image and trimap
8const image = await RawImage.fromURL('https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/vitmatte_image.png');
9const trimap = await RawImage.fromURL('https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/vitmatte_trimap.png');
10
11// Prepare image + trimap for the model
12const inputs = await processor(image, trimap);
13
14// Predict alpha matte
15const { alphas } = await model(inputs);
16// Tensor {
17// dims: [ 1, 1, 640, 960 ],
18// type: 'float32',
19// size: 614400,
20// data: Float32Array(614400) [ 0.997240424156189, 0.9971460103988647, ... ]
21// }1import { Tensor, cat } from '@huggingface/transformers';
2
3// Visualize predicted alpha matte
4const imageTensor = new Tensor(
5 'uint8',
6 new Uint8Array(image.data),
7 [image.height, image.width, image.channels]
8).transpose(2, 0, 1);
9
10// Convert float (0-1) alpha matte to uint8 (0-255)
11const alphaChannel = alphas
12 .squeeze(0)
13 .mul_(255)
14 .clamp_(0, 255)
15 .round_()
16 .to('uint8');
17
18// Concatenate original image with predicted alpha
19const imageData = cat([imageTensor, alphaChannel], 0);
20
21// Save output image
22const outputImage = RawImage.fromTensor(imageData);
23outputImage.save('output.png');| Image | Trimap |
|---|---|
![]() | ![]() |

onnx).