1.通过回归问题解决分类问题:
https://zhuanlan.zhihu.com/p/32525231
记录一些重点:
上面的公式第一项:遍历所有的cell和所有的boundingbox,存在物体的单元格,并且最大的IOU的boundingbox负责预测这个物体的中心位置,所以系数设为1,其他的都为0. 同理长和宽也是,继续同理置信度也是还有就是类别也是。但是这里还有就是不包含物体的置信度,根据YOLOV2的实现不包含物体是通过IOU的是否超过阈值来决定的。
预测的时候,首先通过置信度进行筛选,然后不同的类别进行NMS。
2.损失函数是回归实现的关键
yolov1 虽然已经是16年的文章了,但是从代码学习的角度,这篇文章虽然简单,但是却告诉我们损失函数的设计的重要性,作者在损失函数层面做了很多的手脚,才能导致让一个如此简单的模型,往目标检测一步步走,网络框架本身并没有多大的突出,无非就是卷积网络,最后输出对应size的tensor。但是loss function的复现才能让我们真正了解了YOLOv1的核心部分。下面贴出目前看起来比较顺眼的复现文章。
Yolo算法将目标检测看成回归问题,所以采用的是均方差损失函数。通过这样的均方误差来调整参数,让参数学习得到最终合适的输出。总体来说就是先将标签转化为符合我们条件的格式比如7730,然后根据标签的7730对应的取寻找预测的数值,进行对应的计算:比如标签带有目标的那么就要计算最大box,如果标签不带有框那么对应的预测值就不计算这些。所以这就是回归的关键。
将标签转化为了对应的格式,然后让预测值回归接近我们想要的格式。
第一步:
找出包含目标和不含目标的网格 这个的话是符合上面的计算公式的也就是置信度是否为1或者0
含有目标的网格定位误差计算 这个话还要根据他们的IOU的大小来确定,也是符合上面的公式的
含有目标的box的confi