Week 21 progress

During the past week, I began preparing to build the AGL image that includes both cam-infer-models and camera-streams-app recipes.

Merge the CI Job

I merged PR #2, which introduces the TensorFlow Lite environment, along with a CI the job for setting up that environment and the scripts for loading the ssd-mobilenet-v1 model and performing detection. The section for building the TensorFlow Lite inside the CI workflow cam_tflite_infer.yaml looks like this:

- name: Cache tensorflow
  id: cache-tensorflow
  uses: actions/cache@v4
  with:
    key: tensorflow
    path: |
      $/build/staging

- name: Build tensorflow
  if: steps.cache-tensorflow.outputs.cache-hit != 'true'
  working-directory: $
  run: |
    mkdir -p $/build/tensorflow
    CC=/usr/bin/clang CXX=/usr/bin/clang++ \
    cmake \
      -S $/third_party/tensorflow/tensorflow/lite \
      -B $/build/tensorflow \
      -G Ninja \
      -D TFLITE_ENABLE_GPU=ON \
      -D TFLITE_ENABLE_XNNPACK=ON \
      -D BUILD_SHARED_LIBS=ON \
      -D FETCHCONTENT_FULLY_DISCONNECTED=OFF \
      -D CMAKE_C_COMPILER=/usr/bin/clang \
      -D CMAKE_CXX_COMPILER=/usr/bin/clang++ \
      -D CMAKE_STAGING_PREFIX=$/build/staging \
      -D ABSL_PROPAGATE_CXX_STD=ON \
      -D CMAKE_POLICY_DEFAULT_CMP0135=NEW \
      -D CMAKE_PREFIX_PATH=$/build/staging

    ninja -C $/build/tensorflow -j 30

Prepare the repos for the AGL Yocto image

My GSoC mentor Joel performed a code refactoring focused mainly on the CMakeLists structure, scripts organization, removal of unnecessary submodules for the AGL image, and fixing minor coding issues. The refactoring code is hosted on the fork jw/cmake-refactor and opened as PR #3. I reviewed the PR and committed some additional changes for the AGL image, which include:

  1. Adding LICENSE file for the 3 repositories (including camera_idl)
  2. Updating the build.sh script of camera_idl to generates protobuf for the gRPC
  3. Remove dead code of camera-streams-app, using flutter_analyze to check linting issues and modifying pubspec.yaml
  4. Fixing a typo and testing the current setup of cam-infer-models

Start the AGL image build

I started building the AGL image using agl-ivi-image as a base. I added the recipes to meta-agl-demo/recipes-demo and the build process is ongoing. My GSoC mentors Joel and Jan-Simon have been extremely helpful in preparing the recipes and debugging the build process.

Next steps

  1. Complete building the Yocto image
  2. Research and retrain the current ssd-mobilenet-v1 for better performance