yolov5 应用整理

这篇具有很好参考价值的文章主要介绍了yolov5 应用整理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

yolov5 应用整理

适用于0基础人员与有一定yolov5了解的人员食用.

关于yolov5参考:

yolov5 github源码链接
目前参与过yolov5的应用:

平台
x86/arm cpu ncnn
x86 libtorch/pytorch
BM1684 算能标准库(需要进行模型转换)
昇腾 cann(ascend api)

https://gitee.com/Tencent/ncnn
https://github.com/alibaba/MNN

图像解码的延申

在所有嵌入式CPU平台进行图像的解码后都会有宽和高的对其,一般16|64位对其处理.
所有的硬件解码后的格式几乎都是NV12格式.
参考: ffmpeg的功能:

#include <libavutil/macros.h>
#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1))

FFALIGN(1080, 16)  #进行16位对其

笔者经历过的设备:

  • 瑞芯微RK3399: mpp编解码时宽和高的对其均为stride=16, 使用时需要硬件的rga功能进行缩放,截图,转换格式处理, 即: MppFrame,
    https://github.com/rockchip-linux/mpp
    yolov5 应用整理,AI人工智能,YOLO,目标检测,计算机视觉,物联网,arm开发
    yolov5 应用整理,AI人工智能,YOLO,目标检测,计算机视觉,物联网,arm开发
  • 笔者在算能BM1684中,依据API只需要进行宽度64对齐.

前处理

batch:数量
channel:通道
height, width: 高宽
常见输入格式 BCHW, BHWC
而数据类型有: int8, float, float16,每个数据类型有不同的内存占用情况,libtorch时需要进行转换

#rgb颜色改变, FP32数据
cv::cvtColor(img_input, img_input, cv::COLOR_BGR2RGB);  // BGR -> RGB
img_input.convertTo(img_input, CV_32FC3, 1.0f / 255.0f);  // normalization 1/255

#BHWC转BCHW格式转换
tensor_img = tensor_img.permute({ 0, 3, 1, 2 }).contiguous();  // BHWC -> BCHW (Batch, Channel, Height, Width)

后处理数据

可以用 netron 去查看模型信息

如得到yolov5模型的输出为: float32[1,25200,85]
yolov5 应用整理,AI人工智能,YOLO,目标检测,计算机视觉,物联网,arm开发
如何得到目标的坐标呢? 可以理解为一个三维数组 out[1][25200][85]
25200: 有25200个目标,需要进行过滤处理.
85: [0] [1]为中心点xy坐标;
[2] [3] 为wh;
[4]为置信度,
后面的80个为80个分类的置信度,取最大值的位置为分类目标, 值*[4]=最终置信度.
然后进行nms处理, 过滤掉目标多余的坐标框.

BM1684

参考: 算能demon https://github.com/sophgo/sophon-demo
官方的Demon对图片转换有些不足,你需要进行对其处理的完善.

算能官方将ffmpegopencv两个库进行了改编,增加了自己的编解码,入门难度简单很多.
对于ffmpeg只需要进行AVFramebm_image的相互转换即可.
目前bm1684官方说明为64对其.

	AVFrame *dst = av_frame_alloc();
	dst->width = src->width;
	dst->height = src->height;
	dst->format = AV_PIX_FMT_YUV420P;
	av_frame_get_buffer(dst, 64);

昇腾

见昇腾社区:
https://www.hiascend.com/document/detail/zh/canncommercial/63RC2/inferapplicationdev/aclcppdevg/aclcppdevg_0000.html

目前已经研究出 昇腾310 上的yolov5的转换, 昇腾在yolov5的前处理进行AIPP功能增加,使其能进行yuv数据的输入.

目前经过研究:在鲲鹏atlas800-3000中,纯使用cpu进行ffmpeg拉流解码可以达到80路视频

atc转换om模型说明

需要先将pt模型转换成onnx模型

# 将yolov5s.onnx模型转换为om模型
# 使用aipp时,输入格式为多种,这里是使用int8数据的NV12图片640大小输入
atc --model=yolov5s.onnx --framework=5 --output=yolov5s_aipp --input_format=NCHW --input_shape="input_image:1,3,640,640" --log=info --soc_version=Ascend310B1 --insert_op_conf=./aipp_YOLOv5.config 

aipp_YOLOv5.config参考 昇腾CANN => 色域转换配置说明

aipp_op {
    aipp_mode:static
    input_format : YUV420SP_U8
    src_image_size_w : 640
    src_image_size_h : 640
    crop: false
    load_start_pos_h : 0
    load_start_pos_w : 0
    crop_size_w : 640
    crop_size_h: 640
    csc_switch : true
    rbuv_swap_switch : false
    # 色域转换
    matrix_r0c0: 256
    matrix_r0c1: 0
    matrix_r0c2: 359
    matrix_r1c0: 256
    matrix_r1c1: -88
    matrix_r1c2: -183
    matrix_r2c0: 256
    matrix_r2c1: 454
    matrix_r2c2: 0
    input_bias_0: 0
    input_bias_1: 128
    input_bias_2: 128
    # 均值归一化
    min_chn_0 : 0
    min_chn_1 : 0
    min_chn_2 : 0
    var_reci_chn_0: 0.003921568627451
    var_reci_chn_1: 0.003921568627451
    var_reci_chn_2: 0.003921568627451
    }

