LUO77123

Results 43 comments of LUO77123

训练用的compute_loss_ota,测试用的修改compute_loss,都要改,还有plot,datasets,yolo等,工作量挺大的,有没有yolov7代码讲解的,想详细学习一下

> 你在cal_iou的输入是什么形状的呢? 我的代码有的地方用的是暴力穷举,开销挺大的。B和N太大了确实算不动。 大佬,代码基本没变,就是B,N太大了,目前我写了循环进去,以200为限,求解cal_iou,在concat拼接,另外发现一个bug,cal_iou计算iou时候,iou可能变成非常大的数,查找原因是,输入的box2(预测框)长=501,宽=0.0004,导致iou=4000多,这类框的iou最后直接替换成0。 大佬,毕业论文想引用你的iou计算文章,可以吗,还有就是后面GitHub上传yolov5或者yolov7旋转检测使用您的iou计算,想拉取一下链接,可以不。

> debug branch 大佬,我用的就是debug branch版本,主要是在使用simota,需要求iou矩阵,目标400多个,预测框5000多个,广播机制400就变成B,5000就变成了N,我只有循环拼接。我都一直降B,N大小,还是报错 ![image](https://user-images.githubusercontent.com/87272337/186104229-d99dce30-01e5-472f-8d41-ad37ae6bdfcd.png) 哪些中间值是可以删掉的喃,大佬

> 我其实不熟悉simota。我不知道你的IoU矩阵是不是真的需要梯度信息。如果不需要梯度,可以直接在**循环内部**计算IoU的地方取消梯度。这样应该就不爆显存了。 > > ``` > with torch.no_grad(): > # calculate IoU > # ... .... > ``` > > 如果需要400x5000的IoU矩阵还带梯度,我暂时想不到什么简单的解决方法。 谢谢大佬回复,我问问v7的作者需要更新梯度不,不需要我就with torch.no_grad():十分感谢

> 我其实不熟悉simota。我不知道你的IoU矩阵是不是真的需要梯度信息。如果不需要梯度,可以直接在**循环内部**计算IoU的地方取消梯度。这样应该就不爆显存了。 > > ``` > with torch.no_grad(): > # calculate IoU > # ... .... > ``` > > 如果需要400x5000的IoU矩阵还带梯度,我暂时想不到什么简单的解决方法。 大佬,您在计算riou的具体方法有吗,除了(1.计算预测框与GT框的面积;2.确定两个框交点区域的顶点有两种方法:一种是两个BBox的边的交点,另一种是BBox在另一个BBox内的角。如果顶点不存在,则 IoU 值为零。3.理论上,这些顶点形成一个凸包。为了计算这个凸包的面积,我们需要按逆时针(或顺时针)顺序对顶点进行排序。首先,计算这些顶点的中心点。然后,计算每个顶点与中心形成的旋转角度。最后,可以按旋转角度对顶点进行排序。4. 然后,通过将其划分为小的单个三角形来获得相交区域。5. 根据方程式计算 IoU 值),是否还有更具体一点喃,想引用到论文里

> 你在cal_iou的输入是什么形状的呢? 我的代码有的地方用的是暴力穷举,开销挺大的。B和N太大了确实算不动。 大佬,还有一个问题,您的代码中,所有计算iou代码中,每次计算的中间值我都删掉了,这样影响梯度反传吗,能这样操作吗,例如: ![image](https://user-images.githubusercontent.com/87272337/187122622-34a72e83-bbae-4d3b-96ae-3e7b95270e52.png) ![image](https://user-images.githubusercontent.com/87272337/187122679-77434a45-d213-4cd3-ab3c-b411e7895e6c.png) ![image](https://user-images.githubusercontent.com/87272337/187122713-b9adebfd-e93a-4bb4-a8fa-47c18bf54bf4.png)

> 这种循环拼接确实很消耗显存,因为必须保存之前所有梯度。我感觉OOM了是正常的。 关于这个bug:你这里使用的长宽比非常极端,我确实没有测试过这种情况。我建议你试试我debug branch上的另一个版本,并且在计算loss的时候强制使用torch.double数据类型。这样应该会稳定一些,但是开销也还要再大一点。 欢迎引用或者改写这个repo,都是没有限制的,因为我用的是MIT协议。 大佬,前面2个问题,这是第三个问题,您看到可以解答一下吗? 您代码求diou时候,用的enclosing_box 返回外接矩形的宽和高,与cv2.minAreaRect()函数计算并返回指定点集的最小区域边界斜矩形的宽高有什么不一样吗? ![image](https://user-images.githubusercontent.com/87272337/187382177-aac6a8a7-ce0b-43c1-95da-f64f5bff6ee1.png)

> 你还可以参看 项目 YOLOv5_OBB_KLD)/yolov5_obb ,这是根据胡凯旋作者的项目然后添加kld方法。我简单训练了16类,结果如[README.md](https://github.com/lx-cly/YOLOv5_OBB_KLD/tree/main/yolov5_obb#readme)所示。如果用这个新的项目训练,数据集的处理请参看[GetStart.md](https://github.com/lx-cly/YOLOv5_OBB_KLD/blob/main/yolov5_obb/docs/GetStart.md)。 希望能帮到您。 谢谢您的答复,

> > 你还可以参看 项目 YOLOv5_OBB_KLD)/yolov5_obb ,这是根据胡凯旋作者的项目然后添加kld方法。我简单训练了16类,结果如[README.md](https://github.com/lx-cly/YOLOv5_OBB_KLD/tree/main/yolov5_obb#readme)所示。如果用这个新的项目训练,数据集的处理请参看[GetStart.md](https://github.com/lx-cly/YOLOv5_OBB_KLD/blob/main/yolov5_obb/docs/GetStart.md)。 希望能帮到您。 > > 谢谢您的答复,我是按照参考您的代码,修改胡凯旋作者的项目,主要不同2处: 1.您的hyp.scratch.yaml没使用图像旋转数据增强(可能是加了随机旋转(-180,180)), 2.KLD_IoU选的是Min(KLD_tp , KLD_pt), 跑CSL时,40个epoch基本达到70%,现在20个才到15%,收敛慢,效果很差,我再改改

> 你还可以参看 项目 YOLOv5_OBB_KLD)/yolov5_obb ,这是根据胡凯旋作者的项目然后添加kld方法。我简单训练了16类,结果如[README.md](https://github.com/lx-cly/YOLOv5_OBB_KLD/tree/main/yolov5_obb#readme)所示。如果用这个新的项目训练,数据集的处理请参看[GetStart.md](https://github.com/lx-cly/YOLOv5_OBB_KLD/blob/main/yolov5_obb/docs/GetStart.md)。 希望能帮到您。 还有一个问题,在于test.py,调用non_max_suppression_en时候,angle_index = x[:, 5 + nc:] * 179,怎么不用sigmoid,即angle_index = x[:, 5 + nc:].sigmoid * 179?? 这样才能限制angle_index[0~180]喃