YOLO v5获取目标的坐标位置,以及将crop融合到全黑背景中

可能很多人不知道我这个标题后面这句话的含义,因为这个场景可能很多地方压根用不到,暂时不细说

我是上个月开始接触yolov5 v6.2版本做目标识别的,也没有什么深度学习和pytorch的概念,直接下载了源码然后开始搜操作的教程,一路走路超级艰难,但是现在对我自己的任务有一点小苗头了

言归正传,首先,获取坐标,我前期也看了很多大佬的教程,比如更改detect的代码,通过训练结果的xyxy数据来获取目标的准确坐标,效果有,但是和源码自带的crop的位置有所差异。(通过修改以下代码可以打开存储crop的开关:detect文件末尾的参数位置的--save crop,设置为True)

可以发现yolo保存的截图比我们下面代码方法的区域要大很多。

 parser.add_argument('--save-crop', action='store_true', default=True, help='save cropped prediction boxes')

查看源码,找到utils包里面的plots.py,里面记录了对img的处理,比如画框等等,对于crop的位置便是在这里的save_one_box中显示的,他首先获取一系列数据,然后通过crop等于XXXXXXX这第518行代码来得到位置,同时如果save为True便保存在exps下面的文件夹中。

这里我的做法是新写一个函数,然后直接复制save_one_box的全部内容,参数去掉filepath,利用x1,x2,y1,y2来返回坐标信息,同时返回截图。

再然后在下图中第二个红框下

if save_crop前,插入一个代码

便可以得到crop截图以及位置信息,后面我们可以对它这些信息进行打印,也可以进行其他的操作,比如我这里是进行了一个输出打印加上一个高斯映射操作

对于我后面的将crop融入到黑色蒙版中,则面向的对象可能比较少,但是我是其中之一,首先要建立和原图一样大的黑色蒙版。位置在detect.py中的加载完数据后的热身推理步骤里面,如下,这里我加了两个mask,im0s是我们的原图,而前面那个im是resize后的图像,因为传入网络的图像需要进行resize和转换tensor嘛

下一步就和上面的返回的位置有关,直接将im0的位置图像移植到全黑蒙版中,这里的im0是im0s的一个copy

值得注意的是,上图中239行以及下面的两行,我上面也写了注释,else后面的mask1是同等大小的未被处理过的全黑蒙版,mask则是被添加过crop的蒙版,在源码中并不存在这个else,需要单独添加

最终我们运行就可以得到这样的结果:我的某一个目标就达成了

我自己读了一遍我这篇博客,发现狗屁不通,很难懂的,其中一个原因是我只是想自己记录以下,第二个原因是源码已经被我改的面目全非了真的没办法说哪一行哪一行在哪了,之前逐句的读代码的时候加了很多注释,和原版的超别超级大,望理解。

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值