SkillAgentSearch skills...

Miemienet

miemienet is a C++ AI deep learning inference framework.Supports PPYOLOE、PICODET.

Install / Use

/learn @miemie2013/Miemienet
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

简体中文 | English

miemienet

概述

自2019年初咩酱从java转行python,经过4年知识沉淀,咩酱终于在2022年11月有了自己的深度学习推理引擎!miemienet是咩酱 个人自研的深度学习推理引擎,使用C++11标准,其有如下特性:

  • miemienet计算部分无任何第三方依赖,简单纯粹;miemienet用于目标检测等图像任务的部署时,仅依赖opencv处理图片。 miemienet会始终保持第三方依赖少、使用简单等特性,提供给用户友好的用户体验。
  • miemienet目前支持x86架构的cpu推理,预计未来会加入支持arm、vulkan、opengl等更多计算后端;
  • miemienet支持windows、linux多种操作系统;
  • miemienet使用纯C++代码组网,而不是使用文本文件。miemienet组网方式非常像pytorch、paddlepaddle。优点是你可以在前向传播的任何地方打断点调试C++代码,你不用将深度学习推理框架视为黑盒,你可以学习它了解它甚至扩展它,让它支持更多的算子,缺点是你需要手写C++代码组网(如果这也算缺点的话)。

咩酱使用miemienet实现了PPYOLOE、PICODET等算法(作为miemienet的使用示例),如果你想学习使用miemienet,翻阅它们的代码是一个不错的选择。这么棒的仓库,请大家点个star吧!

环境搭建

Windows

1.首先,安装Visual Studio 2022 社区版,安装时,勾选“使用C++的桌面开发”,并在右边“安装详细信息”的“可选”部分勾选需要的部分,如下图所示:(如果图片加载太慢或者加载不出来,直接下载miemienet仓库并解压,进入docs/images/文件夹查看图片)

docs/images/vs2022_install_001.png

docs/images/vs2022_install_002.png

之后等待安装完成即可。

2.安装opencv,这里建议使用我的编译好的opencv,链接:https://pan.baidu.com/s/1_eevGRb7pmNbg86NzF2O1A 提取码:rcos

下载opencv.zip,把opencv.zip放在D盘根目录下,解压到当前目录,进入解压后得到的opencv文件夹,你将看到这些:

docs/images/opencv.png

3.下载miemienet的代码并解压(或者克隆仓库到本地),用Visual Studio打开解决方案文件miemienet.sln。如果按下Ctrl+F5,你将运行一个目标检测的示例,main()函数位于test/test_objectdet.cpp。但是现在还没有模型文件,需要先转换模型文件:

下载下面这2个模型文件,这是PaddleDetection官方提供的模型文件:

https://paddledet.bj.bcebos.com/models/ppyoloe_crn_s_300e_coco.pdparams
https://paddledet.bj.bcebos.com/models/picodet_s_416_coco_lcnet.pdparams

下载后把它们放在miemienet的test文件夹下。打开一个终端(cmd)进入miemienet的test文件夹,输入命令:

python convert_ppdet_tools.py --model_path ppyoloe_crn_s_300e_coco.pdparams
python convert_ppdet_tools.py --model_path picodet_s_416_coco_lcnet.pdparams

你将会在miemienet的test/save_data文件夹下看到picodet_s_416_coco_lcnet.bin、picodet_s_416_coco_lcnet.mie、ppyoloe_crn_s_300e_coco.bin、ppyoloe_crn_s_300e_coco.mie 这4个文件,这是miemienet能识别的模型文件。

回到Visual Studio,按下Ctrl+F5,即可执行目标检测示例程序。

如果你需要对比PaddleDetection下的相同模型预测同一张图片,在PaddleDetection根目录下运行:

python tools/infer.py -c configs/ppyoloe/ppyoloe_crn_s_300e_coco.yml -o weights=https://paddledet.bj.bcebos.com/models/ppyoloe_crn_s_300e_coco.pdparams --infer_img demo/000000014439.jpg --draw_threshold 0.5

python tools/infer.py -c configs/picodet/picodet_s_416_coco_lcnet.yml -o weights=https://paddledet.bj.bcebos.com/models/picodet_s_416_coco_lcnet.pdparams --infer_img demo/000000014439.jpg --draw_threshold 0.5

即可。

Ubuntu

1.安装gcc9:

打开一个终端,输入以下命令安装gcc9:

sudo apt-get remove gcc gcc-9 gcc-8 -y
sudo apt-get update

sudo rm -rf /usr/bin/cc
sudo rm -rf /usr/bin/gcc
sudo rm -rf /usr/bin/g++

sudo apt install gcc-9 -y
sudo apt install g++-9 -y

sudo ln -s /usr/bin/gcc-9 /usr/bin/cc
sudo ln -s /usr/bin/gcc-9 /usr/bin/gcc
sudo ln -s /usr/bin/g++-9 /usr/bin/g++

