Android应用APP: 基于MobileNet和EfficientNet的图像分类模型_调试运行以及打包Tensorflow官方提供的Image classification demo

9 篇文章 1 订阅
1 篇文章 0 订阅

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

环境准备

JDK安装

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。此处不再赘述,安装详情参考:链接, 本人安装的版本是:1.8.0_202,安装完成后可通过命令:java -version 来验证安装的版本。

Android Studio安装

Android Studio是Android开发常用的IDE, 下载链接, 下载之后安装即可,安装详情参考:链接, 本人下载的版本是:4.1.1.

项目准备

打开Git, 运行命令: git clone https://github.com/tensorflow/examples, 完成后所有的TF demo已经克隆到当前目录下。本人下载到目录:E:\softWork\pythonWorkstation\PyCharm, 在该目录下可以看到examples目录,沿着图示目录打开可看到所有的Android demo。本次就以image classification为例进行介绍。
在这里插入图片描述

项目分析

项目导入

首先启动Android Studio, 然后点击 ”Open an existing directory“, 定位到目录:E:\softWork\pythonWorkstation\PyCharm\examples\lite\examples\image_classification\android,点击OK,项目成功导入。

项目分析

在settings.gradle文件可以看到如下信息:
在这里插入图片描述

models: 存放models文件(**.tflite)以及labels.txt

其中 models模型文件用于在在推理阶段预测物体的类别,labels.txt用于在预测的Post processing 阶段将预测的类别k映射到第K个类别对应的物体名称;
:实际上当获得tflite模型文件后,整个项目已经变成一个基于tensorflow的Android开发项目,与ML\DL算法没啥关系了。

app:

app\src\main\java\org\tensorflow\lite\examples\classification 下主要是前端代码以及各种事件/活动监听,其中:

lib_support:

待续

lib_task_api:

待续

:lib_support和lib_task_api对应的分别两种实现方式。

项目调试

配置

build.gradle: 修改android.tool.build:gradle版本,如下图:
在这里插入图片描述
models\build.gradle: 修改sdk的版本(30)
在这里插入图片描述
app\build.gradle: 修改sdk version(30), jdk的版本(1.8)
在这里插入图片描述
models\download.gradle: 在Gradle Synchronize的过程中会执行该文件以从指定的URL文件下载相应的models (**.tflite), 这个过程需要访问google,笔者在Gradle Synchronzie的过程中就因为无法访问google而无法下载models.
解决方法:将以下四行代码注释,然后从第三方网站下载这四个models: mobilenet_v1_1.0_224.tflite, mobilenet_v1_1.0_224_quant.tflite, efficientnet-lite0-fp32.tflite, efficientnet-lite0-int8.tflite, 下载完成后将这四个model文件存放到目录:models\src\main\assets 下。

// preBuild.dependsOn downloadModelFloat
// preBuild.dependsOn downloadModelQuant
// preBuild.dependsOn downloadEfficientNetFloat
// preBuild.dependsOn downloadEfficientNetQuant

注: 导入项目后,会自动进行Gradle Synchronize, 一般会Failed, (上述配置没有执行),配置完成后,重新:Build->rebuild project, 成功后会出现如下信息:
在这里插入图片描述

模拟器运行

Android Studio提供了android模拟器,点击AVD Manager-> Create virtual Device 创建模拟器,笔者创建模拟器如下,创建完成后启动该模拟器(Launch this AVD in the emulator),会弹出一个虚拟的手机。
在这里插入图片描述
然后选中该创建的AVD,如下图,点击run运行,
在这里插入图片描述
运行成功,手机界面如下:
在这里插入图片描述
可以看到有4个model供选择,系统会显示后验概率最大的几个类别以及相应的置信度。
注:也可以直接在手机上运行,只需要USB连接手机到PC,然后选中手机,再Run即可。

打包

关闭,模拟器后在目录: app\build\outputs\apk\support\debug 下会看到 app-support-debug.apk, 然而这个在手机上是无法正常启动运行的。要想在手机上正常运行,首先打包成APK,然后就可以像其他APP一样安装了。

打包流程

待续

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是基于TensorFlow的ViT模型的CIFAR-100图像分类代码: ```python import tensorflow as tf from tensorflow.keras.datasets import cifar100 from tensorflow.keras.layers import Input, Dense from tensorflow.keras.models import Model from tensorflow.keras.optimizers import Adam from tensorflow.keras.utils import to_categorical from official.vision.image_classification.augment import preprocess_input from official.vision.image_classification.resnet import ResNet from official.vision.image_classification import imagenet_preprocessing from official.vision.image_classification import augment from official.vision.image_classification import cifar_preprocessing from official.vision.image_classification import classification_models NUM_CLASSES = 100 IMAGE_SIZE = 224 BATCH_SIZE = 64 EPOCHS = 10 # Load CIFAR-100 dataset (x_train, y_train), (x_test, y_test) = cifar100.load_data() # Preprocess images x_train = cifar_preprocessing.preprocess_for_train(x_train) x_test = cifar_preprocessing.preprocess_for_eval(x_test) # One-hot encode labels y_train = to_categorical(y_train, NUM_CLASSES) y_test = to_categorical(y_test, NUM_CLASSES) # Create ViT model input_shape = (IMAGE_SIZE, IMAGE_SIZE, 3) inputs = Input(shape=input_shape) model = classification_models.ClassificationModel( 'vit_small_patch16_224', input_shape=input_shape, num_classes=NUM_CLASSES) outputs = model(inputs) model = Model(inputs, outputs) # Freeze all layers except for the classifier for layer in model.layers[:-1]: layer.trainable = False # Compile model optimizer = Adam(lr=1e-4) model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy']) # Train model history = model.fit(x_train, y_train, batch_size=BATCH_SIZE, epochs=EPOCHS, validation_data=(x_test, y_test)) # Evaluate model model.evaluate(x_test, y_test, batch_size=BATCH_SIZE) ``` 此代码使用了TensorFlow官方提供的ViT模型,并对CIFAR-100数据集进行了预处理和数据增强。模型训练完成后,使用测试集对模型进行了评估。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MasterQKK 被注册

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值