安卓模拟器下使用TensorflowLite实现Object Detection|CSDN创作打卡

  • 非常入门的TFLite目标检测,基本上是整合了官网的一些教程,自己加上了配合安卓模拟器使用的这一部分。
  • 移动端比较:

移动端跑深度学习模型大概现在TFLite用的比较多,所以有移动端运行需要的大概就要早期搭网络的时候就使用tensorflow了吧。

我的操作系统是Windows, 目标检测网络为mobileNet+SSD。

  • 搭建过程:
    • 安装andriod studio,版本3.2以上。(https://developer.android.com/studio/index.html)
    • git clone https://github.com/tensorflow/examples.git   (可以基于这个repo改其他模型)
    • 在andriod studio中打开 tensorflow/examples/lite/examples/object_detection/android这个目录
    • 安装安卓模拟器测试:(我没有安卓手机所以用了安卓模拟器,如果直接连接真机更简单,在安卓手机中设置->开发者选项->USB调试打开)
      • 安装夜神模拟器(要调用电脑摄像头作为模拟器的手机摄像头,有些模拟器不支持)

      • 在cmd里通过 adb devices 查看连接情况: 

      • 显示XXX device即连接成功。
      • 同时在Android Studio中Android monitor处也会显示模拟的设备:

        (采用夜神模拟器时,安装好后会直接连接到Android studio,其他模拟器需要查找模拟器的端口号后,打开cmd 执行 adb connect 地址:端口号 进行连接)

      • 此处可能出现的问题:
  • Build project(一般每打开一个新的项目,AS都会自动sync编译一次)
    • 如果报错通常都是缺少安装包,而且错误提示中会指出,根据提示安装即可,安装好build->rebuild project重新编译。

      Build成功。

  • Run
    • 本次运行的是mobileNet+SSD模型, .tflite(模型文件)和label 文件在android/app/src/main/assets文件夹下(运行的时候会自动将这俩文件下载到这个文件夹下),安卓模拟器中选择摄像头即可检测。
    •  在安卓模拟器中会出现TFDetect这个图标,后面可以直接通过打开这个app进行检测。

  •  检测结果:
  •  

    这个基础模型的泛化性不是很好。

  • 应用其他train好的tensorflow模型:将训练好的模型转tensorflow lite可使用的模型主要有两种方式
    • 用python API中的转换器:
      import tensorflow as tf 
      converter=tf.lite.TFLiteConverter.from_saved_model(saved_model)
      tflite_model = converter.convert()
      open("converted_model.tflite", "wb").write(tflite_model)

      saved_model为.pb模型(Frozen GraphDef)

      得到的tflite文件是包含计算图和参数的。

    • 在命令行中使用转换器(官方不推荐这种方式我就没细看):

      bazel run //tensorflow/lite/python:tflite_convert -- --output_file=...
  • 原项目中需要修改的地方:

    • 将新的detect.tflite文件和新的labelmap.txt复制到     ./lite/examples/object_detection/android/app/src/main/assets目录下,这俩文件名保持不变就不用再改Android studio中的代码了

    • 如果文件名改变,打开 

      ./lite/examples/object_detection/android/app/src/main/java/org.tensorflow.lite.examples.detection/DetectorActivity.java

    • 修改相关配置。(其中TF_OD_API_IS_QUANTIZED决定是否对模型进行优化,true时表示量化,通过降低模型中数值(values)和运算符(operations)的精度(precision),量化(quantization)可以减小模型的大小和推理所需的时间。)

    • 同时需要打开

      ./lite/examples/object_detection/android/app/build.gradle 文件,注释掉  apply from:'download_model.gradle' , 防止重新下载覆盖刚复制进去的tflite和label文件。

    • 重新build and run即可。

版权声明:本文为CSDN博主「今儿学习了没」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenf1995/article/details/122849791

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

YOLOX笔记

目录 1. 样本匹配 正负样本划分过程 2. yoloxwarmcos 学习率 3. 无法开启多gpu训练, 或者多gpu训练卡住? 1. 样本匹配 正负样本划分过程 说明: gt_centerbbox是在gt_bbox中心点向四周

手把手教人脸识别Facenet实现

在实现人脸检测mtcnn和人脸识别facenet时,遇到很多坑,记录解决方法,给其他人一点启发。 一、人脸检测mtcnn和人脸识别facenet的具体介绍 参考博客https://www.cnblo

Yolo(3)(项目)Yolo v3 目标检测(85分类)

目录 基础理论 一、 读取文件 二、神经网络初始化 1、搭建神经网络 2、GPU加速 三、打开摄像头、按帧读取图像 四、向神经网络输入 五、获取神经网络输出 1、获取各层名称 2、获取输出层名称 3、获取输出层图像&#xff