YOLOv5实现目标计数

本文主要讲解如何使用YOLOv5实现目标计数。

在detect.py文件中这部分内容替换为下面代码:

# Write results+计数
count = 1
for *xyxy, conf, cls in reversed(det):
    if save_txt:  # Write to file
        xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist()  # normalized xywh
        line = (cls, *xywh, conf) if opt.save_conf else (cls, *xywh)  # label format
        with open(txt_path + '.txt', 'a') as f:
            f.write(('%g ' * len(line)).rstrip() % line + '\n')

    if save_img or view_img:  # Add bbox to image
        c = int(cls)# integer class分类数
        label = '%s %.2f  num: %d' % (names[int(cls)], conf, count)
        plot_one_box(xyxy, im0, label=label, color=colors[int(cls)], line_thickness=3)
        count += 1

原理比较简单,就是计算锚框数量,每打印一个框count计数+1(但是值得一提的是,这种方法是不区分类别的,后续我想办法按照类进行计数)。其中label变量记录需要展示的变量,原来是“标签名称+置信度”,修改之后展示的是“标签名称+置信度+计数”。如果还需要展示其它变量继续修改label即可。

效果还行

yolov5-6.x版本和5.0略有差异,但原理相同,只要在detect.py文件进行以上修改即可在标签label中显示计数。加了“!!!”的地方就是要改的地方。

# Write results
count = 1 # !!!初始计数count=1
for *xyxy, conf, cls in reversed(det):
#...
#这里省略若干行代码
#...
    if save_img or save_crop or view_img:  
        c = int(cls)  # 分类数
        label = None if hide_labels else (names[c] if hide_conf else f'{names[c]} {conf:.2f} {count}') # TODO 标签展示这里加了末尾的{count}
        annotator.box_label(xyxy, label, color=colors(c, True))
        count += 1 # !!! 这里加了循环累加

求学路上,你我共勉(๑•̀ㅂ•́)و✧

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值