目标定位
目标检测的任务是在图片中定位物体,并将位置标注出来
标记四类存在与否,定位需要定位目标中心坐标(b_x, b_y)以及图片的高度(b_h)和宽度(b_w)
输出可以定义为以下形式:
y_hat 为softmax 的输出,为八个元素
第一个元素 P_c 表示是否有物体(1/0)
接下来四个元素定位目标(b_x, b_y, b_h, b_w),
最后三个元素表示是否是行人(c1:1/0),是否是汽车(c2:1/0)是否是摩托(c3:1/0)
损失函数
如果 P_c = 1 表示有目标出现,则 Loos = 8个元素各自的差的平方之和
如果 P_c = 0 表示没有目标出现,则 Loos = P_c的差的平方
因此,对于M个特征点来说,输出要有2m+1个元素,第一个代表是否出现该目标,其余每2个元素表示一个特征点的 x坐标和 y 坐标。
目标检测
1.滑动窗口法:
首先选定一个特定大小的窗口,将窗口内的图片输入到模型中进行预测;以固定步幅滑动该窗口,遍历图像的每个区域,对窗内的各个小图不断输入模型进行预测;继续选取一个更大的窗口,再次遍历图像的每个区域,对区域内是否有车进行预测;遍历整个图像,可以保证在每个位置都能检测到是否有车。
卷积的滑动窗口实现:
利用类似卷积核的原理实现滑动窗口,采用和单个窗口同样的各层的卷积核来操作图片,可以一次性将所有滑动窗口的结果计算出来
2. YOLO 算法:
将图片分割成n×n个小的图片
在图像的n×n个格子中分别应用图片分类和定位算法
卷积核方式一次计算出所有格子的结果, 计算效率较高
每个格子的输出为8个元素(P_c, b_x, b_y, b_h, b_w, c1, c2, c3),则所有格子的结果为 nxnx8
对于每个网格,以左上角为(0,0),以右下角为(1,1);
中点b_x、b_y 表示坐标值,在0~1之间;
宽高b_h、b_w 表示比例值,存在>1的情况。
交并比(IOU):交集大小/并集大小,用来检测预测边界框的准确性。
多个格子都认为自己是中心,检测到了一辆车,那么同一辆车就可能被检出多次,非最大值抑制可以确保我们的算法对每个对象只检测一次。(预测的形状面积重合多的认为是重复的,只保留概率最高的那个)
以单个对象检测为例。对于图片每个网格预测输出矩阵:yi=[P_c, b_x, b_h, b_w],其中P_c表示有对象的概率,抛弃P_c <= 0.6的边界框。对剩余的边界框,选取最大Pc值的边界框,作为预测输出边界框;抛弃和选取的边界框IoU⩾0.5的剩余的边界框。
3. Anchor Boxes 算法:
使用Anchor Box可以让一个检测出多个对象。每个对象都和以前一样分配到同一个格子里面,但是现在还要分配到一个Anchor Box,分配的原则是比较并选择该格子内对象与定义的Anchor Box不同形状之间的IOU交并比最高的那个。
优点:1.处理两个不同类型的对象出现在同一格子里面,实际情况中如果格子够细致的话,一般不会出现两个格子在一个对象里面的。2.能够让算法更有针对行(监督学习),如果你的数据给出的对象的形状大概相似。
网友评论