在Android上可视化TensorFlow Lite AI结果

261 篇文章 9 订阅
39 篇文章 2 订阅

目录

下一步


在这里,我们完成了基于TensorFlow Lite的应用程序的构建,该应用程序使用来自ONNX Model Zoo的网络模型执行对象识别。

输出存储在一组数字数组中。除非我们做更多的工作来解释其中的值,否则数值数组本身不会告诉我们有关检查图像的太多信息。数组的保持值之一如下所示:

float[][][][][] buf2 = new float[1][13][13][3][85];

让我们解包这个数组。数组的第一个维度是1,用于选择要检查的一组图像中的哪个图像。对于我们的实现,任何时候都只检查一张图像。数组的下两个维[13] [13]用于选择网格的行和列。每行和每一列都包含有关图像的32x32像素部分的信息。图像部分包含3个针对发现的对象的边界框定义。最后一个维度用于包含有关找到的对象的有趣数据的数组。

此维度的前四个元素包含找到的元素的边界矩形:XYWIDTHHEIGHT。第五个元素包含01之间的置信度。如果置信度小于某个阈值,那么我们得出的结论是,没有指向任何关注的内容,并且可以跳过此行中其余数据的评估。剩余80项数据。这80个数据项代表模型可以识别的80类对象。类是对象类型。类的示例包括远程电视等。对于每个类别,该类别中的对象都有一个置信度值。

此数据上需要进行一些处理。这些值的格式不符合我们的期望。需要一些缩放和调整,以使数字与我们的图像对齐。当我们有一个可以接受的置信度的项目时,它将被添加到发现的项目列表中,以便可以在屏幕上呈现标记发现的项目的框。

float[][][][][] result = buf2;
   for(int y=0;y<IMAGE_SEGMENT_ROWS;++y) {
       for(int x=0;x<IMAGE_SEGMENT_COLS;++x) {
           for(int b=0;b<BOXES_PER_SEGMENT;++b) {

               final float confidence = expit(result[0][y][x][b][4]);
               int classIndex = -1;
               float maxConfidence = 0;
               float[] classConfidence = new float[OBJECT_CLASS_COUNT];

               for(int k=0;k<OBJECT_CLASS_COUNT;++k) {
                   float currentConfidence = classConfidence[k]= result[0][y][x][b][5 + k];
                   if(currentConfidence > maxConfidence) {
                       classIndex = k;
                       maxConfidence = currentConfidence;
                   }
               }

               float combinedConfidence = maxConfidence * confidence;
               if(combinedConfidence > DETECTION_THRESHOLD) {
                   final float xPos = (x + expit(result[0][y][x][b][0])) * (float)IMAGE_SEGMENT_WIDTH;
                   final float yPos = (y + expit(result[0][y][x][b][1])) * (float)IMAGE_SEGMENT_HEIGHT;
                   final float w = (float)(Math.exp(result[0][y][x][b][2]))*ANCHORS[b*2+0];
                   final float h = (float)(Math.exp(result[0][y][x][b][3]))*ANCHORS[b*2+1];
                   final RectF boundary = new RectF(
                           Math.max(0, xPos - w/2),
                           Math.max(0, yPos - h/2),
                           Math.min(IMAGE_WIDTH-1, xPos + w / 2),
                           Math.min(IMAGE_HEIGHT-1, yPos + h/2)
                   );
                   RecognizedBox box = new RecognizedBox(
                           labels.get(classIndex),
                           combinedConfidence,
                           boundary
                   );
                   recognizedItems.add(box);
               }
           }
       }
   }
}

添加所有框后,可以在屏幕上呈现已识别项目的边界框,标记已识别的内容。

下一步

我们已经走了很长一段路!到目前为止,我们已经采用了预先训练的模型,将其从ONNX转换为Tensorflow Lite格式,并使用它来检测Android应用程序中的对象。在接下来的文章中,我们将与Tensorflow Lite工作时,考察了一些最佳实践和优化技巧可循。

