代码:YOLOV1
细节与问题:
1. 标数据时如果一个gird中有obj则把B个坐标信息都赋为这个obj的坐标信息
2. 训练时出现NAN,一般这种情况有2种可能:第一,出现除0或者log 0运算,第二,梯度爆炸,经过排查发现是梯度爆炸问题,需要加上梯度裁剪操作。
3. 如果一个grib内有obj则confidence也就是IOU为1,没有则IOU为0
4. 每一个grid预测的概率都是条件概率p(
ci
| obj)
5. 其他细节可参考论文YOLO
YOLO的缺陷:由于只预测98个bbox,并且没一个grid只预测一类所以对于小目标和密集目标的预测不好,
并且损失函数中w和h的损失对于大目标和小目标是一致的,但是大目标更能容忍w和h的误差而小目标更不能容忍w和h的误差,两者应该区别对待,作者论文中对于w和h的损失计算是开方之后的平方和,从梯度下降的方向看相当于放大了w和h的梯度因为
w−−√
的梯度是
12w√
而w和h是小于1的,从损失函数来说模型更关注w和h因为对于小目标来说更不能容忍w和h的误差