使用YOLOv5检测大宽高比(细长目标)时无法检测问题的解决方法

在深度学习的工程中总会遇到许许多多的奇奇怪怪的问题,使人头大

        上周五Franpper在使用yolov5-5.0训练时就遇到了这么一个奇怪的问题:在训练过程中labels一直为0,表示没有读进去标签,虽然可以训练,但是是无效训练,因为网络也不知道目标在哪里,只能自由发挥了。

最开始Franppe在网络上寻找答案无果(怎么大家都没遇见过这种问题呀啊啊啊),之后问了几位博主,也和朋友们讨论了一下,大家都认为很玄学,觉得数据集有问题的可能性比较大,但是Franpper检查又检查,真的没发现数据集有什么问题,文件夹格式无问题、标注的.txt文件也无问题,但是也找不到什么其他原因,于是Franpper就只能重新标注数据,甚至将labelimg重新安装并标注数据然后训练,但是都没什么卵用(愁人

但是在标注过程中Franpper发现了一个有意思的现象:工程中需要识别的目标是位于整图下方的从最左边到最右边的细长条的信息框,当把目标全部框住时(即图中蓝色标注框)训练过程中无法加载labels,不能正常训练。但是把目标框选一半(即图中红色标注框)时,就可以正常训练了,所以Franpper觉得YOLOV5可能会对标注框进行宽高比的过滤,于是就边debug边寻找。

果然!!!在datasets.py中有一个box_candidates函数,它会对图像的label进行筛选,具体筛选条件请见下方注释


def box_candidates(box1, box2, wh_thr=2, ar_thr=20, area_thr=0.1, eps=1e-16):
    """
    用在random_perspective中 对透视变换后的图片label进行筛选
    去除被裁剪过小的框(面积小于裁剪前的area_thr) 还有长和宽必须大于wh_thr个像素,且长宽比范围在(1/ar_thr, ar_thr)之间的限制
    Compute candidate boxes: box1 before augment, box2 after augment, wh_thr (pixels), aspect_ratio_thr, area_ratio
    :params box1: [4, n]
    :params box2: [4, n]
    :params wh_thr: 筛选条件 宽高阈值
    :params ar_thr: 筛选条件 宽高比、高宽比最大值阈值
    :params area_thr: 筛选条件 面积阈值
    :params eps: 1e-16 接近0的数 防止分母为0
    :return i: 筛选结果 [n] 全是True或False   使用比如: box1[i]即可得到i中所有等于True的矩形框 False的矩形框全部删除
    """
    w1, h1 = box1[2] - box1[0], box1[3] - box1[1]  # 求出所有box1矩形框的宽和高  [n] [n]
    w2, h2 = box2[2] - box2[0], box2[3] - box2[1]  # 求出所有box2矩形框的宽和高  [n] [n]
    ar = np.maximum(w2 / (h2 + eps), h2 / (w2 + eps))  # 求出所有box2矩形框的宽高比和高宽比的较大者  [n, 1]
    # 筛选条件: 增强后w、h要大于2   增强后图像与增强前图像面积比值大于area_thr   宽高比大于ar_thr
    return (w2 > wh_thr) & (h2 > wh_thr) & (w2 * h2 / (w1 * h1 + eps) > area_thr) & (ar < ar_thr)  # candidates

默认的宽高比、高宽比最大阈值是20,但是实际工程中的宽高比肯定远远超过了20,于是Franpper将ar_thr设置为了50,然后重新开始训练。

见证奇迹的时候到了!!!   

终于可以正常训练了!!!训练结果也非常喜人!!!

肺部影响检测的研究发展: 随着医学技术的不断发展,肺部影响检测的研究也在不断进步。传统的肺部影响检测方法主要包括X线胸片、CT扫描、支气管镜检查等,这些方法虽然可以帮助医生发现肺部影响,但存在辐射大、费用高、检测间长等问题。 近年来,随着计算机技术的发展,肺部影响检测的新方法也逐渐出现,如基于深度学习的自动化肺部疾病诊断系统、肺部X线图像分析技术、肺部CT图像分析技术等。这些新技术在提高检测精度的同,也减少了患者的辐射暴露和检测费用,大大提高了肺部影响检测的效率和准确性。 传统的肺部影响检测的研究方法: 1. X线胸片:通过拍摄患者的胸部X线照片来检查肺部是否有异常。这种方法简单、快捷,但不能确定病变的具体位置和范围。 2. CT扫描:通过使用计算机断层扫描技术来生成肺部的三维图像,可以更准确地检测肺部影响。但是,这种方法辐射剂量较高,费用也比较昂贵。 3. 支气管镜检查:通过将一根细长的镜子插入患者的气管,进而观察肺部病变的具体情况。这种方法可以直接观察到肺部病变的位置和范围,但是需要进行局部麻醉,对患者不太舒适。 综上所述,传统的肺部影响检测方法虽然在一定程度上可以检测肺部影响,但存在一些不足之处。随着新技术的不断发展,肺部影响检测的准确性和效率将会得到进一步提高。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Franpper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值