This is a sample ncnn android project, it depends on ncnn library and opencv

Overview

The yolox object detection

This is a sample ncnn android project, it depends on ncnn library and opencv

https://github.com/Tencent/ncnn

https://github.com/nihui/opencv-mobile

how to build and run

step1

https://github.com/Tencent/ncnn/releases

  • Download ncnn-YYYYMMDD-android-vulkan.zip or build ncnn for android yourself
  • Extract ncnn-YYYYMMDD-android-vulkan.zip into app/src/main/jni and change the ncnn_DIR path to yours in app/src/main/jni/CMakeLists.txt

step2

https://github.com/nihui/opencv-mobile

  • Download opencv-mobile-XYZ-android.zip
  • Extract opencv-mobile-XYZ-android.zip into app/src/main/jni and change the OpenCV_DIR path to yours in app/src/main/jni/CMakeLists.txt

step3

  • Open this project with Android Studio, build it and enjoy!

some notes

  • Android ndk camera is used for best efficiency
  • Crash may happen on very old devices for lacking HAL3 camera interface
  • All models are manually modified to accept dynamic input shape
  • Most small models run slower on GPU than on CPU, this is common
  • FPS may be lower in dark environment because of longer camera exposure time

screenshot

reference

https://github.com/nihui/ncnn-android-nanodet
https://github.com/Megvii-BaseDetection/YOLOX

