简单记录YOLOV5后处理(推理)

YOLOV5前后处理(推理)

1、输入与输出

输入:[1,3,640,640]
输出:[1,25200,85]
3中尺度的特征图,每个cell3个anchor:25200 = (80 * 80+40 * 40+20 * 20)*3
85 = (cx,cy,w,h,obj_conf)+cls_conf;
obj_conf:目标置信度(是目标的概率);
cls_conf:类别置信度(是哪一类目标的概率);

letterbox:

  1. 使指定的输入图片大小(640 * 640)/原图的大小(xxx * xxx),获取两个resize比例。
  2. 取最小的比例,使得原图大小乘以这个最小比例(此时的长边正好达到640)。
  3. 获取此时的短边距离640还差多少,接着将差值除以步长(stride)进行取余,然后除以2。
  4. 按照此时的size大小将原图进行resize。
    tips:经过letterbox处理后的图片很多情况下仅有一条边能够达到640,另一条边为32的倍数(pytorch要求输入是32的倍数,下采样32倍)。

2、后处理

由于输出的数据过多(25000个框,每个框85个数据),所以要一步步的进行筛选。

1)设置conf_thres,目标置信度小于阈值的框直接过滤掉;

obj_conf > conf_thres

2)选出当前框的最大类别置信度,然后与此框的目标置信度相乘,过滤乘积小于阈值(conf_thres)的框。

(obj_conf * cls_conf) > conf_thres
cls_conf=max(cls1_conf,cls2_conf, ...... ,cls80_conf)

3)nms过滤

由于nms使用的框的坐标是(x1,y1,x2,y2),所以要将yolov5的(cx,cy,w,h)的框坐标进行转化,然后使用nms进行过滤。

经过1)、2)处理后的结果
经过1)、2)处理后的结果

经过3) nms处理后的结果,每个目标均剩一个框
经过3) nms处理后的结果,每个目标均剩一个框
NMS:
1)、找出每个框的最大类别置信度,然后按照高低进行排序。
2)、将最高得分置信度当做保留框,与其他所有框做IOU,若IOU大于某一阈值,则淘汰这些框。
3)、找出第二高得分置信度当做保留框,与其他框做IOU,依次循环执行。

3、box校正(还原)

由于输入图像一般是经过(letterbox:按照w/h resize至640,其余部分使用背景填充)resize至640*640的,所以在640 * 640的图像上找打目标框后,需要将其还原至原图大小上。

参考链接:
1、link

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用\[1\]:根据引用\[1\]中提到的信息,NCNN对于4维及以下的张量有较好的支持,而5维及以上的张量无法转换到ncnn。因此,在进行rknn推理yolov5的cmake时,需要注意张量的维度是否符合NCNN的要求。 引用\[2\]:关于TNN模型文件的下载地址,可以从Baidu Drive或者仓库中获取。根据引用\[2\]中提供的信息,可以下载不同大小的TNN模型文件,具体的文件命名和大小可以参考引用\[2\]中的列表。 引用\[3\]:在进行yolov5的cmake时,可以考虑不导出anchors和anchor_grid,这样可以减小模型文件的大小。根据引用\[3\]中的描述,修改后的模型文件大小为6.5Mb。 综上所述,进行rknn推理yolov5的cmake时,需要注意张量的维度是否符合NCNN的要求,并可以根据需要选择合适大小的TNN模型文件。此外,可以考虑不导出anchors和anchor_grid来减小模型文件的大小。具体的C++前后处理以及NMS的实现可以参考仓库的源码。 #### 引用[.reference_title] - *1* *2* *3* [工程详细记录:超准确人脸检测(带关键点)YOLO5Face C++](https://blog.csdn.net/qq_29462849/article/details/122738829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值