python - 调整图像大小并更改为灰度
问题描述
我在输入大小为 48、48、1 的 react native 中使用训练有素的模型。输入值是 rgb 图像。所以我尝试将图像转换为 tensor3d,然后转换为灰度并调整其大小。但是在调整模型大小后总是给出相同的预测值。我不明白我的代码哪里出了问题。我的模型精度还可以。
const imageDataArrayBuffer = await response.arrayBuffer();
const imageData = new Uint8Array(imageDataArrayBuffer);
let imageTensor = decodeJpeg(imageData).resizeBilinear([48,48]).reshape([48,48,3])
//let imag=imageTensor
imageTensor=tf.ones([48,48,3])
rgb_weights=[0.2989, 0.5870, 0.1140]
imageTensor = tf.mul(imageTensor, rgb_weights)
imageTensor = tf.sum(imageTensor, -1)
imageTensor = tf.expandDims(imageTensor, -1)
imageTensor=imageTensor.resizeBilinear([48,48]).reshape([-1,48,48,1])
let result = await model.predict(imageTensor).data()
alert("Result " +result)
解决方案
我注意到的一件事是你最终得到了一个 float32 张量,因为你将你的Uint8Array
与 a相乘rgb_weights
,结果你得到了一个 float32 张量。如果添加toInt()
到,tf.mul
则将 int32 结构保留在张量中。
请参阅我制作的这个示例,您的代码在创建灰度图像时可以正常工作链接到代码
如果您删除toInt()
我的示例代码的第 8 行,则图像不再在正确的范围内。
这也引出了一个问题,您的模型期望采用什么格式imageTensor
?您是否需要将张量归一化为 0 到 1 之间的值,以便您的模型预测准确?确保您尊重每个张量和模型的类型。
推荐阅读
- python-3.x - 如何更改每个测试的 pytest-html 报告中显示的路径
- antlr - 如何在 ANTLR 语法中使用表达式否定
- excel - 我如何知道我的工作表是否也打开到另一个工作簿
- javascript - jquery 包含的选择器不适用于特定的 innerHTML
- python - 在 python 中使用 ivi 驱动程序时,无法“导入 pyivi”
- clob - 从 db 获取大于 32k 的 clob 到 apex 富文本编辑器的代码
- swift - 我需要将数组中的数据排序到 UITableView 部分,其中日期为部分标题,任何日期为今天的日期为“今天”等
- amazon-web-services - Strapi 可以启动到 AWS lambda 中吗?
- java - 解析和读取/写入自定义文件
- tomcat - Tomcat 7 Tomcat 8 - 初始化 sql 不起作用