├── FAQ.md └── README.md /FAQ.md: -------------------------------------------------------------------------------- 1 | # ncnn 小白常见问题整理 2 | 3 | ## 常见问题1. rtti/exceptions冲突 4 | 5 | 在Android NDK(JNI)代码中遇到报错`error: use of typeid requires -frtti` 6 | 7 | 原因:ncnn的android预编译包的编译选项中,禁用了`rtti`(同时还禁用了`exceptions`),而OpenCV的android预编译包开启了`rtti`和`exceptions`(这是在NDK的toolchains.cmake中默认开启的);当两个(或多个)库的rtti、exceptions编译选项设定不同时,会导致冲突,需要统一。 8 | 9 | P.S.为什么ncnn预编译包要关掉rtti和exceptions:大概是为了减小包的大小 10 | 11 | P.S.怎样统一ncnn和opencv的android库里头的rtti和exceptions?提供几种方案,任选其一,难度从低到高: 12 | 13 | **方法1:用opencv-mobile库替代opencv anroid库** 14 | 15 | 不用opencv官方的预编译android库,用 https://github.com/nihui/opencv-mobile/releases 16 | 17 | **方法2:重编ncnn,编译时开启rtti、exceptions** 18 | 19 | 基于cmake和ninja,自行编译ncnn的android库,编译时注意: 20 | - 去掉`-g`参数以减小库体积:打开`$ANDROID_NDK/build/cmake/android.toolchain.cmake` 21 | ``` 22 | # 删除 "-g" 这行 23 | list(APPEND ANDROID_COMPILER_FLAGS 24 | -g 25 | -DANDROID 26 | ``` 27 | 28 | - 在命令行(或CMake-GUI)里,用cmake构建,构建时传入`-DNCNN_DISABLE_EXCEPTION=OFF -DNCNN_DISABLE_RTTI=OFF`;如果先前构建过,请清理build/CMakeCache.txt;不要在Android Studio里构建ncnn库,因为很可能你的rtti和exceptions还是弄错 29 | 30 | - 如果你不会cmake,请去学习,这非常基础 31 | 32 | **方法3:不用opencv** 33 | 34 | ## 常见问题2. 编ncnn时protobuf报错/版本错? 35 | 36 | 当编译 ncnn 时,我们从 cmake 构建的角度去看,ncnn 这个开源项目有多个构建目标,包括: 37 | - ncnn 库本身;它不依赖protobuf,也不依赖opencv 38 | - ncnn 转换工具,例如 caffe2ncnn, mxnet2ncnn, darknet2ncnn, onnx2ncnn, keras2ncnn, mlir2ncnn等;其中 caffe2ncnn 和 onnx2ncnn 依赖 protobuf 库 39 | - ncnn 例子,包括 squeezenet,yolov5, nanodet 等,都依赖opencv 40 | 41 | 如果你遇到 protobuf 找不到或版本错误等问题,可以考虑跳过,因为 https://convertmodel.com 这个网站提供了一站式的各种常见CNN推理库的模型转换工具的本地在线版,直接使用即可。 42 | 43 | 简单解释下什么是“本地在线版”:它是基于WebAssembly(wasm)实现的一个网页,当你上传模型文件时,实际上是在本地执行的转换;或者说,当你访问 https://convertmodel.com 后,断网,然后用这个网页,依然是能转换的;因此不必担心模型被上传到外网的风险。 44 | 45 | 46 | P.S. 如果用 https://convertmodel.com 这个网站转换,发现报错,请在 ncnn卷卷群里 @大缺弦 ,他是这个网站的作者;或 @nihui ,他是 ncnn 作者。 47 | 48 | 49 | ## 常见问题3. 怎样添加ncnn库到项目中?cmake方式怎么用? 50 | 51 | 基于cmake,在CMakeLists.txt里写这几句: 52 | ```cmake 53 | set(ncnn_DIR "/lib/cmake/ncnn" CACHE PATH "Directory that contains ncnnConfig.cmake") 54 | find_package(ncnn REQUIRED) 55 | target_link_libraries(my_target ncnn) 56 | ``` 57 | 其中 `ncnn_DIR`是包含`ncnnConfig.cmake`的目录;如果你的ncnn是手动编译的,在Linux/Mac下请先执行make install,`ncnn_install_dir`此时对应 `build/install` 目录。 58 | 59 | ## 常见问题4. 找不到OpenCV?OpenCV_DIR设成什么? 60 | 61 | 在自己的项目中使用到 opencv;或者是在ncnn的项目中希望跑通example例子,需要正确的找到opencv。cmake方式,是设定`OpenCV_DIR`,它的指,是包含`OpenCVConfig.cmake`的目录:注意请自行检查这个目录,而不是草率的设定为“OpenCV安装的根目录”,因为在Linux/Windows/Mac/Android下,这个目录不一样。 62 | 63 | 例如本人的常用设定模板: 64 | ```cmake 65 | if (CMAKE_HOST_SYSTEM_NAME MATCHES "Linux") 66 | if (CMAKE_SYSTEM_NAME MATCHES "Linux") 67 | #set(OpenCV_DIR "/home/zz/soft/opencv-4.5.1/lib/cmake/opencv4" CACHE PATH "") # shared 68 | set(OpenCV_DIR "/home/zz/soft/opencv-4.5.1-static/lib/cmake/opencv4" CACHE PATH "") # static 69 | elseif (ANDROID) 70 | set(OpenCV_DIR "/home/zz/soft/opencv-4.5.1-android/sdk/native/jni" CACHE PATH "") 71 | endif() 72 | elseif (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") 73 | if (CMAKE_SYSTEM_NAME MATCHES "Windows") 74 | #set(OpenCV_DIR "E:/lib/opencv/4.5.0" CACHE PATH "") 75 | set(OpenCV_DIR "E:/lib/opencv/4.5.2-pre" CACHE PATH "") 76 | elseif (ANDROID) 77 | set(OpenCV_DIR "E:/soft/Android/opencv-4.5.0-android-sdk/sdk/native/jni" CACHE PATH "") 78 | endif() 79 | elseif (CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin") 80 | if (CMAKE_SYSTEM_NAME MATCHES "Darwin") 81 | set(OpenCV_DIR "/usr/local/opencv-4.2/lib/cmake/opencv4" CACHE PATH "") 82 | elseif (ANDROID) 83 | set(OpenCV_DIR "/Users/chris/soft/opencv-4.5.0-android-sdk/sdk/native/jni" CACHE PATH "") 84 | endif() 85 | endif() 86 | find_package(OpenCV REQUIRED) 87 | target_link_libraries(testbed ${OpenCV_LIBS}) 88 | ``` 89 | 90 | ## 常见问题5. 为啥自己编译的ncnn android库特别大? 91 | 92 | 很可能是没有去掉`-g`导致的。 93 | 94 | 基于cmake和ninja,自行编译ncnn的android库,编译时注意: 95 | - 去掉`-g`参数以减小库体积:打开`$ANDROID_NDK/build/cmake/android.toolchain.cmake` 96 | ``` 97 | # 删除 "-g" 这行 98 | list(APPEND ANDROID_COMPILER_FLAGS 99 | -g 100 | -DANDROID 101 | ``` 102 | 103 | ## 常见问题6. undefined reference to `glslang::FinalizeProcess()' 104 | 使用ncnn vulkan库时遇到报错例如: 105 | ``` 106 | /hone/inxsuno/inx-yocto-bsp/inx6qp/task/ncnn_inx8_build/install/lib/Libncnn.a(gpu.cpp.o): In function 'ncn::destroy 107 | _gpu_instance() ': 108 | gpu.cpp:(.text+0xfb8): undefined reference to 'glslang::FinalizeProcess() ' 109 | /hone/inxsuno/inx-yocto-bsp/inx6qp/task/ncnn_imx8 butid/instal/ltb/l.tbncn .a(gpu.cpp.o): In function 'ncm:create gpu_instance() pu.cpp:(.text+0x39a0): undefined reference to 'glslang::InitializeProcess()' 110 | /hone/inxsuno/inx -ycto-bsp/in;oqp/task /ncm inmv8 buildjinstal/Lib/litncm.a(gpu.pp.o): In fucion ‘ncnm:comple spitv ole(char cost,in , nmn1 .oprto coste,cator >&) ': 111 | gpu.cpp:(.text+Ox78b4): undefined reference to 'glslang::TShader : :TShader(EShLanguage)' 112 | gpu.cpp:(.text+×78c8): undefined reference to glslang::TShader:.setstringswithLengths(char const* const*,int const*,int)" 113 | Spu.cpp;(.text-+8x7B8dc): undefined reference to 'glslang Tshader :.dProcsses(std:.vectorsty:_co1:basic string chr ,tti.xchar_traitschar ,.sthallacatorcharpic_string, std::allocator > > > const&)' 114 | gpu.cpp:(.text+0x78ec): undefined reference to 'glslang:: TShader ::setEntryPoint(char const*)' 115 | gpu.cpp:( . text+0x78f8): undefined reference to 'glslang::TShader::setSourceEntryPoint(char const*)' 116 | gpu.cpp:(.text+0x7a8c): undefined reference to ‘glslang::TShader ::.parse( TBuiltInResource const*,int,EProfile, boo 117 | , bool,EShMessages, glslang : : TShader : : Includer&)' 118 | gpu.cpp:(.text+0x7ad4): undefined reference to `glslang:: TShader ::getInfoLog()' 119 | pu.cpp:(.text+Ox7afc): undefined reference to 'glslang::TShader ::getInfoDebugLog()'gpu.cpp:(.text+0x7b20): undefined reference to `glslang::TShader::~TShader() ' 120 | Jpu.gp:(.text+6x84f4): undefined reference to ‘glslang;clslangTosp(glslng.e TIntenediate cost& lstt.wecoransigned nt, stir:alloctoransigned int >, glslag:gpu.cpp:(.text+0x8500): undefined reference to 'glslang:: TShader :~TShader()' 121 | pu.cpp:(.text+0x9618): undefined reference to 'glslang::TShader : :~TShader()'collect2 : error : ld returned 1.exit status 122 | nake[2]:***[TEST_PIPLINE]错误1 123 | ake[1j:***[CMakeFiles /TEST_PIPLINE.dir/all]错误﹖ 124 | ``` 125 | 126 | 错误的写法: 127 | ```cmake 128 | set(NCC_INCLUDE_DIRS /home/imxsumo/imx-yocto-bsp/imx6qp/task/ncnn_imx8_build/install/include/ncnn) 129 | 130 | target_link_libraries(TEST_PIPLINE glslang MachineIndependent SPIRV ncnn ${OpenCV_LIBS} ${FT_LIBS} pthread g2d gomp vulkan) 131 | ``` 132 | 133 | 134 | 原因:CMakeLists.txt中,自行手动指定的ncnn静态库,以及vulkan相关的glslang库等,但顺序没弄对。 135 | 136 | 解决方法:`find_package(ncnn)`,它会自动设定正确的链接库及其顺序 137 | ``` 138 | set(ncnn_DIR "/lib/cmake/ncnn" CACHE PATH "Directory that contains ncnnConfig.cmake") 139 | find_package(ncnn REQUIRED) 140 | target_link_libraries(my_target ncnn) 141 | ``` 142 | 143 | ## 常见问题7. up主用的什么系统/编辑器? 144 | 145 | - 系统:Fedora 146 | - 编辑器:Kate 147 | - 桌面:KDE 148 | - 画草图:kolourpaint 149 | - 画函数图像:kmplot 150 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome-NCNN 2 | 3 | [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 4 | 5 | [ncnn](https://github.com/tencent/ncnn) is a high-performance neural network inference framework optimized for the mobile platform. [This repo](https://github.com/zchrissirhcz/awesome-ncnn) lists some awesome ncnn-based projects. Welcome Star & Fork & Pull Requests! 6 | 7 | [ncnn](https://github.com/tencent/ncnn) 是一个为手机端极致优化的高性能神经网络前向计算框架。[本仓库](https://github.com/zchrissirhcz/awesome-ncnn) 收集了基于ncnn的很棒的项目。欢迎 Star & Fork & Pull Request 一键三连! 8 | 9 | ## Contents 10 | - [Awesome-NCNN](#awesome-ncnn) 11 | - [Contents](#contents) 12 | - [Application projects](#application-projects) 13 | - [Fancy Applications](#fancy-applications) 14 | - [Detection](#detection) 15 | - [Super Resolution](#super-resolution) 16 | - [Video Frame Interpolation](#video-frame-interpolation) 17 | - [Pose Estimation](#pose-estimation) 18 | - [Segmentation](#segmentation) 19 | - [Wasm](#wasm) 20 | - [Other](#other) 21 | - [Tools](#tools) 22 | - [Wrappers](#wrappers) 23 | - [Optimization](#optimization) 24 | - [Training](#training) 25 | - [Source Analysis](#source-analysis) 26 | ## Application projects 27 | 28 | ### Fancy Applications 29 | - [ClothingTransfer-NCNN](https://github.com/EdVince/ClothingTransfer-NCNN) ClothingTransfer/Virtual-Try-On with ncnn. 基于ncnn的服装迁移/虚拟试穿 30 | 31 | ### Detection 32 | 33 | General object detection, face detection (and landmark) projects on Android platform. 34 | 35 | - [ncnn-android-yolox](https://github.com/FeiGeChuanShu/ncnn-android-yolox) YOLOX detection android demo based on NCNN. 36 | 37 | - [ncnn-android-nanodet](https://github.com/nihui/ncnn-android-nanodet) NanoDet object detection android project with Android ndk camera for best efficiency. Tutorial: [android camera nanodet 实时物体检测的高效实现总结](https://zhuanlan.zhihu.com/p/356991989) 38 | 39 | - [thundernet_ncnn](https://github.com/DayBreak-u/thundernet_ncnn) The C++ version of thundernet with ncnn. 40 | 41 | - [ncnn_nanodet_hand](https://github.com/FeiGeChuanShu/ncnn_nanodet_hand) Hand detection on android platform with ncnn (安卓平台人手检测) 42 | 43 | - [RobotVision2](https://github.com/hzq-zjm/RobotVision2) Real-time fatigue driving detection on the mobile platform (移动端实时疲劳驾驶检测) 44 | 45 | - [hayoou_safe_driving_android](https://github.com/youkpan/hayoou_safe_driving_android) Lane detection (with FCW and LDW) android demo based on Yolov4 and Ultra fast lane detection, runs at 8 fps on HONOR 20PRO Kirin 980 phone. 46 | 47 | - [nanodet](https://github.com/RangiLyu/nanodet) NanoDet, a Super fast and lightweight anchor-free object detection model. 🔥Only 1.8mb and run 97FPS on cellphone, with training and NCNN based inference inside. 48 | 49 | - [YOLOv5_NCNN by WZTENG](https://github.com/WZTENG/YOLOv5_NCNN) Android/iOS camera preview with YOLOv5 (移动端目标检测,当前项目使用的是YOLOv5的5s模型,摄像头实时捕获视频流进行检测) 50 | 51 | - [Face-Mask-Detection-Raspberry-Pi-64-bits](https://github.com/Qengineering/Face-Mask-Detection-Raspberry-Pi-64-bits) Face mask detection on Rasberry Pi (树莓派上的口罩检测) 52 | 53 | - [YOLOV5_NCNN_Android by sunnyden](https://github.com/sunnyden/YOLOV5_NCNN_Android) YOLOv5 NCNN implementation on Android platform. 54 | 55 | - [PFLD-pytorch](https://github.com/polarisZhao/PFLD-pytorch) Practical Facial Landmark Detector with PyTorch and NCNN implementation. (PFLD pytorch Implementation ,自带 ncnn 推理实现) 56 | 57 | - [LFFD-with-ncnn](https://github.com/SyGoing/LFFD-with-ncnn) LFFD ( A Light and Fast Face Detector for Edge Devices )'s implementation in NCNN. 58 | 59 | - [Iris_Landmarks_PyTorch](https://github.com/ItchyHiker/Iris_Landmarks_PyTorch) Iris landmarks localization 瞳孔定位,有转ncnn模型脚本 60 | 61 | - [ncnn-android-ultraface](https://github.com/oaup/ncnn-android-ultraface) ultraface android project 62 | 63 | - [DBface_ncnn_demo](https://github.com/yuanluw/DBface_ncnn_demo) dbface ncnn 人脸检测 64 | 65 | - [darknet_face_with_landmark](https://github.com/ouyanghuiyu/darknet_face_with_landmark) 借鉴AlexeyAB大神的 darknet 做适量修改,用于人脸检测以及关键点检测,支持ncnn推理 66 | 67 | - [ncnn_android_face_vehicle](https://github.com/791136190/ncnn_android_face_vehicle) ncnn在Android的一个测试,包含了人脸检测(face detection),人脸属性(face attributes),人脸识别(face recognition);车辆检测(Vehicle detection),车牌检测(plate detection),车牌识别(plate recognition);人头检测(head detection)的流程 68 | 69 | - [centernet_ncnn](https://github.com/wanglaotou/centernet_ncnn) Objects as Points, ncnn implementation 70 | 71 | - [centerface-ncnn](https://github.com/JuZiSYJ/centerface-ncnn) centerface android project 72 | 73 | - [PCN-ncnn](https://github.com/HandsomeHans/PCN-ncnn) Progressive Calibration Networks (PCN) is an accurate rotation-invariant face detector running at real-time speed on CPU (CVPR 2018), with ncnn based inference. 74 | 75 | - [Ultra-Light-Fast-Generic-Face-Detector-1MB](https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB) 1MB lightweight face detection model (1MB轻量级人脸检测模型) 76 | 77 | ### Super Resolution 78 | 79 | - [realsr-ncnn-vulkan](https://github.com/nihui/realsr-ncnn-vulkan) ncnn implementation of Real-World Super-Resolution via Kernel Estimation and Noise Injection super resolution. 80 | - [srmd-ncnn-vulkan](https://github.com/nihui/srmd-ncnn-vulkan) ncnn implementation of SRMD super resolution. 81 | - [waifu2x-ncnn-vulkan](https://github.com/nihui/waifu2x-ncnn-vulkan) waifu2x converter ncnn version, runs fast on intel / amd / nvidia GPU with vulkan 82 | - [vapoursynth-waifu2x-ncnn-vulkan](https://github.com/Nlzy/vapoursynth-waifu2x-ncnn-vulkan) Waifu2x filter for VapourSynth 83 | - [VapourSynth-SRMD-ncnn-Vulkan](https://github.com/Kiyamou/VapourSynth-SRMD-ncnn-Vulkan) SRMD super resolution for VapourSynth 84 | - [Waifu2x-Extension-GUI](https://github.com/AaronFeng753/Waifu2x-Extension-GUI) Photo/Video/GIF enlargement and Video frame interpolation using machine learning (使用NCNN的图像超分辨率及视频插帧软件) 85 | - [waifu2x-ncnn-vulkan-python](https://github.com/tonquer/waifu2x-ncnn-vulkan-python) Exporting pyd for python based on waifu2x-ncnn-vulkan (修改waifu2x-ncnn-vulkan项目,导出pyd给python使用) 86 | - [media2x/waifu2x-ncnn-vulkan-python](https://github.com/media2x/waifu2x-ncnn-vulkan-python) A Python FFI of nihui/waifu2x-ncnn-vulkan achieved with SWIG. This project only wraps the original Waifu2x class and is now used by [video2x](https://github.com/k4yt3x/video2x) and [anime2x-multibackend](https://github.com/ArchieMeng/anime2x-multibackend). 87 | - [Real-CUGAN-ncnn-vulkan](https://github.com/nihui/realcugan-ncnn-vulkan#real-cugan-ncnn-vulkan) A two dimensions anime super resolution project. (二次元动漫超分项目) ncnn implementation of Real-CUGAN converter. Runs fast on Intel / AMD / Nvidia with Vulkan API. 88 | 89 | ### Video Frame Interpolation 90 | 91 | - [flowframes](https://github.com/n00mkrad/flowframes) Flowframes Windows GUI for video interpolation - Supports DAIN NCNN as well as RIFE Pytorch and NCNN implementations. 92 | 93 | - [rife-ncnn-vulkan](https://github.com/nihui/rife-ncnn-vulkan) ncnn implementation of RIFE, Real-Time Intermediate Flow Estimation for Video Frame Interpolation. 94 | 95 | - [cain-ncnn-vulkan](https://github.com/nihui/cain-ncnn-vulkan) ncnn implementation of CAIN, Channel Attention Is All You Need for Video Frame Interpolation. 96 | 97 | - [dain-ncnn-vulkan](https://github.com/nihui/dain-ncnn-vulkan) ncnn implementation of DAIN, Depth-Aware Video Frame Interpolation. 98 | 99 | - [rife-ncnn-vulkan-python](https://github.com/media2x/rife-ncnn-vulkan-python) A Python FFI of nihui/rife-ncnn-vulkan achieved with SWIG. 100 | 101 | ### Pose Estimation 102 | 103 | - [NCNN_Android_SinglePoseEstimation](https://github.com/ZtoYtoQ/NCNN_Android_SinglePoseEstimation) 单人人体姿态定位 android 工程 104 | 105 | - [NCNN-PoseEstimation](https://github.com/ZtoYtoQ/NCNN-PoseEstimation) Realtime Pose Estimation NCNN ONNX 106 | 107 | - [ncnn_Android_MoveNet](https://github.com/FeiGeChuanShu/ncnn_Android_MoveNet) Android MoveNet pose estimation by ncnn 108 | 109 | - [deep-head-pose-ncnn](https://github.com/docongminh/deep-head-pose-ncnn) Simple inference deep head pose ncnn version. 110 | 111 | ### Segmentation 112 | 113 | - [RobustVideoMatting](https://github.com/FeiGeChuanShu/ncnn_Android_RobustVideoMatting) Android human segmentation by ncnn. 114 | 115 | - [ncnn_Android_hair](https://github.com/FeiGeChuanShu/ncnn_Android_hair) Android hair segmentation demo by ncnn (基于 ncnn 的头发分割 android demo app) 116 | 117 | - [ncnn-portrait-segmentation](https://github.com/leeys888/ncnn-portrait-segmentation) Real-time human segmentation on CPU 118 | 119 | - [ncnn-android-deeplabv3plus](https://github.com/runrunrun1994/ncnn-android-deeplabv3plus) The deeplabv3+ person segmentation android example. 120 | 121 | - [SOLOV2_ncnn](https://github.com/DayBreak-u/SOLOV2_ncnn) The C++ version of solov2 with ncnn 122 | 123 | - [Sky-Segmentation-and-Post-processing](https://github.com/xiongzhu666/Sky-Segmentation-and-Post-processing) C++ implementation for Sky segmentation and post-processing for the paper [https://arxiv.org/abs/2006.10172](https://arxiv.org/abs/2006.10172) with ncnn. 124 | 125 | ### Wasm 126 | 127 | - [ncnn-webassembly-scrfd](https://github.com/nihui/ncnn-webassembly-scrfd) Deploy SCRFD, an efficient high accuracy face detection approach, in your web browser with ncnn and webassembly 128 | 129 | - [ncnn-webassembly-ocrlite](https://github.com/Sg4Dylan/ncnn-webassembly-ocrlite) Deploy OcrLite in your web browser with ncnn and webassembly 130 | 131 | - [ncnn-webassembly-portrait-segmentation](https://github.com/nihui/ncnn-webassembly-portrait-segmentation) Portrait segmentation in your browser with ncnn and webassembly 132 | 133 | - [ncnn-webassembly-nanodet](https://github.com/nihui/ncnn-webassembly-nanodet) Deploy nanodet, the super fast and lightweight object detection, in your web browser with ncnn and webassembly 134 | 135 | - ncnnRay++ A CMake / WASM integration of rayib UI and the Tencent ncnn C++ AI platform 136 | - Original repo(now broken): https://github.com/QuantScientist/ncnnRay 137 | - An fork of the original: https://github.com/stjordanis/ncnnRay 138 | 139 | - [ncnn-webassembly-yolov5](https://github.com/nihui/ncnn-webassembly-yolov5) Run NCNN based YoloV5 detector in your browser! 140 | 141 | - [ncnn-webassembly-blazeface](https://github.com/zineos/ncnn-webassembly-blazeface) Run blazeface detector in browser. 142 | 143 | ### Other 144 | 145 | - [YOLOP-NCNN](https://github.com/EdVince/YOLOP-NCNN) _You Only Look Once for Panopitic Driving Perception_, Android app by ncnn (车辆检测+路面分割+车道线分割 三合一的网络, Android Demo). 146 | 147 | - [SID-NCNN](https://github.com/EdVince/SID-NCNN) _Learning to See in the Dark_ running in Android by ncnn with Raw Camera (CVPR2018'Learning to See in the Dark, 暗光成像,用ncnn在安卓上进行简单的部署实现) 148 | 149 | - [monodepth-NCNN](https://github.com/EdVince/monodepth-NCNN) Deploy wavelet-monodepth ([CVPR 2021 Monocular depth estimation using wavelets for efficiency](https://github.com/nianticlabs/wavelet-monodepth) ) model on Android with ncnn (将wavelet-monodepth的模型搬运到NCNN上,工程里面给了安卓的工程以及以及生成好的app安装包). 150 | 151 | - [PiDiNet-NCNN](https://github.com/EdVince/PiDiNet-NCNN) Deploy PiDINet([Pixel Difference Networks for Efficient Edge Detection](https://github.com/zhuoinoulu/pidinet)) on Android with ncnn (使用NCNN在安卓上实现PiDiNet这个边缘检测网络) 152 | 153 | - [OpenSitUp](https://github.com/DL-Practise/OpenSitUp) OpenSitUp是一个基于姿态估计的开源项目,基于 ncnn 搭建了一个在android手机上运行的仰卧起坐计数APP 154 | 155 | - [SeqSeq ncnn](https://github.com/DayBreak-u/seq2seq_ncnn) The C++ version of SeqSeq with ncnn 156 | 157 | - [ncnn_paddleocr](https://github.com/FeiGeChuanShu/ncnn_paddleocr) convert paddleocr light model to ncnn,you can use it by ncnn. 158 | 159 | - [ncnn-swift](https://github.com/zhuzilin/ncnn-swift) A project of using ncnn in Swift for modern iOS development, with image classification & object detection (yolov5) examples. 160 | 161 | - [ncnn-picture-enhancement](https://github.com/JuZiSYJ/ncnn-picture-enhancement) A simple demo to run dehaze / underwater model in Android (照片去雾和水下增强). 162 | 163 | - [enet-as-linux](https://github.com/watersink/enet-as-linux) 基于ncnn的android端的enet分割 164 | 165 | - [mobile-lpr](https://github.com/xiangweizeng/mobile-lpr) 一个面向移动端的准商业级车牌识别库 166 | 167 | - [demo_deepsort](https://github.com/ProLing1994/demo_deepsort) deepsort tracking demo 168 | 169 | - [chineseocr_lite](https://github.com/ouyanghuiyu/chineseocr_lite) Super lightweight OCR for Chinese characters, supporting horizontal recognition, support ncnn inference (超轻量级中文ocr,支持竖排文字识别, 支持ncnn推理) 170 | 171 | - [ncnn-android-styletransfer](https://github.com/nihui/ncnn-android-styletransfer) ncnn style transfer android example 172 | 173 | - [ncnn_example by MirrorYuChen](https://github.com/MirrorYuChen/ncnn_example) A collection of ncnn examples: face/mask detection, tracking, recognition... 174 | 175 | ## Tools 176 | 177 | Model convert tools and wrapper/bindings of ncnn (模型转换工具、对ncnn封装等相关项目) 178 | 179 | - [keras2ncnn](https://github.com/MarsTechHAN/keras2ncnn): A keras h5df to ncnn model converter 180 | 181 | - [darknet-ncnn-android](https://github.com/paleomoon/darknet-ncnn-android) darknet ncnn android project 182 | 183 | - [caffe-int8-convert-tools](https://github.com/BUG1989/caffe-int8-convert-tools) Caffe INT8 Quantization convert tool 184 | 185 | ## Wrappers 186 | 187 | - [ros_ncnn](https://github.com/nilseuropa/ros_ncnn) ROS wrapper for NCNN neural inference framework 188 | 189 | - [pyncnn](https://github.com/caishanli/pyncnn) python wrapper of ncnn with pybind11 (Note: now updated in [ncnn official](https://github.com/tencent/ncnn) repo's python directory) 190 | 191 | - [ncnn-lite](https://github.com/nullptr-leo/ncnn-lite) NCNN lite without C++ support (Note: There is [ncnn C API](https://github.com/Tencent/ncnn/blob/master/src/c_api.h) now) 192 | 193 | - [NcnnDotNet](https://github.com/takuya-takeuchi/NcnnDotNet) ncnn .NET wrapper written in C++ and C# for Windows, MacOS and Linux 194 | 195 | - [ncnn-fortran](https://github.com/mizu-bai/ncnn-fortran) Call ncnn from Fortran via mix compiling 196 | 197 | ## Optimization 198 | 199 | - [ncnn-with-cuda](https://github.com/atanmarko/ncnn-with-cuda) Tencent NCNN with added CUDA support 200 | 201 | ## Training 202 | 203 | - [ncnnqat](https://github.com/ChenShisen/ncnnqat) quantize aware training package for NCNN on pytorch. 204 | 205 | ## Source Analysis 206 | 207 | - [ncnn_breakdown - by All Star](https://github.com/Zhengtq/ncnn_breakdown) A breakdown of NCNN (学习ncnn的过程的一个记录) 208 | 209 | - [ncnn初探 - by OFShare](https://www.zhihu.com/column/c_1320446932913762304) ncnn源码解析, 带你进入底层实现的点点滴滴. 210 | 211 | - [如何阅读一个前向推理框架?以NCNN为例 - by BBuf](https://blog.csdn.net/just_sort/article/details/111403398) 如何阅读NCNN框架 212 | 213 | - [ncnn源码分析 - by MirrorYuChen](https://blog.csdn.net/sinat_31425585/category_9312419.html) 214 | --------------------------------------------------------------------------------