### 回答1: 您好,关于在树莓派上使用tensorflowlite实现表情识别,您可以按照以下步骤进行操作: 1.在树莓派上安装tensorflowlite库。 2.使用训练好的模型,将其转换为tensorflowlite格式。您可以在PC上训练一个表情识别模型,然后将其转换为tensorflowlite格式,再将转换后的模型复制到树莓派上。 3.在树莓派上使用python编写识别程序,读取摄像头捕获的实时视频流,对每一帧图像进行预处理,并将其输入到tensorflowlite模型中进行推理,最终输出表情识别结果。 需要注意的是,表情识别模型的准确度与训练数据集的质量和数量有很大关系,因此您需要选择一个合适的数据集来训练模型。同时,树莓派的硬件资源相对有限,需要选择适合树莓派的模型进行推理。 ### 回答2: 要在树莓派上使用TensorFlow Lite实现表情识别,可以按照以下步骤进行: 1. 准备树莓派:首先,确保你的树莓派已经连接了摄像头,并且已经安装了Raspbian操作系统。 2. 安装TensorFlow Lite:在树莓派上安装TensorFlow Lite库。可以通过在终端中运行以下命令来安装: ``` pip install tensorflow ``` 3. 准备训练数据:使用已有的表情数据集或者自己创建一个表情数据集。数据集应包含不同表情的图像样本,并为每个图像样本标注正确的表情类别。 4. 训练模型:使用TensorFlow来训练一个表情识别模型。可以选择一种适合的深度学习架构(如卷积神经网络)来构建模型,并使用数据集进行训练。可以使用Python编写训练脚本,并在树莓派上运行。 5. 转换模型为TensorFlow Lite格式:将训练好的TensorFlow模型转换为TensorFlow Lite格式,以便在树莓派上进行推断。可以使用TensorFlow提供的工具来进行模型转换。 6. 在树莓派上运行推断:将转换后的模型部署到树莓派上,使用树莓派的摄像头捕捉实时图像,并将图像传输到模型中进行表情识别。你可以使用Python编写一个程序,通过TensorFlow Lite库来实现图像的预处理和模型推断,从而实现表情识别的功能。 通过以上步骤,就可以在树莓派上使用TensorFlow Lite实现表情识别。树莓派具有较低的功耗和便携性,非常适合用于嵌入式和物联网设备中的表情识别应用。 ### 回答3: 在树莓派上使用TensorFlow Lite实现表情识别可以按照以下步骤进行: 1. 准备数据集:收集一些包含各种表情的图片作为训练数据,可以使用人脸表情数据集如FER2013等。 2. 安装TensorFlow Lite:在树莓派上安装TensorFlow Lite库,可以使用pip或者从源代码编译安装。 3. 模型训练:使用收集的数据集进行模型训练。可以选择使用预训练的模型(如MobileNet)并进行微调,或自行设计卷积神经网络结构。利用TensorFlow的模型训练工具,如Keras等,训练一个适用于表情识别的模型。 4. 模型转换:使用TensorFlow Lite的转换工具将训练好的模型转换为TensorFlow Lite模型,以优化在嵌入式设备上的运行。 5. 集成模型到树莓派:将转换好的TensorFlow Lite模型加载到树莓派上,可以使用TensorFlow Lite的Python API来加载模型,并且在摄像头捕获的图像上运行表情识别。 6. 图像处理和预测:获取树莓派摄像头捕获的实时图像,并进行图像预处理,例如人脸检测和裁剪。 7. 运行模型进行预测:将预处理后的人脸图像输入到TensorFlow Lite模型中,进行表情识别预测。根据模型输出的概率分布或类别标签,判断出当前图像的表情。 8. 可视化或输出结果:将表情识别的结果进行可视化展示,可以在树莓派本地显示或通过网络传输至其他设备。 总结:以上是在树莓派上使用TensorFlow Lite实现表情识别的基本步骤,主要包括数据准备、模型训练、模型转换、模型集成、图像处理和预测等过程。通过这些步骤可以在树莓派上实现实时的表情识别功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值