Fail to crop image with error: failed to compile fragment shader Tensorflow.js
Fail to crop image with error: failed to compile fragment shader Tensorflow.js
我正在尝试根据边界框从 BlazeFaceModel 裁剪人脸,但出现以下错误。它在我的控制台中抛出了一个巨大的错误,其中有很多看起来像 C++ 代码的东西。我以前没见过这个,我不确定该怎么做才能解决它。
const tensorDims = { height: 224, width: 224, depth: 3 };
const returnTensors = true;
const faces = await bfModel
.estimateFaces(tensor, returnTensors)
.catch(e => console.log(e));
const tensorReshaped = tensor.reshape([1, 224, 224, 3]);
const scale = {
height: styles.camera.height / tensorDims.height,
width: styles.camera.width / tensorDims.width
};
// Faces is an array of objects
if (!isEmpty(faces)) {
setModelFaces({ faces });
faces.map((face, i) => {
const { topLeft, bottomRight } = face;
const boxes = tf.concat([topLeft, bottomRight]).reshape([-1, 4]);
const width =
(bottomRight.dataSync()[0] - topLeft.dataSync()[0]) * scale.width;
const height =
(bottomRight.dataSync()[1] - topLeft.dataSync()[1]) * scale.height;
const crop = tf.image.cropAndResize(
tensorReshaped,
boxes,
[0],
[height, width]
);
console.log(crop);
});
}
盒子
Tensor {
"dataId": Object {},
"dtype": "float32",
"id": 63582,
"isDisposedInternal": false,
"kept": false,
"rankType": "2",
"scopeId": 119566,
"shape": Array [
1,
4,
],
"size": 4,
"strides": Array [
4,
],
}
问题出在缩放的宽度和高度导致浮点值。 width 和 height 用于裁剪张量的形状,因此应该是整数。您可以使用 Math.Round
或 Math.floor
来获取整数值
我正在尝试根据边界框从 BlazeFaceModel 裁剪人脸,但出现以下错误。它在我的控制台中抛出了一个巨大的错误,其中有很多看起来像 C++ 代码的东西。我以前没见过这个,我不确定该怎么做才能解决它。
const tensorDims = { height: 224, width: 224, depth: 3 };
const returnTensors = true;
const faces = await bfModel
.estimateFaces(tensor, returnTensors)
.catch(e => console.log(e));
const tensorReshaped = tensor.reshape([1, 224, 224, 3]);
const scale = {
height: styles.camera.height / tensorDims.height,
width: styles.camera.width / tensorDims.width
};
// Faces is an array of objects
if (!isEmpty(faces)) {
setModelFaces({ faces });
faces.map((face, i) => {
const { topLeft, bottomRight } = face;
const boxes = tf.concat([topLeft, bottomRight]).reshape([-1, 4]);
const width =
(bottomRight.dataSync()[0] - topLeft.dataSync()[0]) * scale.width;
const height =
(bottomRight.dataSync()[1] - topLeft.dataSync()[1]) * scale.height;
const crop = tf.image.cropAndResize(
tensorReshaped,
boxes,
[0],
[height, width]
);
console.log(crop);
});
}
盒子
Tensor {
"dataId": Object {},
"dtype": "float32",
"id": 63582,
"isDisposedInternal": false,
"kept": false,
"rankType": "2",
"scopeId": 119566,
"shape": Array [
1,
4,
],
"size": 4,
"strides": Array [
4,
],
}
问题出在缩放的宽度和高度导致浮点值。 width 和 height 用于裁剪张量的形状,因此应该是整数。您可以使用 Math.Round
或 Math.floor
来获取整数值