diff --git a/README.md b/README.md index 9169399..d33aa63 100644 --- a/README.md +++ b/README.md @@ -97,16 +97,30 @@ For this, first a `.so` needs to be built. You can follow the [Bazel build guide As a second step, the library needs to be added to your application's project. This is a simple procedure 1. Create a folder called `blobs` in the top level of your project -2. Copy the `libtensorflowlite_c-linux.so` to this folder -3. Append following lines to your `linux/CMakeLists.txt` +2. Copy the `libtensorflowlite_c.so` to this folder +3. Rename the file matching you architecture + 1. arm -> `libtensorflowlite_c_arm64.so` + 2. x86 -> `libtensorflowlite_c_x86.so` +4. Append following lines to your `linux/CMakeLists.txt` ``` Make ... # get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.so) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.so) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-linux.so - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_SO} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-linuxlibtensorflowlite_c-linux.so ) ``` @@ -118,16 +132,30 @@ For this, first a `.dll` needs to be built. You can follow the [Bazel build guid As a second step, the library needs to be added to your application's project. This is a simple procedure 1. Create a folder called `blobs` in the top level of your project -2. Copy the `libtensorflowlite_c-win.dll` to this folder -3. Append following lines to your `windows/CMakeLists.txt` +2. Copy the `libtensorflowlite_c.dll` to this folder +3. Rename the file matching you architecture + 1. arm -> `libtensorflowlite_c_arm64.dll` + 2. x86 -> `libtensorflowlite_c_x86.dll` +4. Append following lines to your `windows/CMakeLists.txt` ``` Make ... # get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.dll) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.dll) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-win.dll - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_DLL} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-win.dll ) ``` diff --git a/example/audio_classification/linux/CMakeLists.txt b/example/audio_classification/linux/CMakeLists.txt index 2113bed..aae6cb9 100644 --- a/example/audio_classification/linux/CMakeLists.txt +++ b/example/audio_classification/linux/CMakeLists.txt @@ -138,7 +138,19 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") COMPONENT Runtime) endif() +# get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.so) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.so) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-linux.so - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_SO} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-linux.so ) \ No newline at end of file diff --git a/example/audio_classification/windows/CMakeLists.txt b/example/audio_classification/windows/CMakeLists.txt index efe8f88..92662ff 100644 --- a/example/audio_classification/windows/CMakeLists.txt +++ b/example/audio_classification/windows/CMakeLists.txt @@ -102,7 +102,18 @@ install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) # get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.dll) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.dll) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-win.dll - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_DLL} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-win.dll ) \ No newline at end of file diff --git a/example/image_classification_mobilenet/linux/CMakeLists.txt b/example/image_classification_mobilenet/linux/CMakeLists.txt index b4ab441..d935926 100644 --- a/example/image_classification_mobilenet/linux/CMakeLists.txt +++ b/example/image_classification_mobilenet/linux/CMakeLists.txt @@ -138,7 +138,19 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") COMPONENT Runtime) endif() +# get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.so) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.so) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-linux.so - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_SO} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-linux.so ) \ No newline at end of file diff --git a/example/image_classification_mobilenet/windows/CMakeLists.txt b/example/image_classification_mobilenet/windows/CMakeLists.txt index 7f47e5f..3ba8152 100644 --- a/example/image_classification_mobilenet/windows/CMakeLists.txt +++ b/example/image_classification_mobilenet/windows/CMakeLists.txt @@ -102,7 +102,18 @@ install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) # get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.dll) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.dll) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-win.dll - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_DLL} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-win.dll ) \ No newline at end of file diff --git a/example/live_object_detection_ssd_mobilenet/linux/CMakeLists.txt b/example/live_object_detection_ssd_mobilenet/linux/CMakeLists.txt index 38ecaa2..d8c2bd4 100644 --- a/example/live_object_detection_ssd_mobilenet/linux/CMakeLists.txt +++ b/example/live_object_detection_ssd_mobilenet/linux/CMakeLists.txt @@ -138,7 +138,19 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") COMPONENT Runtime) endif() +# get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.so) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.so) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-linux.so - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_SO} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-linux.so ) \ No newline at end of file diff --git a/example/live_object_detection_ssd_mobilenet/windows/CMakeLists.txt b/example/live_object_detection_ssd_mobilenet/windows/CMakeLists.txt index 2a48b62..14614c0 100644 --- a/example/live_object_detection_ssd_mobilenet/windows/CMakeLists.txt +++ b/example/live_object_detection_ssd_mobilenet/windows/CMakeLists.txt @@ -102,7 +102,18 @@ install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) # get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.dll) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.dll) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-win.dll - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_DLL} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-win.dll ) \ No newline at end of file diff --git a/example/object_detection_ssd_mobilenet/linux/CMakeLists.txt b/example/object_detection_ssd_mobilenet/linux/CMakeLists.txt index deff719..7f543c9 100644 --- a/example/object_detection_ssd_mobilenet/linux/CMakeLists.txt +++ b/example/object_detection_ssd_mobilenet/linux/CMakeLists.txt @@ -138,7 +138,19 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") COMPONENT Runtime) endif() +# get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.so) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.so) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-linux.so - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_SO} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-linux.so ) \ No newline at end of file diff --git a/example/object_detection_ssd_mobilenet/windows/CMakeLists.txt b/example/object_detection_ssd_mobilenet/windows/CMakeLists.txt index 29f1d10..f386d6a 100644 --- a/example/object_detection_ssd_mobilenet/windows/CMakeLists.txt +++ b/example/object_detection_ssd_mobilenet/windows/CMakeLists.txt @@ -102,7 +102,18 @@ install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) # get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.dll) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.dll) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-win.dll - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_DLL} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-win.dll ) \ No newline at end of file diff --git a/example/style_transfer/linux/CMakeLists.txt b/example/style_transfer/linux/CMakeLists.txt index 769ead6..ed11cd3 100644 --- a/example/style_transfer/linux/CMakeLists.txt +++ b/example/style_transfer/linux/CMakeLists.txt @@ -138,7 +138,19 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") COMPONENT Runtime) endif() +# get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.so) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.so) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-linux.so - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_SO} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-linux.so ) \ No newline at end of file diff --git a/example/style_transfer/windows/CMakeLists.txt b/example/style_transfer/windows/CMakeLists.txt index 9d94d52..231fb40 100644 --- a/example/style_transfer/windows/CMakeLists.txt +++ b/example/style_transfer/windows/CMakeLists.txt @@ -102,7 +102,18 @@ install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) # get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.dll) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.dll) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-win.dll - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_DLL} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-win.dll ) \ No newline at end of file diff --git a/example/super_resolution_esrgan/linux/CMakeLists.txt b/example/super_resolution_esrgan/linux/CMakeLists.txt index 436aa68..aef7451 100644 --- a/example/super_resolution_esrgan/linux/CMakeLists.txt +++ b/example/super_resolution_esrgan/linux/CMakeLists.txt @@ -138,7 +138,19 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") COMPONENT Runtime) endif() +# get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.so) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.so) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-linux.so - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_SO} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-linux.so ) \ No newline at end of file diff --git a/example/super_resolution_esrgan/windows/CMakeLists.txt b/example/super_resolution_esrgan/windows/CMakeLists.txt index 4b1beb9..a74f1ff 100644 --- a/example/super_resolution_esrgan/windows/CMakeLists.txt +++ b/example/super_resolution_esrgan/windows/CMakeLists.txt @@ -102,7 +102,18 @@ install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) # get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.dll) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.dll) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-win.dll - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_DLL} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-win.dll ) \ No newline at end of file diff --git a/example/text_classification/linux/CMakeLists.txt b/example/text_classification/linux/CMakeLists.txt index 1a5c5cb..46e112d 100644 --- a/example/text_classification/linux/CMakeLists.txt +++ b/example/text_classification/linux/CMakeLists.txt @@ -138,7 +138,19 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") COMPONENT Runtime) endif() +# get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.so) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_SO ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.so) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-linux.so - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_SO} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-linux.so ) \ No newline at end of file diff --git a/example/text_classification/windows/CMakeLists.txt b/example/text_classification/windows/CMakeLists.txt index 1ecd857..2044c01 100644 --- a/example/text_classification/windows/CMakeLists.txt +++ b/example/text_classification/windows/CMakeLists.txt @@ -102,7 +102,18 @@ install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) # get tf lite binaries +message(STATUS "TF Lite detected processor architecture: ${CMAKE_SYSTEM_PROCESSOR}") +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_arm64.dll) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TF_LITE_DLL ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c_x86.dll) +endif() + install( - FILES ${PROJECT_BUILD_DIR}/../blobs/libtensorflowlite_c-win.dll - DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + FILES + ${TF_LITE_DLL} + DESTINATION + ${INSTALL_BUNDLE_DATA_DIR}/../blobs/ + RENAME + libtensorflowlite_c-win.dll ) \ No newline at end of file