# UML科二7组 **Repository Path**: MeZR/group_27_of_uml_family ## Basic Information - **Project Name**: UML科二7组 - **Description**: 2016级计算机科学与技术二班7组提交的UML期末考试项目 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2019-01-08 - **Last Updated**: 2021-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TensorFlow Android Camera Demo Tensorflow object detection API 物体检测手机APP # 组成员 孟昭瑞 201601450201 伊桐杰 201601450205 韩韶波 201601450206 郭文康 201601450217 孙洪福 201601450222 吴延赛 201601450225 闫磊 201601450226 # 组成员贡献 孟昭瑞: 下载编译成功源程序 UML协作图 伊桐杰: 下载编译成功源程序 UML部署图 韩韶波: 下载编译成功源程序 UML构件图 郭文康: 下载编译成功源程序 UML顺序图 孙洪福: 下载编译成功源程序 UML用例图 吴延赛: 下载编译成功源程序 UML活动图 闫磊: 下载编译成功源程序 UML状态图 # 组员共同任务 1. 在github下载源码,地址:https://github.com/tensorflow/tensorflow.git 2. 将android项目解压出来并导入android studio 或 idea 3. 安装并配置java 1.8 环境 4. 下载并配置android sdk 5. 编译并修改错误 6. 编译成功后将debug文件夹下的apk安装到手机上 7. 在手机上测试程序 此文件夹包含一个示例应用程序,该应用程序在Android设备上使用TensorFlow。 ## 说明 此文件夹中的演示旨在提供在移动应用程序中使用TensorFlow的简单示例。 推理是使用TensorFlowandroid推理接口完成的,如果您希望将一个独立的库放入现有的应用程序中,可以单独构建该接口。对象跟踪和有效的yuv->rgb转换由libtensorflow.so处理。 由于使用了camera2 api,运行android 5.0(api 21)或更高版本的设备需要运行演示,尽管本机库本身可以在api>=14设备上运行。 ## 当前样本: 1. [TF Classify](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/src/org/tensorflow/demo/ClassifierActivity.java): tf classify:使用google inception模型实时对摄像机帧进行分类,在摄像机图像上显示叠加的顶部结果。 2. [TF Detect](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/src/org/tensorflow/demo/DetectorActivity.java): tf detect:演示一个SSD mobilenet模型,该模型使用 [Tensorflow Object Detection API](https://github.com/tensorflow/models/tree/master/research/object_detection/) TensorFlow对象检测API进行培训, 该API引入了[Speed/accuracy trade-offs for modern convolutional object detectors](https://arxiv.org/abs/1611.10012) 现代卷积对象检测器的速度/精度权衡,以实时定位和跟踪相机预览中的对象(80个类别)。 3. [TF Stylize](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/src/org/tensorflow/demo/StylizeActivity.java): tf-styleze:使用基于艺术风格的学习表示的模型,将相机预览图像重新设置为多个不同艺术家的图像。 4. [TF Speech](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/src/org/tensorflow/demo/SpeechActivity.java): 运行由 [audio trainingtutorial](https://www.tensorflow.org/versions/master/tutorials/audio_recognition)音频训练教程构建的简单语音识别模型。侦听一小组单词,并在识别时在UI中突出显示它们。 ## 预建组件: 如果您只想要尝试演示的最快路径,可以在 [here](https://ci.tensorflow.org/view/Nightly/job/nightly-android/). 此处下载每晚构建 。展开“View”,然后展开“Last Successful Artifacts”下的“out”文件夹,找到tensorflow_demo.apk。 另外还有预编译的本机库和一个jcenter包,您可以将其放入自己的应用程序中。有关 详细信息,请参阅 [tensorflow/contrib/android/README.md](../../../tensorflow/contrib/android/README.md) ## 运行演示 安装应用程序后,可以通过“TF Classify”,“TF Detect”,“TF Stylize”和“TF Speech”图标启动它们,这些图标的橙色TensorFlow标志作为其图标。 在运行活动时,按设备上的音量键将打开/关闭调试可视化,向屏幕呈现可能对开发有用的其他信息。 ## 使用JCenter中的TensorFlow AAR在Android Studio中构建 自己编译演示应用程序并尝试更改项目代码的最简单方法是使用AndroidStudio。只需将此android目录设置为项目根目录即可。 然后编辑build.gradle文件并更改nativeBuildSystemto 的值,'none'以便以最简单的方式构建项目: def nativeBuildSystem ='none' 虽然此项目包括TensorFlow的完整构建集成,但此设置禁用它,并使用JCenter的TensorFlow推理接口包。 注意:目前,在此构建模式下,YUV - > RGB使用效率较低的Java实现完成,并且“TF Detect”活动中没有对象跟踪。将构建系统设置为'cmake'当前仅构建 libtensorflow_demo.so,提供快速YUV - > RGB转换和对象跟踪,同时仍通过下载的AAR获取TensorFlow支持,因此它可能是启用这些功能的轻量级方法。 对于任何不包含自定义低级TensorFlow代码的项目,这可能就足够了。 有关如何在您自己的项目中包含此JCenter包的详细信息,请参阅 [tensorflow/contrib/android/README.md](../../../tensorflow/contrib/android/README.md) ## 使用来自Source的TensorFlow构建演示 选择下面的首选方法。目前,我们完全支持Bazel,并且对gradle,cmake,make和Android Studio提供部分支持。 作为所有构建类型的第一步,克隆TensorFlow仓库: git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git 请注意,这--recurse-submodules是防止protobuf编译的一些问题所必需的。 ### Bazel 注意:Bazel目前不支持在Windows上构建Android。对gradle / cmake构建的全面支持即将推出,但与此同时我们建议Windows用户下载预构建的二进制文件。 [prebuilt binaries](https://ci.tensorflow.org/view/Nightly/job/nightly-android/) instead. ##### 安装Bazel和Android先决条件 Bazel是TensorFlow的主要构建系统。要使用Bazel构建,必须在您的系统上安装它和Android NDK和SDK。 1. 按照Bazel网站上的说明安装最新版本的Bazel [on the Bazel website](https://bazel.build/versions/master/docs/install.html). 2. Android NDK是构建本机(C / C ++)TensorFlow代码所必需的。目前推荐的版本是14b,可在此处找到 。 [here](https://developer.android.com/ndk/downloads/older_releases.html#ndk-14b-downloads). NDK 16,即2017年11月发布的修订版,与Bazel 不兼容。看到这里。[here](https://github.com/tensorflow/tensorflow/issues/14918). 3. Android SDK和构建工具可以在此处获得, [here](https://developer.android.com/tools/revisions/build-tools.html),也可以作为Android Studio的一部分获取 。 [Android Studio](https://developer.android.com/studio/index.html). 构建工具API> = 23是构建TF Android演示所必需的(尽管它将在API> = 21设备上运行)。 Android Studio SDK Manager的NDK安装程序将安装最新版本的NDK,这与Bazel 不兼容。您需要手动下载旧版本,如(2)所示。 ##### 编辑WORKSPACE 注意:只要安装了SDK和NDK,./configure脚本就会为您创建这些规则。当脚本要求自动配置时,回答“是” ./WORKSPACE。 /WORKSPACE必须取消注释Android条目, 并根据NDK和SDK的安装位置适当填充路径。否则会报告错误,例如:“外部标签'//外部:android / sdk'没有绑定任何东西”将被报告。 同时将WORKSPACE中SDK的API级别编辑为SDK中安装的最高级别。这必须> = 23(这完全独立于演示的API级别,该级别在AndroidManifest.xml中定义)。NDK API级别可能保持在14。 ##### 安装模型文件(可选) GraphDef包含模型定义和权重的TensorFlow 由于其大小而未打包在repo中。它们会自动下载并通过Bazel通过WORKSPACE在构建过程中定义的new_http_archive 以及Gradle via download-models.gradle 与APK一起打包。 可选:如果您希望手动将模型放在资源中,请model_files从文件assets中tensorflow_demo 找到的列表中删除所有条目BUILD。然后自己下载并解压缩到assets源树中的目录: ```bash BASE_URL=https://storage.googleapis.com/download.tensorflow.org/models for MODEL_ZIP in inception5h.zip ssd_mobilenet_v1_android_export.zip stylize_v1.zip do curl -L ${BASE_URL}/${MODEL_ZIP} -o /tmp/${MODEL_ZIP} unzip /tmp/${MODEL_ZIP} -d tensorflow/examples/android/assets/ done ``` 这会将模型及其关联的元数据文件提取到本地assets /目录。 如果您使用的是Gradle,请确保在手动下载模型后从build.gradle中删除download-models.gradle引用; 否则gradle可能会再次下载模型并覆盖您的模型。 ##### 建立 确保在Android 5.0(API 21)或更高版本的设备上启用了adb调试,然后在构建中使用工作区根目录中的以下命令来安装APK: ```bash bazel build -c opt //tensorflow/examples/android:tensorflow_demo ``` ##### 安装 确保在Android 5.0(API 21)或更高版本的设备上启用了adb调试,然后在构建中使用工作区根目录中的以下命令来安装APK: ```bash adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk ``` ### 带有Bazel的Android Studio Android Studio可用于与Bazel一起构建演示。首先,确保您可以按照上述说明使用Bazel进行构建。然后,查看build.gradle并确保Bazel的路径与系统的路径匹配。 此时,您可以将tensorflow / examples / android目录添加为新的Android Studio项目。点击安装它请求的所有Gradle扩展,您应该能够让Android Studio像任何其他应用程序一样构建演示(它将调用Bazel以使用NDK构建本机代码)。 ### CMake 该演示的完整CMake支持即将推出,但目前可以使用 [tensorflow/contrib/android/cmake](../../../tensorflow/contrib/android/cmake)..