【问题标题】:Low Accuracy with static image on TFLite demo modelTFLite 演示模型上的静态图像精度低
【发布时间】:2018-10-01 22:14:07
【问题描述】:

我正在尝试使用来自TensorFlow for Poets 2 的移动网络迁移学习示例进行图像分类的 TFLite 实现

我能够在代码实验室中使用四个花朵样本成功完成迁移学习并获得以下屏幕

这是正在分类的连续图像流。

我需要在拍照而不是流后对图像进行分类,然后根据结果采取一些行动。以下是我的方法。

  1. 创建一个基本的相机应用程序
  2. 拍照并保存到存储中
  3. 图像的 uri 被保存,然后从 URI。
  4. 然后将此可绘制对象转换为位图。
  5. 位图大小转换为 224 x 224 以匹配 移动网络模型
  6. 我收到的准确度在 0.05 和 0.06 范围内,而代码实验室的连续流样本在经过训练的花卉类中给出了 0.80 - 0.90 范围内的准确度

下面是我将位图转换为 224 x 224 大小的代码

private static Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight, boolean isNecessaryToKeepOrig) {
    int width = bm.getWidth();
    int height = bm.getHeight();
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    // CREATE A MATRIX FOR THE MANIPULATION
    Matrix matrix = new Matrix();
    // RESIZE THE BIT MAP
    matrix.postScale(scaleWidth, scaleHeight);

    // "RECREATE" THE NEW BITMAP
    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);
    if(!isNecessaryToKeepOrig){
        bm.recycle();
    }
    return resizedBitmap;
}

即使我将原始位图传递给本身将图像转换为 224 x 224 的分类器,结果也是相同的。我应该对图像进行更多额外处理还是需要更改任何配置在模型中?

【问题讨论】:

    标签: android python tensorflow tensorflow-lite


    【解决方案1】:

    我认为问题在于使概率平滑的 applyFilter()。只需将其删除,则概率应正常显示。

    String classifyFrame(Bitmap bitmap) {
    ...
    // smooth the results
    //applyFilter(); <--remove it
    
    ...
    }
    

    【讨论】:

      【解决方案2】:

      我有同样的问题,我想对一张图片进行排序。我发现有多个调用分类函数的调用。结果往往是正确的。这只是一个糟糕的解决方案。 enter image description here

      【讨论】:

      • 你说虽然显示的百分比很低,但结果是对的。是的,这是对的。但在我的用例中,我也应该显示数字。此外,如果我们没有数字,我们将无法使用反馈来训练分类为低分的图像。
      • 如果对同一张图片进行多次分类,会看到准确率会增加,然后收敛。结果和使用frozen一样。铅在电脑上。
      猜你喜欢
      • 2021-11-25
      • 2022-01-06
      • 2019-03-18
      • 2015-07-17
      • 2021-02-08
      • 1970-01-01
      • 2020-09-15
      • 2020-04-04
      • 1970-01-01
      相关资源
      最近更新 更多