Comments
  • Question about ncnnoptimize model.param model.bin yolox.param yolox.bin 65536

    Question about ncnnoptimize model.param model.bin yolox.param yolox.bin 65536

    In: https://github.com/Megvii-BaseDetection/YOLOX/tree/main/demo/ncnn/cpp

    Step 5:

    suppose you are still under ncnn/build/tools/ncnn dir. ../ncnnoptimize model.param model.bin yolox.param yolox.bin 65536

    Suppose I trained a new customed model, how to adjust parameter (65536)? Thanks a lot.

    opened by liminghu 2
  • 在on_image_render函数下对图像rgb进行灰度化,结果会导致手机上闪退

    在on_image_render函数下对图像rgb进行灰度化,结果会导致手机上闪退

    具体代码

    void MyNdkCamera::on_image_render(cv::Mat& rgb) const
    {
        if (rgb.empty())
            return;
        cv::Mat src = rgb.clone();
        cv::Mat matGray;
        cv::cvtColor(src, matGray, CV_RGB2GRAY);
        {
            ncnn::MutexLockGuard g(lock);
            if (g_yolox)
            {
                std::vector<Object> objects;
                g_yolox->detect(rgb, objects);
                g_yolox->draw(rgb, objects);
            }
            else
            {
                draw_unsupported(rgb);
            }
        }
        draw_fps(rgb);
    }
    

    进行debug,具体报错

    `

    E/cv::error(): OpenCV(4.5.3) Error: Requested object was not found (could not open directory: /data/app/com.tencent.ncnnyolox-tvY0PkV6XrQyBx4J6SbZxw==/base.apk!/lib/arm64-v8a) in glob_rec, file /home/runner/work/opencv-mobile/opencv-mobile/opencv-4.5.3/modules/core/src/glob.cpp, line 273
    A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 975 (ImageReader-640), pid 32479 (ncent.ncnnyolox)
    

    `

    opened by meixiansen 0
  • 在on_image_render函数下增加对输入图像rgb进行灰度化,结果会导致手机上闪退

    在on_image_render函数下增加对输入图像rgb进行灰度化,结果会导致手机上闪退

    具体代码 `void MyNdkCamera::on_image_render(cv::Mat& rgb) const { if (rgb.empty()) return; cv::Mat src = rgb.clone(); cv::Mat matGray; cv::cvtColor(src, matGray, CV_RGB2GRAY); // nanodet { ncnn::MutexLockGuard g(lock);

        if (g_yolox)
        {
            std::vector<Object> objects;
            g_yolox->detect(rgb, objects);
    
            g_yolox->draw(rgb, objects);
        }
        else
        {
            draw_unsupported(rgb);
        }
    }
    
    draw_fps(rgb);
    

    }进行debug,具体报错E/cv::error(): OpenCV(4.5.3) Error: Requested object was not found (could not open directory: /data/app/com.tencent.ncnnyolox-tvY0PkV6XrQyBx4J6SbZxw==/base.apk!/lib/arm64-v8a) in glob_rec, file /home/runner/work/opencv-mobile/opencv-mobile/opencv-4.5.3/modules/core/src/glob.cpp, line 273 A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 975 (ImageReader-640), pid 32479 (ncent.ncnnyolox)`

    opened by meixiansen 0
  • ninja: build stopped: subcommand failed.

    ninja: build stopped: subcommand failed.

    Build command failed. Error while executing process D:\android with arguments {skd\cmake\3.10.2.4988404\bin\ninja.exe -C F:\ncnn-android-yolox-main\ncnn-android-yolox-main\app.cxx\cmake\debug\arm64-v8a ncnnyolox} ninja: Entering directory `F:\ncnn-android-yolox-main\ncnn-android-yolox-main\app.cxx\cmake\debug\arm64-v8a' [1/1] Linking CXX shared library F:\ncnn-android-yolox-main\ncnn-android-yolox-main\app\build\intermediates\cmake\debug\obj\arm64-v8a\libncnnyolox.so FAILED: F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/build/intermediates/cmake/debug/obj/arm64-v8a/libncnnyolox.so cmd.exe /C "cd . && "D:\android skd\ndk\20.1.5948944\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe" --target=aarch64-none-linux-android24 --gcc-toolchain="D:/android skd/ndk/20.1.5948944/toolchains/llvm/prebuilt/windows-x86_64" --sysroot="D:/android skd/ndk/20.1.5948944/toolchains/llvm/prebuilt/windows-x86_64/sysroot" -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fno-experimental-isel -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -shared -Wl,-soname,libncnnyolox.so -o F:\ncnn-android-yolox-main\ncnn-android-yolox-main\app\build\intermediates\cmake\debug\obj\arm64-v8a\libncnnyolox.so CMakeFiles/ncnnyolox.dir/yoloxncnn.cpp.o CMakeFiles/ncnnyolox.dir/yolox.cpp.o CMakeFiles/ncnnyolox.dir/ndkcamera.cpp.o F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/src/main/jni/ncnn-20221128-android-vulkan/arm64-v8a/lib/libncnn.a F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/src/main/jni/opencv-mobile-4.6.0-android/sdk/native/staticlibs/arm64-v8a/libopencv_core.a F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/src/main/jni/opencv-mobile-4.6.0-android/sdk/native/staticlibs/arm64-v8a/libopencv_imgproc.a -lcamera2ndk -lmediandk -fopenmp -static-openmp -Wl,-wrap,__kmp_affinity_determine_capable "D:/android skd/ndk/20.1.5948944/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/24/libvulkan.so" F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/src/main/jni/ncnn-20221128-android-vulkan/arm64-v8a/lib/libglslang.a F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/src/main/jni/ncnn-20221128-android-vulkan/arm64-v8a/lib/libSPIRV.a F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/src/main/jni/ncnn-20221128-android-vulkan/arm64-v8a/lib/libMachineIndependent.a F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/src/main/jni/ncnn-20221128-android-vulkan/arm64-v8a/lib/libOGLCompiler.a F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/src/main/jni/ncnn-20221128-android-vulkan/arm64-v8a/lib/libOSDependent.a -pthread F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/src/main/jni/ncnn-20221128-android-vulkan/arm64-v8a/lib/libGenericCodeGen.a -landroid -ljnigraphics F:/ncnn-android-yolox-main/ncnn-android-yolox-main/app/src/main/jni/opencv-mobile-4.6.0-android/sdk/native/staticlibs/arm64-v8a/libopencv_core.a -ldl -lm -llog -latomic -lm && cd ." clang++: error: unknown argument: '-static-openmp' ninja: build stopped: subcommand failed. 我在下手机时候 出现了这个问题 请问 是什么原因呢,求大佬解答

    opened by maziyi234 0
  • YOLOX sluggish on GPU

    YOLOX sluggish on GPU

    Hey, I've a problem with GPU on newer devices like s20, poco x3 pro, etc. models: nano, tiny and s are faster on a CPU than on the GPU. On GPU models work slower (about 30-40%) and sometimes get sluggish (droping to 3 fps when on CPU I've got 15).

    opened by HyperScypion 0
  • ncnn-20210720-android-vulkan 编译出错

    ncnn-20210720-android-vulkan 编译出错

    下载ncnn-YYYYMMDD-android-vulkan.zip和下载opencv-mobile-XYZ-android.zip在ncnn-android-yolox项目中,编译后,opencv没问题,就是ncnn报错

    cmake的设置如此,几乎没有改动,出现这个错误,找不到ncnn的线程,文件的目录如下,要改改,麻烦告知,谢谢 1633694752 1633694766(1) 1633694784(1)

    opened by chenmingguo 1
Owner
null
RealSR-NCNN-Android is a simple Android application that based on Realsr-NCNN & Real-ESRGAN.

RealSR-NCNN-Android Real-ESRGAN is a Practical Algorithms for General Image Restoration. RealSR-NCNN-Android is a simple Android application that base

null 272 Jan 3, 2023
Helper Class for Deep Learning Inference Frameworks: TensorFlow Lite, TensorRT, OpenCV, ncnn, MNN, SNPE, Arm NN, NNAbla

InferenceHelper This is a helper class for deep learning frameworks especially for inference This class provides an interface to use various deep lear

iwatake 192 Dec 26, 2022
GFPGAN-ncnn - a naive NCNN implementation of GFPGAN aims at developing Practical Algorithms for Real-world Face Restoration

GFPGAN-ncnn a naive ncnn implementation of GFPGAN aims at developing Practical Algorithms for Real-world Face Restoration model support: 1.GFPGANClean

FeiGeChuanShu 42 Dec 10, 2022
Android hand detect and pose estimation by ncnn

ncnn_nanodet_hand 1.hand detect:用nanode-m训练了个hand detect模型, 2.hand pose:用CMU的数据集训练了个ghostnet作为backbone模仿pfld的handpose模型 3.推理:handpose.cpp单独检测pose,nano

null 80 Jan 3, 2023
Android face detect and segmentation by ncnn

Android face detect and segmentation by ncnn

null 118 Dec 29, 2022
Android hair/human segmentation demo by ncnn

ncnn_Android_human Android hair/human segmentation demo by ncnn PS:performance maybe poor.it's just a demo:) Reference: 1.https://github.com/Tencent/n

null 23 May 23, 2022
Android yolox hand detect by ncnn

The yolox hand detection This is a sample ncnn android project, it depends on ncnn library and opencv https://github.com/Tencent/ncnn https://github.c

FeiGeChuanShu 14 Sep 7, 2022
Android MoveNet pose estimation by ncnn

ncnn_Android_MoveNet Android MoveNet single human pose estimation by ncnn this project is a ncnn Android demo for MoveNet, it depends on ncnn library

FeiGeChuanShu 93 Dec 31, 2022
PiDiNet running in Android by ncnn

PiDiNet-NCNN 使用NCNN在安卓上实现PiDiNet这个边缘检测网络。 什么是PiDiNet?指南针:https://github.com/zhuoinoulu/pidinet 文件构成 ncnn-android-nanodet是基于nihui的nanodet项目魔改的,被我改成了运行P

WuJinxuan 9 Dec 13, 2022
monodepth running in Android by ncnn

monodepth-NCNN 将wavelet-monodepth的模型搬运到NCNN上,工程里面给了安卓的工程以及以及生成好的app安装包 wavelet-monodepth wavelet-monodepth:RGB图像的深度估计,wavelet顾名思义,就使用了小波变换的,官方的工程在这:ht

WuJinxuan 14 Aug 13, 2022
YOLOP running in Android by ncnn

YOLOP-NCNN 将YOLOP的模型搬运到NCNN上,工程里面给了windows下的VS测试以及安卓实现 YOLOP YOLOP:车辆检测+路面分割+车道线分割 三合一的网络,基于YOLO系列设计的,官方的工程在这:https://github.com/hustvl/YOLOP 工程细节 VS2

WuJinxuan 34 Dec 28, 2022
Android demo of LightTrack infer by ncnn

ncnn_Android_LightTrack this project is a ncnn Android demo for LightTrack, it depends on ncnn library and opencv. https://github.com/Tencent/ncnn htt

FeiGeChuanShu 21 Dec 14, 2022
Android CrowdCounting demo infer by ncnn

ncnn_Android_CrowdCounting This is a sample CrowdCounting Android demo infer by ncnn, it depends on ncnn library and opencv https://github.com/Tencent

FeiGeChuanShu 10 Jul 2, 2022
ncnn Android demo of PP-TinyPose

ncnn_Android_PP-TinyPose ncnn Android demo of PP-TinyPose this project is a ncnn Android demo for PP-TinyPose, it depends on ncnn library and opencv.

FeiGeChuanShu 20 Nov 25, 2022
Android human segmentation by ncnn

ncnn_Android_human_segmentation this project is a ncnn Android demo for RobustVideoMatting, it depends on ncnn library and opencv. https://github.com/

FeiGeChuanShu 111 Nov 30, 2022
M-LSD Android demo infer by ncnn

ncnn_Android_mlsd The Android demo of M-LSD: Towards Light-weight and Real-time Line Segment Detection This is a sample ncnn android project, it depen

FeiGeChuanShu 17 Jun 22, 2022
Depoly yolov5.ncnn in android.

Deploy yolov5.ncnn(v6.0) in android 测试效果 如何构建? 1. 下载 Android studio Android studio 下载地址: https://developer.android.com/studio 2. git clone 项目构建 Androi

yangcheng 10 Dec 25, 2022
Mixed reality VR laser tag using Oculus Quest 2 and OAK-D depth cameras. First prize winner for North America region in OpenCV AI Competition 2021.

Mixed Reality Laser Tag Copyright 2021 Bart Trzynadlowski Overview This is the source code to my Mixed Reality Laser Tag project, which won first priz

null 34 Jun 3, 2022
Example of using ultralytics YOLO V5 with OpenCV 4.5.4, C++ and Python

yolov5-opencv-cpp-python Example of performing inference with ultralytics YOLO V5, OpenCV 4.5.4 DNN, C++ and Python Looking for YOLO V4 OpenCV C++/Pyt

null 183 Jan 9, 2023