|
| 1 | +# Coco Detection Android Demo |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | +This demo showcases inference of Object Detection network on Android ARM devices using [OpenVINO Java API](https://github.com/openvinotoolkit/openvino_contrib/tree/7239f8201bf18d953298966afd9161cff50b2d38/modules/java_api). |
| 6 | +For inference is used `ssd_mobilenet_v2_coco` object detection model. |
| 7 | + |
| 8 | +## How to run it |
| 9 | + |
| 10 | +### Build the OpenVINO libraries for Android |
| 11 | + |
| 12 | +To build the OpenVINO library for an Android system, please follow these step-by-step [instruction](https://github.com/openvinotoolkit/openvino/blob/master/docs/dev/build_android.md) in full. |
| 13 | +After successful completion, you can move on to the next step. |
| 14 | + |
| 15 | +### Re-build the OpenVINO libraries for Java API |
| 16 | +_Please save the state of the environment variables_ |
| 17 | + |
| 18 | +For more information, please refer to [these instructions](../../java_api/README.md) |
| 19 | + ```sh |
| 20 | + # Clone OpenVINO™ contrib repository |
| 21 | + git clone --recursive https://github.com/openvinotoolkit/openvino_contrib $OPV_HOME_DIR/openvino_contrib |
| 22 | + # Re-configure, created in the previous step, the OpenVINO™ CMake project for Java API |
| 23 | + cmake -S $OPV_HOME_DIR/openvino \ |
| 24 | + -B $OPV_HOME_DIR/openvino-build \ |
| 25 | + -DCMAKE_INSTALL_PREFIX=$OPV_HOME_DIR/openvino-install \ |
| 26 | + -DBUILD_java_api=ON \ |
| 27 | + -DOPENVINO_EXTRA_MODULES=$OPV_HOME_DIR/openvino_contrib/modules/java_api |
| 28 | + # Re-build OpenVINO™ project |
| 29 | + cmake --build $OPV_HOME_DIR/openvino-build --parallel |
| 30 | + # Re-install OpenVINO™ project |
| 31 | + cmake --install $OPV_HOME_DIR/openvino-build |
| 32 | + ``` |
| 33 | + |
| 34 | +### Build the OpenVINO JAVA library for Android |
| 35 | +For more information, please refer to [these instructions](../../java_api/README.md) |
| 36 | + ```sh |
| 37 | + gradle build --project-dir $OPV_HOME_DIR/openvino_contrib/modules/java_api |
| 38 | + ``` |
| 39 | + |
| 40 | +### Preparing a demo to run it |
| 41 | + ```sh |
| 42 | + export ANDROID_DEMO_PATH=$OPV_HOME_DIR/openvino_contrib/modules/android_demos/coco_detection_android_demo |
| 43 | + mkdir -p $ANDROID_DEMO_PATH/app/libs |
| 44 | + cp $OPV_HOME_DIR/openvino_contrib/modules/java_api/build/libs/* $ANDROID_DEMO_PATH/app/libs/ |
| 45 | + |
| 46 | + mkdir -p $ANDROID_DEMO_PATH/app/src/main/jniLibs/arm64-v8a |
| 47 | + cp -r $OPV_HOME_DIR/openvino-install/runtime/lib/aarch64/* $ANDROID_DEMO_PATH/app/src/main/jniLibs/arm64-v8a/ |
| 48 | + cp -r $OPV_HOME_DIR/one-tbb-install/lib/* $ANDROID_DEMO_PATH/app/src/main/jniLibs/arm64-v8a/ |
| 49 | + cp -r $ANDROID_NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so $ANDROID_DEMO_PATH/app/src/main/jniLibs/arm64-v8a/ |
| 50 | + |
| 51 | + wget https://github.com/opencv/opencv/releases/download/4.10.0/opencv-4.10.0-android-sdk.zip --directory-prefix $OPV_HOME_DIR |
| 52 | + unzip $OPV_HOME_DIR/opencv-4.10.0-android-sdk.zip -d $OPV_HOME_DIR |
| 53 | + cp -r $OPV_HOME_DIR/OpenCV-android-sdk/sdk $ANDROID_DEMO_PATH/OpenCV |
| 54 | + ``` |
| 55 | + |
| 56 | +Please rename jar library that project works correct , e.g. |
| 57 | + ```sh |
| 58 | + # Release version can be changed |
| 59 | + mv $ANDROID_DEMO_PATH/app/libs/openvino-2024.2-linux-x86_64.jar $ANDROID_DEMO_PATH/app/libs/openvino-java-api.jar |
| 60 | + ``` |
| 61 | + |
| 62 | +### Download and convert model |
| 63 | +To get a `ssd_mobilenet_v2_coco` model for this demo you should use the Open Model Zoo tools in [these instructions](https://docs.openvino.ai/2024/omz_tools_downloader.html). |
| 64 | + |
| 65 | +### Import demo project on Android Studio |
| 66 | + |
| 67 | +- Choose and download [Android Studio](https://developer.android.com/studio) on your PC. |
| 68 | + |
| 69 | +- Select "File -> Open", and import demo project in `$OPV_HOME_DIR/openvino_contrib/modules/android_demos/coco_detection_android_demo`. |
| 70 | + |
| 71 | +- Build and run demo |
| 72 | + |
| 73 | +> The first time when you run the demo application on your device, your need to grant camera permission. Then run it again. |
| 74 | +
|
| 75 | +> To build the project correctly, you should write in OpenCV `build.gradle` file `kotlinOptions` parameter same as current project's `build.gradle` file |
| 76 | +
|
| 77 | +### Application Output |
| 78 | + |
| 79 | +The demonstration is expected to include real-time inferencing from the camera stream. This means that the system will continuously analyze and process video data from the camera in real-time, providing immediate insights and responses based on the live feed. |
0 commit comments