- 博客(12)
- 收藏
- 关注
原创 NMS(Ultralytics源码debug)
agnostic这个参数就是是否启用类别无关,如果是True,所有类别都置0,否则,所有类别都要乘max_wh,这个max_wh默认7680,我不理解的点在于,后面的框的计算如果加上这个7680,那框的位置不就改变了吗?这个classes从cfg文件传进来的,我之前不知道这个变量,自己在模型推理结果Result的对象里修改,今天debugNMS,才发现有这个参数,所以我决定,要把cfg里的参数都弄明白是什么意思。执行 “x = x[xc[xi]]” 这一句之前。返回了一个索引,保存结果并返回。
2024-08-29 17:29:33 685
原创 预刷数据脚本(适用于实例分割、目标检测)
标记数据是一件枯燥且累的事情,但是训练模型需要大量的数据,此时我们可以利用模型预刷一些数据,利用模型迭代数据,再利用数据迭代模型...ultralytics-main\ultralytics\cfg\default.yaml这里有一个标识位,save_txt,将这个标志位设为True,就会将检测到的目标的类别和位置信息保存为YOLO格式的信息(txt)。
2024-08-26 17:03:06 295
原创 调试YOLOv8 Segment head
yolov8的分割头采用的是yolact,在看这部分源码之前,我以为的实例分割任务应该就是目标检测加上语义分割(因为mask r-cnn就是这样做的),但是当我调试这部分代码时,发现并不是这样。
2024-08-23 12:16:36 1653
原创 YOLOv8检测头debug
yolov8用的是解耦头,将分类任务与框回归任务分开,除此之外,yolov8的样本分配策略使用了TAL,考虑了iou和score度量,使得两个任务之间有一定的交互,不过样本分配这部分的代码有点复杂,我们先debug过一遍检测头这部分的代码。
2024-08-21 19:42:39 376
原创 调试ConfusionMatrix
在写badcase可视化的时候,用到了混淆矩阵,需要清楚混淆矩阵的原理,于是又开始了debug...在debug的时候可以将batch设为1, 方便调试。
2024-08-21 15:22:04 1553
原创 二分查找法刷题心得
刚开始居然傻到这么去解题,真是被单纯的自己蠢笑了:还在想题干说的升序数组到底是什么意思,果然没有那么简单...这里是一个简单的解释::假设数组是升序排列的(从左到右递增)。middlemiddlemiddlerightmiddle - 1middle下面是一个实例,可以放到IDE去调试,理解起来就更加丝滑了~
2024-08-20 21:27:38 269
原创 不进行裁剪的mosaic方法(适用于实例分割、目标检测)
当我们不需要识别边缘的不完整object时,此时传统的mosaic增强就不适用了。但是我们又希望模型在一个batch中能够学习到更多的特征,所以重写了该方法。
2024-08-20 17:05:54 361
原创 利用混淆矩阵写badcase可视化
在实际做项目的时候,我们想找出一些错例、难例,对这些错例难例进行分析,使模型达到更好的效果。下面是在目标检测任务和分类任务进行badcase可视化的方法。
2024-08-20 10:35:39 374
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人