边框回归

边框回归

边框回归是什么?

对于窗口一般使用四维向量(x,y,w,h)来表示,分别表示窗口的中心点坐标和宽高。对于图2,红色的框P代表原始的Proposal,绿色的框 G 代表目标的 Ground Truth, 我们的目标是寻找一种关系使得输入原始的窗口 P 经过映射得到一个跟真实窗口 G 更接近的回归窗口
在这里插入图片描述
在这里插入图片描述
边框回归怎么做?
在这里插入图片描述
线性回归就是给定输入的特征向量X,学习一组参数W,使得经过线性回归后的值跟真实值非常接近,即 Y ≈ WX 。那么 Bounding-box中我们的输入以及输出分别是什么呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为什么宽高尺寸会涉及这种形式?

解释设计的tx, ty为什么除以宽高, 为什么tw,th会有log形式。
首先CNN具有尺度不变性。
在这里插入图片描述
x,y 坐标除以宽高
在这里插入图片描述
宽高坐标Log形式
在这里插入图片描述
第一,(6, 7)两式对平移量除以宽和高的处理是为了做尺度归一化,因为大的box可能绝对偏移量会比小的box大,除以宽和高消除这种影响;第二,(8, 9)两式比值取对数是线性回归中的常见操作(参考对数线性回归),目的也是在一定程度上将数值的绝对变化转换为相对的变化。

为什么IoU较大,认为是线性变换?
在这里插入图片描述

### YOLOv5s 边框回归实现原理 YOLOv5s中的边框回归机制旨在提高模型对于物体位置预测的准确性。传统方法如原始IoU损失和GIoU损失存在一定的局限性,无法完全满足复杂场景下高精度定位的需求[^2]。 为了克服这些不足之处,YOLOv5引入了一种新的边界框回归策略——CIoU(Complete Intersection over Union),该度量不仅考虑了两个矩形之间的重叠面积比例,还加入了中心点距离以及宽高中心化程度的影响因子,从而使得优化过程更加合理有效。 具体来说,在YOLOv5中,边框坐标\(b_x, b_y\)通过Sigmoid函数映射到0~1区间内再偏移至网格单元格的位置;而宽度高度则基于预设先验框尺寸经过指数变换得到最终预测值: \[ \begin{aligned} b_{x} &= \sigma(t_{x}) + c_{x}\\ b_{y} &= \sigma(t_{y}) + c_{y}\\ b_{w} &= p_{w}e^{t_{w}}\\ b_{h} &= p_{h}e^{t_{h}} \end{aligned} \] 其中,\(c_x,c_y\)表示当前grid cell左上角相对于图像原点的坐标;\(p_w,p_h\)代表预先设定好的anchor box大小;\(t_x,t_y,t_w,t_h\)是由网络输出并用于调整上述参数的具体数值[^4]。 ```python def get_bbox(pred, anchors): """ Convert model predictions to bounding boxes. Args: pred (Tensor): Model output tensor with shape [batch_size, num_anchors * grid_height * grid_width, 5 + classes]. anchors (list of tuples): List containing anchor dimensions. Returns: Tensor: Bounding box coordinates and confidence scores. """ batch_size = pred.shape[0] num_anchors = len(anchors) # Extract the center coordinate offsets from sigmoid function results cx = torch.sigmoid(pred[..., 0]) cy = torch.sigmoid(pred[..., 1]) pw = torch.tensor([a[0] for a in anchors]).view((1, num_anchors, 1)) ph = torch.tensor([a[1] for a in anchors]).view((1, num_anchors, 1)) tw = pred[..., 2] th = pred[..., 3] bw = pw * torch.exp(tw) bh = ph * torch.exp(th) return torch.stack([cx, cy, bw, bh], dim=-1).reshape(batch_size, -1, 4) ``` ### 常见问题解答 当应用YOLOv5进行目标检测时可能会遇到如下几个方面的问题: - **训练初期不稳定**:由于初始权重随机初始化可能导致某些样本难以收敛,建议采用更稳健的数据增强方式或加载预训练模型作为起点。 - **小目标检测效果差**:可以尝试增加多尺度输入或者调整特征金字塔结构来改善这一情况。 - **过拟合现象严重**:适当减少学习率、加入正则项约束以及扩大数据集规模有助于缓解此状况。 - **推理速度慢**:针对部署环境特点做针对性优化比如量化感知训练、剪枝等手段可显著提升运行效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值