我试图根据边界框从 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
来获取整数值
关于javascript - 无法裁剪图像,错误为 : failed to compile fragment shader Tensorflow. js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63914731/