本专栏主要是提供一种国产化图像识别的解决方案,专栏中实现了YOLOv5/v8在国产化芯片上的使用部署,并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。
B站配套视频:https://www.bilibili.com/video/BV1or421T74f
基础背景
对于国产化芯片来说,是采用NPU进行推理,无论从性能、功耗、软件环境来说都是比不过英伟达显卡的。所以在进行推理的时候除了实现我们正常的业务逻辑还需要将核心推理部分改造成线程池,实现快速推理。
在此之前我们大概知道推理需要分成三个部分,预处理、推理、后处理。此处我们参照上节课的代码、官方模型来和大家讲解。
预处理部分
首先我们看一下模型的输入部分,是640640,这个是在我们训练的时候就决定好了,所以进行推理的时候我们也一样先要把图片处理成640640。
除此之外,使用过opencv的同学应该知道,opencv读取图片时候一半都是BGR的颜色通道,预处理的时候我们一样要把图片处理成RGB才可以。
// yolo的预处理
void cvimg2tensor(const cv::Mat &img, uint32_t width, uint32_t height, tensor_data_s &tensor)
{
// img has to be 3 channels
if (img.channels() != 3)
{
NN_LOG_ERROR("img has to be 3 channels");
exit(-1);
}
// BGR to RGB
cv::Mat