BiSeNetV2-面部分割 ncnn推理

本文详细介绍了如何将BiSeNetV2模型从ONNX转换为ncnn进行推理的过程,包括两个主要步骤:首先,将ONNX模型转换为ncnn支持的格式;然后,利用ncnn库进行实时面部分割的推理操作。通过这些步骤,实现了高效且准确的计算机视觉任务——面部分割。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、onnx转ncnn

onnx2ncnn.exe BiSeNetV2_sim.onnx BSNs.param NSNs.bin

2、ncnn推理

#include<iostream>
#include<opencv2/opencv.hpp>
#include<net.h>
#include <stdio.h>

int main()
{
	cv::Mat img = cv::imread("../asserts/4.png");
	cv::cvtColor(img,img,cv::COLOR_BGR2RGB);

	ncnn::Net net;
	//先加载参数后加载模型
	net.load_param("../asserts/BSNs.param");
	net.load_model("../asserts/BSNs.bin");
	


	ncnn::Mat input = ncnn::Mat::from_pixels_resize(img.data, ncnn::Mat::PIXEL_RGB, img.cols,img.rows,512,512);

	const float mean_vals[3] = { 0.485f * 255.f, 0.456f * 255.f, 0.406f * 255.f };//123,117,104
	const float norm_vals[3] = { 1 / 0.229f / 255.f, 1 / 0.224f / 255.f, 1 / 0.225f / 255.f };
<think>好的,用户现在问的是关于使用命令`cmake --build ncnn.release -j8 --config Release`的解释。首先,我需要拆解这个命令的各个部分,并理解每个参数的作用。 用户之前已经询问过CMake的基本构建流程,所以可能对CMake有一定了解。现在他们可能在使用更复杂的项目,比如ncnn,并且需要知道如何高效编译。需要确保解释清晰,特别是参数的作用和适用场景。 首先,命令中的`cmake --build`是用来触发构建过程的,后面跟的是构建目录`ncnn.release`。这可能是一个已经通过CMake配置好的构建目录,用户可能已经执行过`cmake -S . -B ncnn.release -DCMAKE_BUILD_TYPE=Release`之类的命令来生成构建系统。 接下来是`-j8`,这应该是指定并行编译的线程数,即使用8个线程来加速编译。需要说明这个参数的作用,以及如何根据用户的CPU核心数调整。 然后是`--config Release`,这里可能用户是在Windows上使用多配置的生成器,比如Visual Studio,因为在Unix系统上通常通过`-DCMAKE_BUILD_TYPE`指定配置。需要指出不同平台下的差异,避免用户混淆。 可能需要检查用户的使用场景。比如,用户是否在Windows下使用Visual Studio,或者在Linux/macOS下使用Makefile或Ninja。不同的生成器对`--config`参数的支持不同,需要说明这一点。 另外,用户可能希望了解这个命令的整体作用,即构建Release版本的ncnn,并使用多线程加速。需要分步骤解释每个参数,并给出示例说明。 还要注意可能的常见问题,比如目录是否正确存在,是否已经配置过Release配置,或者权限问题。如果用户遇到错误,可能需要检查这些点。 最后,总结这个命令的用途,并给出其他相关建议,比如清理构建目录或安装构建结果,帮助用户更全面地了解后续步骤。</think>以下是对该命令的逐层解析与操作说明: --- ### 一、命令结构解析 ```bash cmake --build ncnn.release -j8 --config Release ``` | 参数 | 作用 | 技术细节 | |------|------|----------| | `--build` | 指定构建操作入口 | 触发CMake构建流程 | | `ncnn.release` | 构建目录路径 | 必须包含已生成的构建系统文件 | | `-j8` | 并行编译线程数 | 根据CPU核心数调整(如8核) | | `--config Release` | 指定构建配置类型 | **仅适用于多配置生成器**(如Visual Studio) | --- ### 二、分步执行逻辑 1. **目录验证** ```bash ls ncnn.release/CMakeCache.txt # 检查是否已执行过cmake配置 ``` 2. **构建流程** - **Unix系统**(Makefile/Ninja): $$ \text{自动选择} \ \texttt{Release} \ \text{配置} \ (\text{需通过} \ \texttt{-DCMAKE_BUILD_TYPE=Release} \ \text{预先配置}) $$ - **Windows系统**(MSBuild): $$ \text{显式选择} \ \texttt{Release} \ \text{解决方案配置} $$ --- ### 三、典型应用场景 1. **ncnn项目构建示例** ```bash # 步骤1:生成构建系统 cmake -S . -B ncnn.release -DCMAKE_BUILD_TYPE=Release # 步骤2:执行构建命令 cmake --build ncnn.release -j8 --config Release ``` 2. **参数调优建议** - CPU核心数与`-j`参数对应关系: $$ \text{推荐值} = \text{物理核心数} \times 1.5 $$ - 多配置生成器下必须使用`--config`参数 --- ### 四、常见问题排查 1. **错误:`No such build directory`** ```bash cmake -S . -B ncnn.release # 重新创建构建目录 ``` 2. **警告:`--config ignored on non-multi-config generators`** - **原因**:Unix系统使用单配置生成器(如Makefile) - **解决方案**:改用`-DCMAKE_BUILD_TYPE=Release`初始配置 --- ### 五、扩展操作 1. **清理构建产物** ```bash cmake --build ncnn.release --target clean ``` 2. **安装编译结果** ```bash cmake --build ncnn.release --target install ``` --- ### 六、核心原理图示 ```mermaid graph LR A[源码目录] -->|cmake -S . -B build| B[构建目录] B -->|cmake --build| C[编译过程] C --> D[生成二进制文件] C --> E[生成库文件] ``` 通过此命令可高效完成大型项目(如ncnn)的Release版本构建,建议配合`ccache`工具进一步提升编译速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HySmiley

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值