精华内容
下载资源
问答
  • keras2ncnn 现在在pypi上可用! 如果转换模型失败,欢迎打开问题并附加h5文件。 用法: # Install keras2ncnn (only h5py and numpy is required) python3 -mpip install --upgrade keras2ncnn # If you only want ...
  • SRMD ncnn Vulkan ncnn实现SRMD超分辨率。 srmd-ncnn-vulkan使用作为通用神经网络推理框架。 下载适用于Intel / AMD / Nvidia GPU的Windows / Linux / MacOS可执行文件 该软件包包括所需的所有二进制文件和模型。...
  • 更新win端及android端的ncnn版本; 2018.4.12更新: ncnn最新的3.14版本; 增加可调参数设置接口及界面,方便测试; 附录:MTCNN的ARM端时间测试(1000次测试图640 * 480最小人脸40三层网络阈值{0.8,0.8,0.6}...
  • RealSR ncnn Vulkan ncnn通过内核估计和噪声注入超分辨率实现真实世界的超分辨率。 realsr-ncnn-vulkan使用作为通用神经网络推理框架。 下载适用于Intel / AMD / Nvidia GPU的Windows / Linux / MacOS可执行文件 ...
  • mobilefacenet_ncnn 一个简单的示例,在ncnn上实现了用于人脸识别的mobilefacenet。 介绍 是一种先进的深度学习方法,用于人脸识别。 它是为移动设备设计的。 是为移动平台优化的高性能神经网络推理计算框架。 此...
  • RIFE ncnn Vulkan RIFE的ncnn实现,即视频帧插值的实时中间流估计。 Rife-ncnn-vulkan使用作为通用神经网络推理框架。 下载适用于Intel / AMD / Nvidia GPU的Windows / Linux / MacOS可执行文件 该软件包包括所需...
  • 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.推理:...
  • 将paddleocr灯光模型转换为ncnn,您可以由ncnn使用它。 ncnn_paddleocr将paddleocr灯光模型转换为ncnn,您可以由ncnn使用它。 您可以使用chineseocr_lite项目的推断代码。 PS:如果使用角度模型plz,请将输入形状...
  • CAIN ncnn Vulkan CAIN的ncnn实现,频道注意是视频帧插值所需的全部。 cain-ncnn-vulkan使用作为通用神经网络推理框架。 下载适用于Intel / AMD / Nvidia GPU的Windows / Linux / MacOS可执行文件 该软件包包括所...
  • Ncnn在移动设备上的部署,支持:相机上的YOLOv5s,YOLOv4-tiny,MobileNetV2-YOLOv3-nano,简单姿势,Yolact,ChineseOCR-lite,ENet,Landmark106,DBFace,MBNv2-FCN和MBNv3-Seg-small。 iOS: Xcode 11.5 ...
  • 可以输出17个点的简易姿态评估模型,我自己的企业级产品就在使用,效果还是不错的,只要背景不是乱得太可以,或者衣服的颜色与背景...包内的.h文件是已经被代码化后的定义文件,直接使用NCNN的二进制接口加载就可以了
  • YoloV3-ncnn-Jetson-Nano 带有ncnn框架的YoloV3。 论文: : 专为Jetson Nano设计的产品,请参阅 基准。 模型 杰特逊纳米2015 MHz RPi 4 64-OS 1950兆赫 YoloV2(416x416) 10.1帧/秒 3.0帧/秒 YoloV3(352x352)...
  • ncnn-android-vulkan.zip解压缩到app / src / main / jni或在app / src / main / jni / Android.mk中将ncnn路径更改为您的ncnn路径 第三步 使用Android Studio打开此项目,进行构建并享受! 截屏
  • 仓库列出了一些很棒的基于ncnn的项目。 欢迎Star&Fork&Pull请求! 是一个为手机端极致优化的高性能神经网络前向计算框架。收集了基于NCNN的很棒的项目。欢迎Star&Fork&Pull请求一键三连! 内容 应用项目 侦查 ...
  • ncnn-android-yolov5 这是一个示例ncnn android项目,它仅取决于ncnn库YOLOv5对象检测拾取静态图像识别(以mac为例) 原项目参考: 原项目介绍比较精炼,这个项目梳理了下从安装android studio到打包apk文件安装全...
  • 该项目为著名的推理引擎实现了GPU NVIDIA CUDA推理支持。 NVIDIA Jetson系列设备上的许多Edge AI项目都可以从此支持中受益。 发展状况 当前在CUDA中实现了以下几层: AbsVal,BatchNorm,Bias,BinaryOp,BNLL,...
  • ncnn:网络模型加速

    2021-01-06 20:42:52
    深度学习算法要在手机上落地,caffe依赖太多,手机上也没有cuda,需要个又快又小的前向网络实现,ncnn就诞生了,它目前支持以下平台:跨平台,主要支持 android,次要支持 ios / linux / windows。 input data and ...
  • pytorch转ncnn目标检测源码,对应博客https://blog.csdn.net/weixin_45915902/article/details/103416431
  • ncnn_示例: 我保证我会永远更新这个项目! 20210612: 1.更新ncnn库到20210525 20201024: 1.添加retinaface关键点 2.添加视觉工作室脚本 20200806: 1.新增insightface 106个地标 2.优化CMakeLists.txt 2020.03.10...
  • 主要介绍了tensorflow模型转ncnn的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 基于dain-ncnn-vulkan和ffmpeg WIP软件,因此期待Bug,GUI很快:trade_mark: 下载 视窗 Linux Google Colab 用法 Windows: .\DAINVulkanCLI.exe -i "C:\Users\example\Videos\test.mp4" --output-folder "C:\...
  • 主要介绍了Windows下ncnn环境配置(VS2019),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • YOLOv5project中的cpp文件夹下的ncnn资源
  • 使用ncnn和webassembly在Web浏览器中部署OcrLite。安装2.0.8 ./emsdk激活2.0.8 ./emsdk_env.sh下载并提取ncnn和OpenCV目录树├─资产├─演示├─包括├─ncnn-static│└─webassembly│├─基本│├─simd │├─...
  • ncnnRay ++:rayib UI和腾讯ncnn C ++ AI平台的CMake / WASM集成。 ••••• 关于 可在此处获得实时WebAssembly / HTML5浏览器演示: ncnnRay ++是raylib ( https://www.raylib.com/examples.html )和非常...
  • Ncnn:20200226   Linux下的代码测试: mkdir build cd build cmake .. make ./ssd 效果:   Android下的开发: (1)增加ncnn的依赖库.a(src/main/jniLibs) 增加ncnn的头文件include(src/main/cpp) (2)增加...
  • ROS_NCNN 这是NCNN的ROS软件包,NCNN是一种针对移动平台进行了优化的高性能神经网络推理框架(由腾讯提供): ARM NEON程序集级别优化 先进的内存管理和数据结构设计,内存占用极低 支持多核并行计算加速 通过下...
  • 此仓库使用腾讯的NCNN框架提供YOLOv5模型的C ++实现。 YOLOv5 NCNN实现此仓库使用腾讯的NCNN框架提供YOLOv5模型的C ++实现。 注意:当前,NCNN不支持带步的切片操作,因此我删除了切片操作,并用缩小的图像替换了...
  • ncnn在Android的一个测试,包含了人脸检测(face detection),人脸属性(face attributes),人脸识别(face recognition)。车辆检测(Vehicle detection),车牌检测(plate detection),车牌识别(plate recognition);...
  • ncnn

    2020-12-20 00:35:31
    1.图像预处理 ncnn::Mat 1.1 from_pixels_resize() 生成目标尺寸大小的网络输入Mat mat_pixel.cpp 双线性插值图像形变 resize_bilinear_c1/c2/c3/4 1通道/2通道/3通道/4通道 图像变形算法 mat_pixel_resize.cpp 像素...

    1.图像预处理 ncnn::Mat

    1.1 from_pixels_resize() 生成目标尺寸大小的网络输入Mat mat_pixel.cpp
    双线性插值图像形变 resize_bilinear_c1/c2/c3/4 1通道/2通道/3通道/4通道 图像变形算法 mat_pixel_resize.cpp
    像素图像 转换成ncnn::Mat Mat::from_pixels() >>> 不同类型 from_rgb() 像素数据指针rgb间隔 依次赋值给Mat的三个通道的指针
    mat_pixel.cpp
    1.2 substract_mean_normalize() 去均值并归一化图像 mat.cpp
    有均值参数
    创建 偏置层 ncnn::create_layer(ncnn::LayerType::Bias); 载入层参数 op->load_param(pd); 3通道
    载入层权重数据 op->load_model(ncnn::ModelBinFromMatArray(weights)); -均值参数
    运行层 op->forward_inplace(*this);
    有归一化参数
    创建 尺度层 ncnn::create_layer(ncnn::LayerType::Scale); 载入层参数 op->load_param(pd); 3通道
    载入层权重数据 op->load_model(ncnn::ModelBinFromMatArray(weights)); 尺度参数
    运行层 op->forward_inplace(*this);
    有均值和归一化参数
    创建 尺度层 ncnn::create_layer(ncnn::LayerType::Scale); 载入层参数 op->load_param(pd); 3通道
    载入层权重数据 op->load_model(ncnn::ModelBinFromMatArray(weights)); -均值参数 和 尺度参数
    运行层 op->forward_inplace(*this);

    2.模型解析 ncnn::Net

    2.1 Net::load_param 载入网络参数文件 proto net.cpp
    文件头魔术数(版本?) 层类型 层名字 创建层 create_layer()/ net::create_custom_layer() 层输入blob数量 输出blob数量
    读取输入blob 与层挂钩; 读取输出blob与层挂钩;解析层特殊参数(参数字典) paramDict::load_param(fp); 按照 id=参数/参数数组 解析
    每一层 的 特殊参数不一样 https://github.com/Tencent/ncnn/wiki/operation-param-weight-table
    层载入解析得到的层特殊参数 layer->load_param(pd) 每一层特有的参数

    2.2 Net::load_model 载入网络模型文件 bin 权重数据 net.cpp
    1.创建 ModelBinFromStdio 对象 提供载入参数的接口函数 ModelBinFromStdio::load() src/modelbin.cpp
    根据 权重数据开始的一个四字节数据类型参数(float32/float16/int8等) 和 指定的参数数量 读取数据到 Mat 并返回Mat
    2.根据load_param 获取到的网络层信息 便利每一层 载入每一层的模型数据 layer->load_model() 每一层特有函数
    3.部分层需要 根据层实际参数 调整运行流水线 layer->create_pipeline 例如卷积层和全连接层
    4.量化的网络需要融合 Net::fuse_network()

    3.网络运行 ncnn::Extractor

    3.1 创建网络提取器 Extractor Net::create_extractor 提供设置网络输入 获取网络输出 设置网络运行线程参数的接口
    3.2 设置线程参数 Extractor::set_num_threads 设置网络输入 Extractor::input
    3.3 提取网络输出 Extractor::extract 运行网络前向运行函数 net->forward_layer
    会根据层类型(单输入单输出/其他) blob类型(可本地修改(在输入直接修改)/不可本地修改)执行每一次的前向运行函数
    当输入blob为空时,会递归调用 网络前向运行函数 net->forward_layer 获取前置层的输出blob

    示例:

    `#include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include "net.h"
    
    int main()
    {
        cv::Mat img = cv::imread("image.ppm", CV_LOAD_IMAGE_GRAYSCALE);
        int w = img.cols;
        int h = img.rows;
    
        // subtract 128, norm to -1 ~ 1
        ncnn::Mat in = ncnn::Mat::from_pixels_resize(img.data, ncnn::Mat::PIXEL_GRAY, w, h, 60, 60);
        float mean[1] = { 128.f };
        float norm[1] = { 1/128.f };
        in.substract_mean_normalize(mean, norm);
    
        ncnn::Net net;
        net.load_param("model.param");
        net.load_model("model.bin");
    
        ncnn::Extractor ex = net.create_extractor();
        ex.set_light_mode(true);
        ex.set_num_threads(4);
    
        ex.input("data", in);
    
        ncnn::Mat feat;
        ex.extract("output", feat);
    
        return 0;
    }
    

    ncnn::Extractor还可以设置一个轻模式省内存 即set_light_mode(true),原理是net中每个layer都会产生blob,除了最后的结果和多分支中间结果,大部分blob都不值得保留,开启轻模式可以在运算后自动回收,省下内存。但需要注意的是,一旦开启这个模式,我们就不能获得中间层的特征值了,因为中间层的内存在获得最终结果之前都被回收掉了。

    先创建了ncnn::net,然后我们调用的ncnn::Extractor作为运算实例,因此运算实例是不受net限制的。换句话说,虽然我们只有一个net,但我们可以开多个ncnn::Extractor,这些实例都是单独完成特定网络的推理,互不影响

    参考:官方wiki:https://github.com/Tencent/ncnn/wiki
    官方example readme:https://github.com/Ewenwan/MVision/tree/master/CNN/HighPerformanceComputing/example
    https://zhuanlan.zhihu.com/p/338121531?utm_source=qq&utm_medium=social&utm_oi=872955404320141312

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,326
精华内容 1,730
关键字:

ncnn