Skip to content

basysKom/qmlmobilenet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QMLMobileNet

This project showcases how to set up a Qt5/QtQuick application for object detection using Tensorflow Lite (TFLite).

QML Object Detection


Requirements

This project needs Qt 5.15

Build Instructions

Step 1: Clone the Dependencies

git submodule update --init

Step 2: Download the Model and Label Files

Download the Model File

The model file can be downloaded from Kaggle:
SSD MobileNet V1 TFLite Model
Extract the downloaded .tar archive and rename the model file to:
ssd_mobilenet_v1_1_metadata_1.tflite

Download the Labels File

The labels file from the COCO dataset can be downloaded from:
COCO Labels

Move Files

Place both files (ssd_mobilenet_v1_1_metadata_1.tflite and coco_labels.txt) into the model/ directory.

Step 3: Fix TensorFlow Lite Build Issues

Building TensorFlow Lite does not work out of the box. Follow these steps to resolve the issues:

1. Update the CMakeLists.txt File

Open the file:
3rdparty/tensorflow/tensorflow/lite/CMakeLists.txt
Replace all occurrences of ${PROJECT_SOURCE_DIR} with ${CMAKE_SOURCE_DIR}.

2. Include Benchmark Sources in TFLITE_BENCHMARK_SRCS

Locate the following lines in the file and move them before the add_library(tensorflow ...) line:

# Move these lines to the top
list(APPEND TFLITE_BENCHMARK_SRCS
  ${TF_SOURCE_DIR}/core/util/stats_calculator.cc
  ${TFLITE_SOURCE_DIR}/profiling/memory_info.cc
  ${TFLITE_SOURCE_DIR}/profiling/platform_profiler.cc
  ${TFLITE_SOURCE_DIR}/profiling/profile_summarizer.cc
  ${TFLITE_SOURCE_DIR}/profiling/profile_summary_formatter.cc
  ${TFLITE_SOURCE_DIR}/profiling/time.cc
  ${TFLITE_SOURCE_DIR}/tools/command_line_flags.cc
  ${TFLITE_SOURCE_DIR}/tools/delegates/default_execution_provider.cc
  ${TFLITE_SOURCE_DIR}/tools/evaluation/utils.cc
  ${TFLITE_SOURCE_DIR}/tools/optimize/sparsity/format_converter.cc
  ${TFLITE_SOURCE_DIR}/tools/tool_params.cc
)

3. Add TFLITE_BENCHMARK_SRCS to tensorflowlite Target

Ensure the tensorflowlite library includes TFLITE_BENCHMARK_SRCS. Update the add_library command as follows:

add_library(tensorflowlite
  ${TFLITE_CORE_API_SRCS}
  ${TFLITE_CORE_SRCS}
  ${TFLITE_C_SRCS}
  ${TFLITE_DELEGATES_FLEX_SRCS}
  ${TFLITE_DELEGATES_NNAPI_SRCS}
  ${TFLITE_DELEGATES_SRCS}
  ${TFLITE_DELEGATES_XNNPACK_SRCS}
  ${TFLITE_EXPERIMENTAL_RESOURCE_SRCS}
  ${TFLITE_EXPERIMENTAL_RUY_PROFILER_SRCS}
  ${TFLITE_EXPERIMENTAL_RUY_SRCS}
  ${TFLITE_KERNEL_INTERNAL_OPT_INTEGER_OPS_SRCS}
  ${TFLITE_KERNEL_INTERNAL_OPT_SPARSE_OPS_SRCS}
  ${TFLITE_KERNEL_INTERNAL_OPT_SRCS}
  ${TFLITE_KERNEL_INTERNAL_REF_INTEGER_OPS_SRCS}
  ${TFLITE_KERNEL_INTERNAL_REF_SPARSE_OPS_SRCS}
  ${TFLITE_KERNEL_INTERNAL_REF_SRCS}
  ${TFLITE_KERNEL_INTERNAL_SRCS}
  ${TFLITE_KERNEL_SRCS}
  ${TFLITE_NNAPI_SRCS}
  ${TFLITE_SRCS}
  ${TFLITE_BENCHMARK_SRCS}
)

4. Disable XNNPACK

Locate the XNNPACK option in the CMakeLists.txt file and set it to OFF:

option(TFLITE_ENABLE_XNNPACK "Enable XNNPACK backend" OFF)

Step 4: Configure and Build the Project

  1. Create and navigate to the build directory:
mkdir build && cd build
  1. Configure the project
cmake -DCMAKE_PREFIX_PATH=~/PATH/TO/Qt5.15/gcc_64/ ..
  1. Build the project:
make

Step 5: Fix Compilation Errors (If Any)

1. Missing <limits> Header
If you encounter an error in graphcycles.cc, add the following line to the include list in abseil-cpp/absl/synchronization/internal/graphcycles.cc:

#include <limits>

2. FarmHash Errors
Apply the following patches if errors occur while compiling FarmHash:

Now everything should compile properly.

License

This project is released under the GPLv3.0-or-later License.

About

QML/Qt Quick with Tensorflow Lite

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published