[深度学习][转载]Msnhnet一款优秀轻量的用于推理pytorch模型的框架

Posted FL1623863129

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[深度学习][转载]Msnhnet一款优秀轻量的用于推理pytorch模型的框架相关的知识,希望对你有一定的参考价值。

本人亲测十分好用,适合在windows部署,众所周知在windows上用C++部署深度学习一般比较困难,尤其这个框架还支持C#,十分了得。

Msnhnet(V2.0 偏向于于机器人视觉发展)🔥

开源地址:https://github.com/msnh2012/Msnhnet

一款轻量的用于推理pytorch模型的框架,该框架受darknet启发.

    Ps: 目前本框架在持续开发中,由于是业余时间开发,更新速度不会很快。也欢迎有志之士一块维护本框架. 欢迎三连.

目前测试过的操作系统 (你可以自己测试下mac os)

 windowslinuxmac
checked   
gpu   

目前测试过的CPU (其它U出现BUG可以在issue提出)

 Intel i7raspberry 3Braspberry 4BJeston NX
checked    

特点

  • 由纯c++编写完成, 不依赖其它第三方计算库, 同时也支持OpenBlas库.
  • 支持目前主流的操作系统,Windows, linux(Ubuntu测试), mac os(未测试).
  • 支持目前主流的cpu芯片, Intel X86,AMD(未测试) 和ARM.
  • 支持x86结构avx2加速(持续优化中)。
  • 支持arm结构neon加速(持续优化中)。
  • 自带一套cv库,类似Opencv.
  • conv2d 3x3s1 3x3s2 winograd3x3s1支持(Arm)
  • GPU cuda支持. (测试过的显卡 GTX1080Ti, Jetson NX)
  • GPU cudnn支持. (测试过的显卡 GTX1080Ti, Jetson NX)
  • GPU fp16支持.(测试过的显卡 GTX1080Ti, Jetson NX)
  • ps. 请检查你的显卡是否支持fp16双倍加速.
  • 该框架自带一套类似netron的可视化工具, 可在编写Msnhnet文件时清晰掌握网络结构.
  • 支持keras转Msnhnet. (Keras 2 and tensorflow 1.x, 部分op)
  • 支持pytorch一键转msnhnet(目前只支持部分Op, 持续更新中)。
  • 支持c_api。
  • 支持C#语言,MsnhnetSharp。 
  • 支持msnhnet可视化,类似netron。 pic
  • 持续开发中...(也就晚上有时间... (╮(╯_╰)╭))

已测试的网络

Yolo测试

  • Win10 MSVC 2017 I7-10700F (Linux平台大约比Win快10~20%,当然不是所有网络)

    netyolov3yolov3_tinyyolov4
    time380ms50ms432ms
  • ARM(Yolov3Tiny cpu)

    cpuraspberry 3Braspberry 4BJeston NX
    with neon asm?0.432s?

Yolo GPU 测试

  • Ubuntu16.04 GCC Cuda10.1 GTX1080Ti

    netyolov3yolov3_tinyyolov4
    time30ms8ms30ms
  • Jetson NX

    netyolov3yolov3_tinyyolov4
    time200ms20ms210ms

Yolo GPU cuDnn FP16 测试

  • Jetson NX
    netyolov3yolov4
    time115ms120ms

Yolov5s GPU 测试

  • Ubuntu18.04 GCC Cuda10.1 GTX2080Ti
    netyolov5syolov5s_fp16
    time9.57ms8.57ms

Mobilenet Yolo GPU cuDnn 测试

  • Jetson NX
    netyoloface100kyoloface500kmobilenetv2_yolov3_nanomobilenetv2_yolov3_lite
    time7ms20ms20ms30ms

DeepLabv3 GPU 测试

  • Ubuntu18.04 GCC Cuda10.1 GTX2080Ti
    netdeeplabv3_resnet101deeplabv3_resnet50
    time22.51ms16.46ms

依赖

视频教程(B站)

