关于yolov5后处理细节

近日做项目遇到yolov5后处理操作,有点记不太清楚,所以想记录下来,方便后期复习。

我们都知道,yolov5模型的输入三个feature map的集合,加上batch的维度,也就是三维张量,即[batch,(p3*p3+p4*p4+p5*p5)*3,4+conf+cls_num],模型输出的为相对于调整图片的xywh,然后后面就要进入后处理阶段。

后处理采用了两次阈值筛选,然后送入了nms处理。

 

两次筛选都用的是conf_thres,只有nms求IOU的时候采用的iou_thresh.

 首先,通过tensor的性质提取classes numbers,筛选出大于confience socre的box,得到的xc为bool,并采用assert进行阈值界限设置。

 第一个for循环于图片数量的单张预测,即提取张量[(p3*p3+p4*p4+p5*p5)*3,5+cls_nums],取出大于阈值的box, 如果有labels将labels加入到筛选的box后边,如果没有box,就继续下一张图片。

然后计算class confidence。

这段代码开始是将xywh转化为xyxy(相对于resize图像),后面是mutil labels和single label的处理。

如果是mutil labels, 筛选出大于阈值的box,nonzero()得到位置索引[[i-n,j-n],[i,j],[i+n,j+n]...],利用转置得到i,j,分别表示第i个框,第j个类别。最后x保留为6维,分别是,xyxy,conf,cls,其中的conf 为类别置信度。single label 只保留类别置信度最大的置信度就可以了。

参数 classes为需要筛选掉的类别,不得不说大神对于pytorch的熟练,一行代码全解决。

 然后对boxes进行降序排序,并利用max_nms保留nms的最大数量,但是没看懂为什么要在坐标值上加个最大像素值然后进行nms,感觉加不加都一样。。。。sorces为类别置信度得分。然后送入到标准的nms接口进行nms处理。

2023.11.23更新

至于为什么要在坐标值上加上个最大像素再进行nms,这里再更新一下,这是因为在做nms时是对每一个类别进行nms,对于不同的类别通过加上不同的值,使得不同类别的相互重叠的框分离开,使得每个类别在进行nms时互相不受影响。

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
yolov5后处理包括解码和筛选两个主要步骤。首先,通过使用核函数对yolov5的输出结果进行解码,将输出的tensor(n x 85)恢复成框的坐标和类别信息。其中,85是cx, cy, width, height, objness, classification*80。\[1\]解码后的结果是相对于调整图片的xywh坐标。 接下来,进行筛选的过程。首先,对每张图片进行单独的预测,提取出张量\[(p3*p3+p4*p4+p5*p5)*3, 5+cls_nums\]。然后,从这个张量中筛选出大于阈值的框。如果有标签信息,将标签信息添加到筛选的框后面。如果没有框,就继续处理下一张图片。\[3\] 总结起来,yolov5后处理包括解码和筛选两个步骤。解码将输出的tensor恢复成框的坐标和类别信息,而筛选则是根据阈值对框进行筛选,并将标签信息添加到筛选的框后面。\[1\]\[3\] #### 引用[.reference_title] - *1* [Yolov5后处理代码 | cpu部分](https://blog.csdn.net/weixin_43236007/article/details/128390593)[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^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [关于yolov5后处理细节](https://blog.csdn.net/weixin_43088933/article/details/124195863)[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^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值