设置Android AI开发环境(译文)
By S.F.
本文链接 https://www.kyfws.com/news/setting-up-an-android-ai-development-environment/
版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 6 分钟阅读 - 2937 个词 阅读量 0设置Android AI开发环境(译文)
原文地址:https://www.codeproject.com/Articles/5279601/Setting-Up-an-Android-AI-Development-Environment
原文作者:Joel Ivory Johnson
译文由本站翻译
前言
这是有关在Android上使用TensorFlow Lite将机器学习和深度神经网络的力量引入移动应用程序的系列文章的第一篇 在第一部分中,建立了开发环境. 本系列的以下部分将指导您创建Android应用程序,准备在TensorFlow Lite中使用的预训练神经网络,以及提高性能的注意事项和训练自己的视觉识别器所需的步骤.
什么是深度神经网络?
深度神经网络(DNN)在图像分类和其他类型的自动分类方面非常出色.十年前,花费了数百万美元的研究和计算能力的结果现已提供给拥有一半像样的GPU的任何人.但是,尝试在移动设备上运行DNN可能会遇到一个弊端.当使用常规代码实现时,DNN在移动设备上可能会占用大量处理器资源并且运行缓慢.幸运的是,TensorFlow Lite提供了缩小DNN规模的解决方案,使其可以在移动设备上更平稳地运行. DNN是实现人工智能的多种方式之一.神经网络是基于仿生的AI方法之一(基于生物实体设计技术和过程). DNN基于神经元.生物神经元相互连接,可以响应来自环境或其他神经元的外部刺激而激活,并刺激与其连接的其他神经元.软件神经元类似,它们的外部刺激来自保存的数据或来自摄像头和麦克风等传感设备. 实现软件神经网络和形成连接的方式值得对其进行讨论.如果您想更详细地了解它,请查看AI:面向初学者的神经网络. 简而言之,单个软件神经元(或节点)具有许多接受某个数值的输入,并且对于每个输入,该值都乘以某个数字并为其添加基值.所有这些输入的结果加在一起,然后通过激活函数来决定神经元将输出什么值.这些不同的神经元连接在一起,以相互传递信息.这些神经元的集体配置被称为模型.对于单个神经元,涉及许多数学运算.对于完整的神经网络模型,可能涉及成千上万个相互连接的神经元. 典型的计算机处理器可以快速执行顺序操作.但是,即使是多核CPU,与GPU相比,它可以执行的并行操作的数量也极为有限. GPU旨在一次对向量组执行数学运算.这对于高性能3D渲染和训练神经网络都是必需的. CPU速度极快,但不是3D渲染或训练神经网络所需要的. GPU旨在执行大量的并行操作,因此它们可以快速处理和显示构成视觉场景的形状和像素.尽管GPU并不在乎它们处理的数据的最终目的,但发现它们也可以用于更通用的计算.现在,某些GPU也可以使用本机API来执行通用计算.在移动设备上,巧妙地使用GPU可以显着加快神经网络的处理速度.除了GPU,现在还有一些移动设备,其硬件专门用于处理神经网络.使用TensorFlow lite,您的代码可以利用可用的硬件加速功能. 在进入Android上的神经网络之前,您需要设置一个开发环境.您可以从Windows,macOS或Linux开发.您将需要的软件可用于所有三个平台:
- Android Studio
- Python 3.7以上
- 网龙 一旦安装了所有这些,就可以开始进行配置.由于将通过命令行使用Python,因此您需要将其安装位置添加到PATH变量中,这样您就无需键入其完整路径即可使用它. 另外,还需要将其他Python库安装到您的环境中.这些库可以使用PIP实用程序从命令行轻松安装.您将要安装的库包括以下内容:
- pip3安装numpy
- pip3安装git + https://github.com/onnx/onnx-tensorflow.git
- pip3安装tensorflow
- pip3安装tensorflow-gpu
- pip3安装tensorflow_addons 对于Tensorflow,有多个安装选项.默认情况下,将安装兼容版本的tensorflow.兼容版本虽然不是最快的版本,但可以在最广泛的硬件上运行.如果您的计算机具有支持某些矢量操作指令的处理器,则TensorFlow将打印一条消息,通知您该计算机支持可用于提高性能的选件. 如果您的计算机具有受支持的图形适配器,则还可以安装具有GPU支持的TensorFlow版本.在撰写本文时,NVIDIA支持CUDA的GPU是受支持的图形卡系列.如果您具有兼容的视频卡并想要使用TensorFlow的GPU加速版本,则可以使用以下命令进行安装:
pip3 install tensorflow-cpu
还必须将Android Studio配置为使用NDK执行本机代码编译.您无需自己编写任何本机代码,但是TensorFlow Lite Android库依赖于此.要安装NDK,请打开"工具"菜单,然后选择" SDK管理器".在" SDK工具"选项卡下是一个标签为NDK(并排)的项目.选择此选项将导致安装NDK的最新版本. TensorFlow Lite经常更新.要安装我使用的版本(21.0.6113669),请选择右下角的"显示软件包详细信息"复选框.选择后,展开NDK(并排)以查看NDK版本.
选择SDK版本并单击"确定"后,Android Studio将下载并安装组件.下载完成后,通过创建一个新的Android项目并向其添加TensorFlow引用来测试是否存在正确版本的NDK.在Android Studio中,打开"文件"菜单,然后选择"新建项目".选择清空活动并接受该项目的默认设置.单击完成. 在依赖项部分的项目的build.gradle文件中,添加以下行:
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
然后构建项目.如果一切顺利,则将编译该项目.如果NDK要求已更改,您应该收到一条错误消息,指出找不到所需的NDK版本,该版本还提供了所需的版本.如果遇到这种情况,请打开SDK管理器,然后选择错误所标识的NDK版本. 为了测试Python和TensorFlow的安装,让我们快速制作一个使用TensorFlow的应用程序.对于此应用程序,TensorFlow将获得数字和相关输出的列表,并且必须弄清楚它们之间的关系.对于此测试,数字之间将具有线性关系.输入值将是 2,5,10,12,24,32,66,100 输出值将是 5\14\29\35\71\95\197\299 这样发现数字集之间的关系称为线性回归.这些值之间的关系可以用等式y =3 * x-1表示.在此代码中,创建了一个简单的网络来学习关系,然后根据测试值7计算输出:
import tensorflow as tf
print(tf.__version__)
#This is the training data
training_x = [2, 5, 10, 12, 24, 32, 66, 100]
training_y = [5, 14, 29, 35, 71, 95, 197, 299]
#Building the network that will be trained
layer0 = tf.keras.layers.Dense(units=1, input_shape=[1])
model = tf.keras.Sequential([layer0])
#Compiling the network
model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.Adam(1))
#Training
history=model.fit(training_x, training_y, epochs=1000, verbose=False)
#Show the network weights
weights = layer0.get_weights()
print('weight: {} bias: {}'.format(weights[0], weights[1]))
#Try prediction
print(model.predict([7]))
将该程序保存在名为regression.py的文件中.要运行该程序,请从终端运行以下命令.
python3 regression.py
运行此命令时,TensorFlow将运行其训练周期,然后将输出打印为输入值7.
weight: [[3.]] bias: [-1.000001]
[[20.]]
如果代码运行并输出类似于上述内容的输出,则说明您的TensorFlow环境正常.线性回归是常用的数据分析和预测工具.但是我们想通过视觉识别来做一些更复杂的事情.
下一步
现在,我们已经准备就绪,可以进行Android和TensorFlow开发了.在下一篇文章中,我们将学习如何采用预训练的神经网络并使其适用于TensorFlow Lite.
许可
本文以及所有相关的源代码和文件均已获得The Code Project Open License (CPOL)的许可。
Python Android AI neural tensorflow 新闻 翻译