虽然仅对图像进行分类往往不令人满意,但是除了图像识别(image recognation )之外,还经常实现在正确识别多个对象的基础上对各个对象进行定位(object detection )。
文章目录对象位置边界框(Bounding box )标签(Label )的完全格式丢失值计算对象检测(Object detection )穷举法及其卷积表达式是边界框预测交叉比(即实现缩放的锚定框YOLO算法的基本原理在训练环比赛中取消了不精确的边界框Bounding box
对象在图像中的位置可以用边界框表示,每个边界框用四个数字表示:
b x b_x bx :表示边界框的中心在画面内的横坐标b y b_y by :表示边界框的中心在画面内的纵坐标b h b_h bh :表示边界框的高度b w b_w bw :表示边界框的宽度
在“标签”(Label )的完全格式化、简单的分类任务中,标签往往只是由几个one-hot类别组成的标签。 添加对象的位置信息时,每次添加边界框时都会添加五个参数。 确定边界框是否可见的参数,以及四个边界框参数(b x b_x bx、b y b_y by、b h b_h bh和b w b_w bw ) )。
损耗值的计算是判断等级的第一个数是否识别对象,因此如果没有对象,只要第一个数为0,则标签内的其他数可以是任意数。 那么,如果p=0,则损失值必须只计算“识别数”p的损失值,如果p=1,则必须全部计算。
对象检测(Object detection )穷举法及其卷积方法的实现简单来说,就是用不同大小的滑动箱检测一次,直到图像内的各个角落。 很明显,卷积计算本身在图像中的不同位置浓缩信息,用卷积方法实现穷举更为自然。
用卷积法实现边界线预测的穷举法,只能判断图像中对象的大致位置,不能正确求出与对象对应的边界线。
YOLO算法是指将卷积方法实现的穷举法与边界框技术相结合,将边界框信息存储在卷积方法得到的大致位置。
在YOLO算法中,b x b_x bx、b y b_y by、
b h b_h bh、 b w b_w bw不再是绝对大小,而是相对于卷积输入框的相对大小。其中, b x b_x bx、 b y b_y by一定小于1,因为边界框的中心位置一定在卷积输入框之内,而 b h b_h bh、 b w b_w bw不一定小于1,因为边界框有时比卷积输入框大。交并比(Intersection Over Union)
预测边界框和实际边界框的交集与并集之比用来评判一个预测边界框的准确度。
YOLO算法算大体位置时分的大格子(grid cell)时如果分得很小,经常会出现邻近的几个大格子预测到同一对象,生成了一大堆预测边界框,显然我们想留下最准的那个,又希望临近但是不同目标的边界框被保留:
去掉所有可能性低于0.6的预测边界框,它们太菜了历遍所有剩下的预测边界框: 找到可能性最高的那个预测边界框上擂台所有跟擂主靠得近(交并比 > 0.5)的都上擂台挨揍(被丢弃)对其他预测边界框重复以上操作历遍结束后剩下的各个擂主就是每个对象对应的最准预测边界框。
锚框(Anchor box)如果一个大格子里有多个对象,就要对应多个边界框,把包含多个边界框的算法叫锚框。如果本来标签的大小是3x3x8,那么包含2个边界框的标签的大小就是3x3x16或3x3x2x8。
训练输出是图中每个大格子里各个对象的边界框信息和分类信息,可以说打标过程就有点费时费力,更别说用上Anchor box的情况。(这里以每个anchor box带两个边界框为例)