我已经成功地将量化的8位tflite模型转换为对象检测。我的模型最初是在通过除以255进行归一化的图像上训练的,因此原始输入范围为[0,1]。由于我的量化tflite模型要求输入为uint8,我该如何转换我的图像(最初是[0,255])以适合我的网络? 另外,如何将输出转换为浮点数以将结果与浮点模型进行比较?
以下代码没有给我正确的结果。
public class MyTest {
@Test(expected = IllegalArgumentException.class)
public void myTest() throws Throwable {
try {
CompletableFuture.runAsync(() -> myException()).join();
} catch (CompletionException e) {
throw e.getCause();
}
}
public static void myException() {
throw new IllegalArgumentException();
}
}
'''
答案 0 :(得分:0)
我遇到了同样的问题,只是姿势估计。
您解决了这个问题吗?
您使用量化意识培训吗?
我认为您可以获得关于输入图像的q和z值(因为使用tflite api或toco commonad来获得量化的8位tflite模型时必须给出均值和标准差)。
尝试以下代码:
image = q_input* (image - z_input)
output_data = q_output(image - z_output)
等
(对于不同的层,您可以访问不同的q和z)
让我知道您是否尝试过这种方式
答案 1 :(得分:0)
我已经通过OpenCV将图像转换为“ CV_8UC3”,这对我有用:
// Convert to RGB color space
if (image.channels() == 1) {
cv::cvtColor(image, image, cv::COLOR_GRAY2RGB);
} else {
cv::cvtColor(image, image, cv::COLOR_BGR2RGB);
}
image.convertTo(image, CV_8UC3);