TFLite: TfLiteCameraDemo bazel file

2024-06-03 15:08

本文主要是介绍TFLite: TfLiteCameraDemo bazel file,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编译源码使用的命令

bazel build --cxxopt='--std=c++11' //tensorflow/lite/java:TfLiteCameraDemo \
--crosstool_top=//external:android/crosstool \
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
--cpu=arm64-v8a

bazel file组成元素

workspace: 路径下包含文件WORKSPACE(可以是空文件,但必须有)
package:路径下包含文件BUILD
target:BUILD文件中的某个ruler

BUILD file

load("@build_bazel_rules_android//android:rules.bzl", "android_binary")

package(default_visibility = ["//visibility:private"])

licenses(["notice"])  # Apache 2.0

android_binary(
    name = "TfLiteCameraDemo",
    srcs = glob(["java/**/*.java"]),
    aapt_version = "aapt",
    assets = [
        "//tensorflow/contrib/lite/java/demo/app/src/main/assets:labels_mobilenet_quant_v1_224.txt",
        "@tflite_mobilenet//:mobilenet_quant_v1_224.tflite",
    ],
    assets_dir = "",
    custom_package = "com.example.android.tflitecamerademo",
    manifest = "AndroidManifest.xml",
    nocompress_extensions = [
        ".tflite",
    ],
    resource_files = glob(["res/**"]),
    # In some platforms we don't have an Android SDK/NDK and this target
    # can't be built. We need to prevent the build system from trying to
    # use the target in that case.
    tags = ["manual"],
    deps = [
        "//tensorflow/contrib/lite/java:tensorflowlite",
        "//tensorflow/contrib/lite/java/src/testhelper/java/org/tensorflow/lite:testhelper",
        "@androidsdk//com.android.support:support-v13-25.2.0",
        "@androidsdk//com.android.support:support-v4-25.2.0",
    ],
)

 

分析第一句 load("@build_bazel_rules_android//android:rules.bzl", "android_binary")

load是一个扩展bazel功能的函数
build_bazel_rules_android是一个ruler的name,表示从某个 URL 下载到的文件,android是包含文件rules.bzl的文件夹
android_binary和该BULD文件的android_binary对应

build_bazel_rules_android定义在文件中tensorflow/tensorflow/workspace.bzl文件中
    tf_http_archive(     
        name   = "build_bazel_rules_android", 
                                                                                                                                                                       
        sha256 = "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806",     
        strip_prefix = "rules_android-0.1.1",     
        urls = [     
            "https://mirror.bazel.build/github.com/bazelbuild/rules_android/archive/v0.1.1.zip",     
            "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip",     
        ],     
    )

    tf_http_archive(
        name = "tflite_mobilenet",
                                                                                                                                                                                 
        build_file = clean_dep("//third_party:tflite_mobilenet.BUILD"),
        sha256 = "23f814d1c076bdf03715dfb6cab3713aa4fbdf040fd5448c43196bd2e97a4c1b",
        urls = [
            "https://mirror.bazel.build/storage.googleapis.com/..models/tflite/mobilenet_v1_224_android_quant_2017_11_08.zip",
            "https://storage.googleapis.com/../models/tflite/mobilenet_v1_224_android_quant_2017_11_08.zip",
        ],
    )

另外androidsdk定义在文件:tensorflow/WORKSPACE
android_sdk_repository (     
    name = "androidsdk",     
    api_level = 23,     
    build_tools_version = "26.0.1",     
    path = "/home/mi/Android/Sdk/",     
)

glob函数