如何编译

  • CMake要求: CMake 3.15+
  • 注意Viewer不能在GPU模式下编译

 ps. 你可以在CMakeLists.txt:52设置最大OMP占用线程, 默认是OMP使用所有CPU线程.(需取消勾选OMP_MAX_THREAD)

  • Windows平台编译(MSVC)

    • 1.使用CMake编译安装OpenCV4 (可选).
    • 2.在环境变量中添加"OpenCV_DIR", 并设置变量内容为每个库的CMake目录 (可选).
    • 3.下载安装Qt5 (可选).
    • 4.把Qt5的bin目录添加环境变量Path (可选).
    • 5.下载glew(win32). http://glew.sourceforge.net/ (可选).
    • 6.下载glfw3(源码).https://www.glfw.org/ (可选).
    • 7.解压glew,添加glew目录到系统环境变量"CMAKE_PREFIX_PATH" (可选).
    • 8.使用cmake编译glfw3, 添加glfw3的cmake文件夹路径到系统环境变量"GLFW_DIR" (可选).
    • 9.最后使用CMake GUI工具配置Msnhnet然后使用Visual Studio编译安装.
  • Linux(Ubuntu ) 注意: 构建NX的GPU版本取消勾选NEON OPENBLAS.

    sudo apt-get install build-essential
    sudo apt-get install qt5-default      #可选
    sudo apt-get install libqt5svg5-dev   #可选
    sudo apt-get install libopencv-dev    #可选
    sudo apt-get install libgl1-mesa-dev libglfw3-dev libglfw3 libglew-dev #可选
    
    
    #config 
    sudo echo /usr/local/lib > /etc/ld.so.conf.d/usrlib.conf
    sudo ldconfig
    
    # build Msnhnet
    git clone https://github.com/msnh2012/Msnhnet.git
    mkdir build 
    
    cd Msnhnet/build
    cmake -DCMAKE_BUILD_TYPE=Release ..  
    make -j4
    sudo make install
    
    vim ~/.bashrc # Last line add: export PATH=/usr/local/bin:$PATH
    sudo ldconfig

测试

  • 1.首先下载预训练模型并解压. eg.D:/models.
  • 2.打开终端或CMD, cd到安装目录. eg. D:/Msnhnet/bin
  • 3.测试 yolov3 yolov3 D:/models
  • 4.测试 yolov3tiny_video yolov3tiny_video D:/models
  • 5.测试 classify classify D:/models 

使用MsnhnetViewer查看网络结构

  • 1.打开终端或CMD, cd到安装目录 eg. D:/Msnhnet/bin
  • 2.运行 "MsnhnetViewer" 
  • Ps. "ResBlock Res2Block AddBlock ConcatBlock"为网络层的封装, 你可以双击该块查看详细内容.

各个封装的结构 ResBlock 

Res2Block 

AddBlock 

ConcatBlock 

如何转换模型

  • pytorch2msnhnet
  • ps.
  • 在转换之前,请务必检查下你的模型所用的算子被pytorch2Msnhnet支持。
  • 可能有些模型转换不成功。
  • 如果你的模型包含非常复杂的前处理和后处理,请先转backbone,再手动添加OP.
  • 对于u版yolov3和yolov4.参考这个视频。视频中的工具迁移至此.

关于训练

Enjoy it! :D

感谢

Msnhnet参考了以下框架:

第三方库

以上是关于[深度学习][转载]Msnhnet一款优秀轻量的用于推理pytorch模型的框架的主要内容,如果未能解决你的问题,请参考以下文章

渗透测试必备|一款优秀的web指纹识别工具

终于!谷歌移动端深度学习框架 TensorFlow Lite 正式发布

介绍一款优秀的IDE Grid Studio,Excel深度集成python,直接编写并执行python代码块!

转载轻量级数据库中间件利器Sharding-JDBC深度解析

论文笔记系列:轻量级网络-- RepVGG

深度学习框架之Caffe源码解析