通过其API来获取模型的信息:文章来源地址https://www.toymoban.com/news/detail-695870.html

#使用RGB输入格式时(可以用opencv读取图片/视频缩放后直接输入)
input[0] size:4915200 fmt:0(ACL_FORMAT_NCHW) dtype:0(ACL_FLOAT) dims(4):input_image= 1,3,640,640
#其中输入数据长度计算方式: 数据大小见 `sizeof(FLOAT)=4`
#1*640*640*3*4=4,915,200

#使用AIPP的NV12格式时(需要dvpp进行解码成NV12并进行缩放)
input num:1
input[0] size:614400 fmt:1(ACL_FORMAT_NHWC) dtype:4(ACL_UINT8) dims(4):input_image
1,640,640,3,
out num:1
output[0] fmt:2(ACL_FORMAT_ND) dtype:0(ACL_FLOAT) dims(3):Concat_309:0:output0
1,25200,85,
# 其中: 1*640*640*1.5=614400 

到了这里,关于yolov5 应用整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能学习07--pytorch21--目标检测:YOLO系列理论合集(YOLOv1~v3)

    如果直接看yolov3论文的话,会发现有好多知识点没见过,所以跟着视频从头学一下。 学习up主霹雳吧啦Wz大佬的学习方法: 想学某个网络的代码时: 到网上搜这个网络的讲解 → 对这个网络大概有了印象 → 读论文原文 ( 很多细节都要依照原论文来实现, 自己看原论文十分

    2024年02月10日
    浏览(73)
  • 人工智能任务4-读懂YOLOv5模型的几个灵魂拷问问题,深度理解 YOLOv5模型架构

    大家好,我是微学AI,今天给大家介绍一下人工智能任务4-读懂YOLOv5模型的几个灵魂拷问问题,深度理解 YOLOv5模型架构。YOLOv5是一种高效且精确的目标检测模型,由ultralytics团队开发。它采用了轻量级的网络结构,能够在保持高性能的同时降低计算复杂度。模型由三个主要部分

    2024年01月16日
    浏览(46)
  • 《人工智能专栏》必读150篇 | 专栏介绍 & 专栏目录 & Python与PyTorch | 机器与深度学习 | 目标检测 | YOLOv5及改进 | YOLOv8及改进 | 关键知识点 | 工具

    各位读者们好,本专栏最近刚推出,限于个人能力有限,不免会有诸多错误,敬请私信反馈给我,接受善意的提示,后期我会改正,谢谢,感谢。 第一步 :[ 购买点击跳转 ] 第二步 : 代码函数调用关系图(全网最详尽-重要) 因文档特殊,不能在博客正确显示,请移步以下链接

    2024年02月02日
    浏览(78)
  • 人工智能(AI)在金融行业的应用

    人工智能(AI)技术在金融行业的应用日益广泛,为金融机构提供了更高效、更智能的解决方案。以下和大家分享AI在金融行业的一些主要应用,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。   1. 风险评估和信贷评分:AI技术可

    2024年02月11日
    浏览(45)
  • 人工智能(AI)在材料科学方面的应用

    人工智能(AI)在材料科学方面的应用日益增多,主要包括以下几个方面: 材料设计和发现:通过机器学习和深度学习算法,预测材料的性质和特性,在材料研究和开发中起到重要的作用。例如,使用AI算法可以对材料的电子结构、晶体结构和热力学性质进行模拟和优化。 材

    2024年02月10日
    浏览(49)
  • 【AI赋能】人工智能在自动驾驶时代的应用

    引言 人工智能引领现代,智能AI赋能未来。 它在当今社会和科技领域中具有重要性。 本文将着重探讨人工智能对自动驾驶技术的深度赋能和应用场景等。 有时我们乘坐网约车的时候,能打到无人驾驶汽车,全程均为AI语音播报: 自动驾驶是指通过使用 各种传感器 、 计算机

    2024年02月17日
    浏览(67)
  • 【AI人工智能】50个AI技术在商城的应用和服务

    智能客服机器人:通过 AI 技术可以实现商城的智能客服功能,为用户提供24小时在线的咨询、答疑和解决问题的服务。可以利用自然语言处理和深度学习等技术,让机器人像人类一样理解用户提问,并给出相关的答复。 推荐引擎:利用AI技术,可以根据用户的历史购买记录、

    2024年02月08日
    浏览(49)
  • 人工智能前沿——未来AI技术的五大应用领域

    一、航空航天 二、医疗保健 三、建筑行业 四、能源领域 五、供应链 航空航天领域的发展一直与人工智能紧密交织,如美国国家航空航天局(NASA)的“好奇”号火星车已经使用人工智能探索火星好几年了。一些专家甚至会说,太空探索是一些最先进人工智能技术的发源地。

    2024年02月04日
    浏览(1782)
  • AI人工智能与机器人的探索和应用1.1

    文章来源于:https://mp.weixin.qq.com/s/fqivYVdakVKG-zDVfD4Qzg 研究机器人和人工智能的技术已有多年了,想来想去,觉得还是有必要对过往的技术做一些凝练和总结。在此过程中,除了能够将知识系统化,构建自己的知识体系框架,还可以以写促学,查漏补缺,形成知识武装的坚强壁

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包