出发点:为什么不直接预测长度和比例使anchor更加方便? s c a l e = w ∗ h r a t i o = w h scale = \sqrt{w*h} \\ ratio = \sqrt{\frac{w}{h}} scale=w∗h ratio=hw
先来看结果,采用了yolo v1 作为基本网络,使用VOC2007+VOC2012作为数据集进行实验
原生yolov1ratioNet0-0.480220-0.462271-0.333321-0.2003520.15677420.03957230.32596730.15962740.36416140.21112850.43054350.22696460.44276560.21186570.49644170.25723380.50885980.2621390.53076290.273801100.544456100.282887很可惜我对于训练的可视化不太熟悉,没有及时保存,但是在训练的过程中,我发现使用ratioNet的loss在2左右,而原生yolov1则在2~3附近
并且这几天在实验室和其他人的交流中我发现一点,loss低并不代表mAP就高,在我的直觉上,这应该是一个十分自然的事情,loss包含了定位的损失,分类的损失,如果loss低那么自然而然(不知道这还能不能叫做自然而然),mAP就会相应的高,从这个角度上,我提出的想法是:
单单测试定位精度、分类精度人工查看预测的坐标与相应的groundtruth的比较是否系数、坐标转换正确以上三点是从这几个角度来想的:
mAP的计算是在IOU满足阈值的情况查看分类结果,那么mAP低可能就有两种原因引起,一种是检测框的IOU阈值过小,另一种分类框判断的类别是有限的。
第二点的看法其实不是从这个实验上的出来的,是在做HRSC2016数据集测试的时候,数据集由师兄提供,正确的数据集的一个目标应为[position classname difficult],而师兄可能在考虑到HRSC2016只有一个类别,把数据修改为了[position imagename difficult]这导致了代码中判断类别是否一致的出错,导致我的mAP始终为零。但上述查找代码是我先自行比对了预测框和真实框的坐标,发现其实很接近,按理说不会出现mAP为零的情况,于是进行排查发现了这一类问题。
在这个实验中,我对这一块排查时间最久,毕竟我进行修改的就是这一模块,改多错多,因此无限的进行排查,总的来说是这么几个心得
修改代码前,应把修改的地方记录,既方便排查也不会重复的去找几个工作我的想法不能work的原因,我觉得是提出的ratio包含除法,我觉得这是一个需要谨慎使用的操作,因为除法可能导致inf,nan的出现,在实验过程中没有进行排查,是在之后输出数据的时候才发现的在本次实验中,loss还是常见的L2损失,但是如果在之后涉及到了求导方式的改变,可能更需要注意吧这个实验大概做了一个礼拜吧,其实还有很多没做的东西,有兴趣的同学可以告诉我可以把实验补充上,或者把创新点在做的更有意思一点。
Ps. 读研不简单,能找到合适的工作就去吧,逐渐围城的时代安逸最重要了
提出一个idea(别人哪里不好,或者叠加别人的idea)实验(一定要记录做了啥!)分析(为什么work为什么不work)每一步都很关键吧,我觉得写下来自己也能长点记性,本来这么一个实验不需要一个礼拜的,还是走了挺多弯路的,
就这。
希望有更多的志同道合之人吧