2.安装opencv-3.3.1,链接:https://pan.baidu.com/s/1_eevGRb7pmNbg86NzF2O1A 提取码:rcos

下载opencv-3.3.1.zip,把opencv-3.3.1.zip放在~/目录下,解压到当前目录,打开一个终端输入以下命令编译安装opencv-3.3.1

cd ~/opencv-3.3.1
mkdir build
cd build
cmake -D BUILD_TIFF=ON -D BUILD_TESTS=OFF ..
cmake --build . --config Release -j 2
sudo cmake --build . --config Release --target install

如果在执行命令cmake --build . --config Release -j 2时报错"error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope",修改~/opencv-3.3.1/modules/videoio/src/cap_ffmpeg_impl.hpp,顶端添加:

#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020

保存后,回到终端输入以下命令继续编译安装:

cmake --build . --config Release -j 2
sudo cmake --build . --config Release --target install

安装完成后,输入命令

pkg-config --modversion opencv

如果打印

3.3.1

说明安装成功。修改动态库(共享库)配置文件:

sudo gedit /etc/ld.so.conf

确保这个文件有这2行:

include /etc/ld.so.conf.d/*.conf
include /usr/local/lib

如果没有,请添加。添加后保存,关闭。在终端里输入这条命令使其生效:

sudo ldconfig

3.下载miemienet的代码并解压(或者克隆仓库到本地),编译运行一个目标检测的示例,main()函数位于test/test_objectdet.cpp。但是现在还没有模型文件,需要先转换模型文件。

在miemienet根目录下打开一个终端,输入以下命令转换模型文件:

cd test
wget https://paddledet.bj.bcebos.com/models/ppyoloe_crn_s_300e_coco.pdparams
wget https://paddledet.bj.bcebos.com/models/picodet_s_416_coco_lcnet.pdparams
python convert_ppdet_tools.py --model_path ppyoloe_crn_s_300e_coco.pdparams
python convert_ppdet_tools.py --model_path picodet_s_416_coco_lcnet.pdparams

你将会在miemienet的test/save_data文件夹下看到picodet_s_416_coco_lcnet.bin、picodet_s_416_coco_lcnet.mie、ppyoloe_crn_s_300e_coco.bin、ppyoloe_crn_s_300e_coco.mie 这4个文件,这是miemienet能识别的模型文件。

在miemienet根目录下打开一个终端,输入以下命令编译运行目标检测的示例:

python build.py --platform LINUX --cxx g++ --backend BACKEND_X86 --exec_file test_objectdet

./test_objectdet.out test/000000014439.jpg ppyoloe test/save_data/ppyoloe_crn_s_300e_coco 640 0.5 0.6

./test_objectdet.out test/000000014439.jpg picodet test/save_data/picodet_s_416_coco_lcnet 416 0.5 0.6

如果你需要对比PaddleDetection下的相同模型预测同一张图片,在PaddleDetection根目录下运行:

python tools/infer.py -c configs/ppyoloe/ppyoloe_crn_s_300e_coco.yml -o weights=https://paddledet.bj.bcebos.com/models/ppyoloe_crn_s_300e_coco.pdparams --infer_img demo/000000014439.jpg --draw_threshold 0.5

python tools/infer.py -c configs/picodet/picodet_s_416_coco_lcnet.yml -o weights=https://paddledet.bj.bcebos.com/models/picodet_s_416_coco_lcnet.pdparams --infer_img demo/000000014439.jpg --draw_threshold 0.5

即可。

Updates!!

  • 【2022/11/03】 miemienet首次公开。

友情链接

  • miemieGAN miemieGAN是咩酱个人开发与维护的图像生成库,以咩酱的名字命名,实现了stylegan2ada等算法,目前文档完善中,欢迎大家试玩。

传送门

算法1群:645796480(人已满)

算法2群:894642886

粉丝群:704991252

关于仓库的疑问尽量在Issues上提,避免重复解答。

B站不定时女装: _糖蜜

知乎不定时谢邀、写文章: 咩咩2013

西瓜视频: 咩咩2013

微信:wer186259

本人微信公众号:miemie_2013

技术博客:https://blog.csdn.net/qq_27311165

AIStudio主页:asasasaaawws

欢迎在GitHub或上面的平台关注我(求粉)~

打赏

如果你觉得这个仓库对你很有帮助,可以给我打钱↓

Example 0

咩酱爱你哟!

引用

miemienet借鉴了下面仓库的优秀代码:

Paddle

ncnn

PaddleDetection

YOLOX

miemiedetection

Related Skills

View on GitHub
GitHub Stars12
CategoryCustomer
Updated4mo ago
Forks0

Languages

C++

Security Score

72/100

Audited on Nov 1, 2025

No findings