使用Tensorflow Lite在Android上进行AI危害检测

262 篇文章 9 订阅
39 篇文章 1 订阅

目录

技术栈

AI模型

我们的Android项目


许多现代车辆都配备了摄像头,可以检测前方道路上的危险并向驾驶员发出警报。但是,如果您驾驶的是旧车,而您所拥有的只是一部Android设备,该怎么办?您是否可以创建一个应用程序,以检测危险的出现并在进入危险状态之前向您发出警报?本系列将向您展示如何使用Android设备创建危险检测器。当危险区域内发现障碍物时,完成的项目将发出声音警报并突出显示障碍物。

技术栈

首先,我们需要Android Studio,一个AI模型和Python解释器。(可选)您可能还需要一个名为Netron的免费软件工具,用于查看经过训练的网络模型上的信息。作为开发的第一步,我们将使解决方案适用于存储在设备上的照片。您需要从驾驶区域看到有一些障碍物的照片。稍后,我们将让应用程序使用摄像机中的实时视频。

我们将使用Kotlin创建我们的Android应用。如果您已经做了很多Android开发,那么您可能已经习惯使用Java。那么,如果Java仍然运行良好,为什么还要使用Kotlin?简而言之,Kotlin现在Google开发Android的首选语言。新的Android API将设计用于Kotlin——尽管它们可以在Java中使用,但这样做可能很尴尬。

但是,如果您是Java的资深人士,请不要担心!Kotlin的设计使Java开发人员感到非常熟悉,并且它还有一个很好的Java互操作性故事。您可以加载任何Java库并在Kotlin应用程序中无缝使用它。

AI模型

AI模型将能够检测视觉场景中的物体。您可能不希望从头开始构建模型,而是要以现有模型作为起点。您可以在ONNX Model ZooTensorFlow Hub上找到经过训练的模型。ONNX是一种表示受训网络的格式。ONNX模型可以转换为其他表示形式。我们将转换一个使用TensorFlow Lite。浏览了可用的各种模型之后,我决定使用ONNX Model ZooYOLO模型YOLO是一种相对易于使用的模型,可以检测各种不同类型的对象。一些图片分析模型只能分辨出存在某些对象集,而无法判断它们在图片中的位置。YOLO还将返回有关对象位置的信息。

必须转换ONNX Model Zoo中的模型。从脚本执行此操作最简单。要执行转换,我们需要Python和适用于PythonTensorFlow软件包。在撰写本文时,您将要使用Python 3.8。虽然3.9可用,但TensorFlow兼容3.8版本。如果已安装Python,则可以使用以下命令为Python安装TensorFlow软件包和ONNXTensorFlow转换软件包。

pip3 install tensorflow
Pip3 install onnx-tf

将我们的模型从ONNX转换到TensorFlow Lite的过程分为两个阶段。必须将文件从ONNX转换为TensorFlow,然后从TensorFlow转换为TensorFlow Lite。要将模型从ONNX转换为TensorFlow,请使用以下命令。

onnx-tf convert -i youlov4.onnx -o yolo.pb

对于第二次转换,我们需要一个简短的Python脚本。将以下内容保存到名为convert.py的文件中。变量saved_model_dir应设置为保存转换后的模型的路径。

import tensorflow as tf
saved_model_dir='/dev/projects/models'
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tf_lite_model = converter.convert()
open(’yolov4.tflite', 'wb').write(tf_lite_model)

我们的Android项目

aaptOptions {
    noCompress "tflite"
}

对于Android项目,创建一个活动为空的新应用程序。该应用程序最终将成为使用相机实时取景的全屏应用程序。此应用程序将需要相机访问权限和位置访问权限。将以下权限添加到您的AndroidManifest.xml。要发送紧急警报,该应用程序也需要SMS权限。

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.SEND_SMS" />

应用程序将需要在代码中请求这些权限。为了更加专注于特定于此应用程序的功能,此处未演示一些相当普通的调用,但是这些调用在示例项目中。这包括对requestPermissions SMS、位置和摄像头访问的调用。

Android项目需要进行一些配置更改,才能为TensorFlow Lite做好准备。必须添加对TensorFlow库的引用,并且应将项目设置为不压缩TensorFlow模型文件。要添加TensorFlow库,请将这三行添加到依赖项部分的底部。

implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly'
implementation 'org.tensorflow:tensorflow-lite-support:0.0.0-nightly'

在同一文件的android部分中,必须添加以下内容以防止模型被压缩。

aaptOptions {
    noCompress "tflite"
}

现在,该项目已准备好处理TensorFlow Lite模型。在本系列的下一篇文章中,我们将TensorFlow Lite模型添加到项目中并准备进行处理。

https://www.codeproject.com/Articles/5291388/AI-Hazard-Detection-on-Android-with-Tensorflow-Lit

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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、付费专栏及课程。

余额充值