glob(include, exclude=[], exclude_directories=1)
Glob is a helper function that can be used anywhere a list of filenames is expected. 
    srcs = glob(["*.java"]) + [":gen_java_srcs"],

    data = glob(
        ["testdata/*.txt"],
        exclude = ["testdata/experimental.txt"],

    srcs = glob(
        ["**/*.java"],
        exclude = ["**/testing/**"],
    ),

android ruler


android_binary: Produces Android application package files (.apk).


    name:         required
    deps:         The list of other libraries to be linked in to the binary target.
    srcs:         The list of source files that are processed to create the target.
    aapt_version:     Select the version of aapt for this rule. aapt/aapt2/auto
    assets:     The list of assets to be packaged
    assets_dir:     The string giving the path to the files in assets.
    custom_package: Java package for which java sources will be generated.
    manifest:     The name of the Android manifest file, normally AndroidManifest.xml. 
    resource_files: The list of resources to be packaged.
    nocompress_extensions: A list of file extension to leave uncompressed in apk.

android_libray


This rule compiles and archives its sources into a .jar file. 
 

java接口的组成

 

native层的代码主要由framework和builtin_ops组成 ;

framework

其中的 *.d 文件表示改文件的依赖如 .c/ .h文件的改变将引起重新编译

│   ├── framework
│   │   ├── allocation.o
│   │   ├── graph_info.o
│   │   ├── interpreter.o
│   │   ├── mmap_allocation.o
│   │   ├── model.d
│   │   ├── model.o
│   │   ├── mutable_op_resolver.o
│   │   ├── nnapi_delegate.o
│   │   ├── optional_debug_tools.o
│   │   └── stderr_reporter.o

builtin_ops

只用一个regitster ops的register.cc文件

│       ├── builtin_ops
│       │   ├── register.d
│       │   └── register.o

注册的ops在builtin_op_kernels中

│       ├── builtin_op_kernels
│       │   ├── activations.d
│       │   ├── activations.o
│       │   ├── add.d
│       │   ├── add.o

这篇关于TFLite: TfLiteCameraDemo bazel file的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027336

相关文章

Open a folder or workspace... (File -> Open Folder)

问题:vscode Open with Live Server 时 显示Open a folder or workspace... (File -> Open Folder)报错 解决:不可以单独打开文件1.html ; 需要在文件夹里打开 像这样

android java.io.IOException: open failed: ENOENT (No such file or directory)-api23+权限受权

问题描述 在安卓上,清单明明已经受权了读写文件权限,但偏偏就是创建不了目录和文件 调用mkdirs()总是返回false. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_E

bash: arm-linux-gcc: No such file or directory

ubuntu出故障重装了系统,一直用着的gcc使用不了,提示bash: arm-linux-gcc: No such file or directorywhich找到的命令所在的目录 在google上翻了一阵发现此类问题的帖子不多,后来在Freescale的的LTIB环境配置文档中发现有这么一段:     # Packages required for 64-bit Ubuntu

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

file-max与ulimit的关系与差别

http://zhangxugg-163-com.iteye.com/blog/1108402 http://ilikedo.iteye.com/blog/1554822

瑞芯微Parameter File Format解析

Rockchip android系统平台使用parameter文件来配置一些系统参数 主要包含:串口号:nandflash分区 固件版本,按键信息等; 如下是台电P98HD的parameter参数: FIRMWARE_VER:4.1.1        // 固件版本 //固件版本,打包 updata.img 时会使用到,升级工具会根据这个识别固件版本。 //Boot loader 会读取

error while loading shared libraries: libnuma.so.1: cannot open shared object file:

腾讯云CentOS,安装Mysql时: 1.yum remove libnuma.so.1 2.yum install numactl.x86_64

Vue3图片上传报错:Required part ‘file‘ is not present.

错误 "Required part 'file' is not present" 通常表明服务器期望在接收到的 multipart/form-data 请求中找到一个名为 file 的部分(即文件字段),但实际上没有找到。这可能是因为以下几个原因: 请求体构建不正确:在发送请求时,可能没有正确地将文件添加到 FormData 对象中,或者使用了错误的字段名。 前端代码错误:在前端代码中,可能

File 的创建

在做音频录制的时候,用到创建一个音频文件,所以用到了如下方法 File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+ System.currentTimeMillis()+".mp3");if (!file.exists()){file.createNewFile();} 可是

clang: error: no such file or directory: '/Users/bigxin/Desktop/not file xxx

这样的问题,解决方法有以下几种: 第一:一般多人开发的时候会出现文件缺失的问题,遇到这个问题就根据提示找到对应的地址,然后会发现这个文件名字是红色的把红色的文件删除,然后重新addfile,然后把缺失的文件拷贝过来就可以了。。第二:如果第一种方法不行的话,可以移步到 TARGETS —-> Build Phases ——> Compile Sources(编译源) 里面来找,看有没有失效的文件